天天看點

ffmpeg解碼RTSP/TCP視訊流H.264(QT界面顯示視訊畫面)

我用的ffmpeg版本為 ffmpeg-2.1.8.tar.bz2 

版本低了恐怕有些頭檔案和API找不到。 

在Linux下解壓後編譯,Linux下編譯很簡單,我這裡生成的動态庫: 

./configure –enable-shared 

make 

就能找到各個so動态庫檔案。 

移動位置後,記得手動連結 一下:

QT pro檔案中記得加入: 

INCLUDEPATH += ffmpeg/include 

// windows下用這幾個 

win32: LIBS += ffmpeg/lib/libavcodec.dll.a ffmpeg/lib/libavfilter.dll.a ffmpeg/lib/libavformat.dll.a ffmpeg/lib/libswscale.dll.a ffmpeg/lib/libavutil.dll.a 

// Linux下用這幾個 

LIBS += -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswscale -L./ffmpeg/so

我這裡對外提供三個接口:

裡面與ffmpeg解碼相關的私有變量:

在QT裡,用一個QLabel的對象來顯示解碼後的視訊畫面:

這裡用的QTimer來進行一幀幀資料的解碼,也可以用一個線程比如QThread來進行解碼:

備注: 

頭檔案包含及注意事項

啟發: 

setUrl(QString url); 

這裡的url 一般情況下是一個RTSP流的播放位址,如rtsp://192.168.1.123:554/stream1 

但也可以是一個TCP流。 

可直接解碼播放。

繼續閱讀