嵌入式Qt-交叉編譯FFmpeg與視頻播放測試
1 交叉編譯FFmpeg
FFmpeg需要用到x264庫,需要先編譯這個(gè)庫。
1.1 編譯x264
官網(wǎng)http://www.videolan.org/developers/x264.html下載x264的源碼
然后解壓,并進(jìn)行配置
#解壓
tar -xvf x264-master.tar.bz2
#進(jìn)入源碼目錄, 進(jìn)行配置
一些參數(shù)說明:
--host=arm-linux-gnueabihf :指定交叉編譯鏈
--enable-shared :允許共享
--disable-asm:跳過匯編
--prefix=$PWD/_install:指定編譯后存放路徑(當(dāng)前目錄的install子目錄)

然后進(jìn)行編譯
make
make?install
查看文件夾_install,可以看到生成的bin、include、lib子目錄

1.2 編譯FFmpeg
然后編譯FFmpeg,官網(wǎng)下載地址:http://ffmpeg.org/download.html

同樣是進(jìn)行解壓
tar -xvf ffmpeg-snapshot.tar.bz2
進(jìn)入ffmpeg源碼目錄,修改Makefile,添加編譯選項(xiàng):CFLAGS += -fPIC

然后進(jìn)行配置
一些參數(shù)說明:
--cross-prefix=arm-linux-gnueabihf-:配置為自己的交叉編譯工具
--cc=arm-linux-gnueabihf-gcc:配置為自己的交叉編譯工具
--extra-cflags=-I/home/xxpcb/tools/ffmpeg/x264-master/_install/include:配置為剛才x264生成出來的include目錄
--extra-ldflags=-L/home/xxpcb/tools/ffmpeg/x264-master/_install/lib --extra-libs=-ldl:配置為剛才x264生成出來的lib目錄
我這里配置后報(bào)錯(cuò),如下:

嘗試將PKG_CONFIG_PATH變量進(jìn)行配置:
export PKG_CONFIG_PATH="/home/xxpcb/tools/ffmpeg/x264-master/_install/lib/pkgconfig"
實(shí)際測試無效,還是報(bào)錯(cuò):

參考這個(gè)帖子:
https://stackoverflow.com/questions/51918409/compiling-ffmpeg-x265-not-found-using-pkg-config/63661853
在配置項(xiàng)增加一條:
--pkg-config="pkg-config --static"
完整的配置項(xiàng)如下:
這次配置成功了:

然后進(jìn)行編譯
make
make install

查看文件夾_x264_install,可以看到生成的bin、include、lib、share子目錄

2 測試FFmpeg
2.1 編譯的庫拷貝到板子中
復(fù)制x264-master的lib目錄中的x264庫文庫到開發(fā)板的/usb/local/lib目錄

復(fù)制ffmpeg的lib目錄中的so庫文庫到開發(fā)板/usb/local/lib目錄

復(fù)制ffmpeg的bin目錄中的ffmpeg文庫到開發(fā)板/usb/local/bin目錄

我使用的是SSH的方式進(jìn)行復(fù)制的,具體命令如下:
SSH復(fù)制有點(diǎn)慢,可以嘗試其它復(fù)制方式。
2.2 視頻播放測試
先輸入ffmpeg,看下是否能找到這個(gè)程序,我這里有報(bào)錯(cuò),提示找不到對應(yīng)的庫(實(shí)際上是有這個(gè)庫的):

添加LD_LIBRARY_PATH變量,并導(dǎo)出
export LD_LIBRARY_PATH=/usr/local/lib
再次輸入ffmpeg,沒有報(bào)錯(cuò)了:

通過ffmpeg指令測試視頻播放
指令輸入后的打印如下:

這個(gè)是播放效果的截圖:
