原创 Qt編寫全能播放組件(支持ffmpeg2/3/4/5/6/Qt4/5/6)

一、前言 從代碼層面以及自由度來說,用ffmpeg來寫全能播放組件是最佳方案(跨平臺最好最多、編解碼能力最強),儘管已經有優秀的vlc/mpv等方案可以直接用,但是vlc/mpv對標主要是播放器應用層面,其他層面比如視頻監控行業領域就比較雞

原创 Qt編寫視頻監控系統78-視頻推流到流媒體服務器

一、前言 視頻推流作爲獨立的模塊,目前並沒有集成到視頻監控系統中,目前是可以搭配監控系統一起使用,一般是將添加好的攝像頭通道視頻流地址打開後,讀取視頻流重新推到流媒體服務器,然後第三方可以從流媒體服務器拉取視頻流地址,相當於訂閱分發,可以多

原创 Qt編寫視頻監控系統76-Onvif跨網段組播搜索和單播搜索的實現

一、前言 在視頻監控行業一般會用國際onvif工具來測試設備是否支持onvif協議,工具的名字叫ONVIF Device Manager(還有個工具叫ONVIF Device Test Tool,專用於程序員測試各種數據交互),可以自行搜索

原创 Qt編寫視頻監控系統75-計算實時碼率並顯示

一、前言 做監控攝像頭的實時視頻顯示,一般還會要求統計實時碼率顯示在通道畫面上,一個是爲了測試下整個軟件的性能,同時也看下當前到底是主碼流還是子碼流,設備到底是不是真的按照設定的碼流大小來傳輸視頻數據的。視頻碼率就是數據傳輸時單位時間傳送的

原创 Qt推流程序(視頻文件/視頻流/攝像頭/桌面轉成流媒體rtmp+hls+webrtc)可在網頁和播放器遠程觀看

一、前言說明 推流直播就是把採集階段封包好的內容傳輸到服務器的過程。其實就是將現場的視頻信號從手機端,電腦端,攝影機端打包傳到服務器的過程。“推流”對網絡要求比較高,如果網絡不穩定,直播效果就會很差,觀衆觀看直播時就會發生卡頓等現象,觀看體

原创 Qt音視頻開發45-音視頻類結構體參數的設計

一、前言 視頻監控內核組件重構和完善花了一年多時間,整個組件個人認爲設計的最好的部分就是各種結構體參數的設計,而且分門別類,有枚舉值,也有窗體相關的結構體參數,解碼相關的結構體參數,同時將部分常用的結構體參數的獲取和設置單獨提供了函數,參閱

原创 Qt音視頻開發43-採集屏幕桌面並推流(支持分辨率/矩形區域/幀率等設置/實時性極高)

一、前言 採集電腦屏幕桌面並推流一般是用來做共享桌面、遠程協助、投屏之類的應用,最簡單入門的做法可能會採用開個定時器或者線程抓圖,將整個屏幕截圖下來,然後將圖片傳出去,這種方式很簡單但是性能要低不少,一般採用ffmpeg來做桌面推流的居多,

原创 Qt音視頻開發42-網絡推流(視頻推流/本地攝像頭推流/桌面推流/網絡攝像頭轉發推流等)

一、前言 上次實現的文件推流,儘管優點很多,但是隻能對現在存在的生成好的音視頻文件推流,而現在更多的場景是需要將實時的視頻流重新推流分發,用戶在很多設備比如手機/平板/網頁/電腦/服務器上觀看,這樣就可以很方便的將分散的視頻流統一集中的流媒

原创 Qt音視頻開發40-ffmpeg採集桌面並錄製

一、前言 之前用ffmpeg打通了各種視頻文件和視頻流以及本地攝像頭設備的採集,近期有個客戶需求要求將整個桌面屏幕採集下來,並可以錄製保存成MP4文件,以前也遇到過類似的需求,由於沒有搞過,也沒有精力去摸索和測試,所以也就一直耽擱着,近期剛

原创 Qt編寫網絡攝像頭推流(4路1080P主碼流只佔用0.2%CPU/極低延時極速響應)

一、前言說明 將從網絡攝像頭拉流過來的視頻流重新推流出去,是目前一個很常規的做法,尤其是推流到流媒體服務中心,這樣流媒體服務中心就把散落在各個區域的監控攝像頭集中起來統一管理,同時提供對外一致的訪問接口。很多時候不僅僅是幾個攝像頭,很可能是

原创 Qt編寫推流綜合應用示例(文件推流/桌面推流/本地攝像頭/網絡攝像頭/轉發推流/視頻分發)

一、功能特點 1.1 文件推流 指定網卡和監聽端口,接收網絡請求推送音視頻等各種文件。 實時統計顯示每個文件對應的訪問數量、總訪問數量、不同IP地址訪問數量。 可指定多種模式,0-直接播放、1-下載播放。 實時打印顯示各種收發請求和應答數

原创 Qt音視頻開發39-海康sdk回調拿到數據GPU繪製的實現

一、前言 採用海康的sdk做開發,最簡單最容易的方式就是傳入句柄(windows和linux都支持/很多人以爲只有windows才支持)即可,這種方式不用自己處理繪製,全部交給了sdk去處理,所以cpu的佔用是最低的;還有一種方式是回調函數

原创 Qt音視頻開發38-ffmpeg視頻暫停錄製的設計

一、前言 基本上各種播放器提供的錄製視頻接口,都是隻有開始錄製和結束錄製兩個,當然一般用的最多的也是這兩個接口,但是實際使用過程中,還有一種可能需要中途暫停錄製,暫停以後再次繼續錄製,將中間部分視頻不需要錄製,跳過這部分不需要的視頻,而且錄

原创 Qt音視頻開發37-識別鼠標按下像素座標

一、前言 在和視頻交互過程中,用戶一般需要在顯示視頻的通道上點擊對應的區域,彈出對應的操作按鈕,將當前點擊的區域或者繪製的多邊形區域座標或者座標點集合,發送出去,通知其他設備進行處理。比如識別到很多人臉,用戶單擊某個人臉後指定對該人臉進行詳

原创 Qt音視頻開發35-左右通道音量計算和音量不同範圍值的轉換

一、前言 視頻文件一般會有兩個聲音通道及左右聲道,值有時候一樣有時候不一樣,很多場景下我們需要對其分開計算不同的音量值,在QAudioFormat中可以獲取具體有幾個通道,如果是一個通道,則左右通道值設定一樣,計算通道的音量值一般是對所有音