我用的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流。
可直接解碼播放。