提示:buildroot支持ffmpeg和SDL,但博主的ffmpeg是按下面方法編譯通過,SDL使用buildroot直接編譯也通過;
1. 下載ffmpeg源碼
下載鏈接:https://github.com/FFmpeg/FFmpeg/tags
根據版本需要自行下載壓縮包,這里下載的是n4.4.5版本;
解壓:tar -xvf FFmpeg-n4.4.5.tar.gz;
解壓后得到FFmpeg-n4.4.5目錄,進去;
2. 配置交叉編譯器環境變量
# 使用export配置臨時環境變量
export PATH=$PATH:/home/forlinx/OK113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/host/bin/
# echo查看環境變量
echo $PATH
3. 編譯輸出動態庫文件
參考1(測試通過):https://blog.csdn.net/fangye945a/article/details/112882064
# 交叉編譯ffmpeg
./configure --cross-prefix=arm-linux-gnueabi- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabi-gcc --arch=arm --prefix=/home/forlinx/qtProject/FFmpeg-n4.4.5/output --enable-ffmpeg --disable-armv5te --disable-armv6 --disable-armv6t2 --enable-shared --extra-cflags="-fPIC" --extra-cxxflags="-fPIC"
make && make install # 運行完,編譯結果就會輸出到outpu目錄
如果編譯失敗,則make clean再編譯# 交叉編譯ffmpeg, 裁剪
./configure --cross-prefix=aarch64-linux-gnu- --enable-cross-compile --target-os=linux --cc=aarch64-linux-gnu-gcc --arch=arm64 --prefix=/home/disk/fangye/build_amba/ffmpeg_build/FFmpeg-n4.3.1_amba/output --disable-x86asm --enable-parsers --disable-decoders --enable-decoder=h264 --enable-decoder=aac --disable-encoders --disable-muxers --enable-muxer=mp4 --disable-demuxers --disable-protocols --enable-protocol=file --disable-filters --disable-bsfs --enable-ffmpeg參考2:https://blog.csdn.net/yyz_1987/article/details/131076072
# 交叉編譯lame,執行命令后沒得到輸出文件
./configure --host=arm-linux-gnueabihf --prefix=$(pwd)/output cc=arm-fsl-linux-gnueabi-gcc --disable-frontend
make && make install # 運行完,編譯結果就會輸出到outpu目錄# 交叉編譯x264, 執行命令后沒得到輸出文件
./configure --prefix=build --disable-asm --enable-shared --enable-static --host=arm-linux-gnueabi --cross-prefix=arm-linux-gnueabi-
make && make install # 運行完,編譯結果就會輸出到outpu目錄# 交叉編譯ffmpeg, 包含lame和x264
./configure --prefix=../arm-ffmpegbuild --enable-shared --enable-libmp3lame --enable-libx264 --enable-gpl --disable-asm --enable-version3 --cross-prefix=arm-fsl-linux-gnueabi- --target-os=linux --extra-cflags="-I ../lamebuild/include" --extra-ldflags="-L ../lamebuild/lib" --enable-cross-compile --enable-small --arch=arm --cpu=arm926ej-s --disable-everything --enable-decoder=h264 --enable-parser=h264 --enable-demuxer=rtsp --extra-ldflags="-L/root/test/ffmpeg/x264build/lib" --extra-cflags="-I ../x264build/include"
make && make install # 運行完,編譯結果就會輸出到outpu目錄
編譯后報錯:WARNING: arm-linux-gnueabi-pkg-config not found, library detection may fail.
直接安裝:sudo apt-get install pkg-config-arm-linux-gnueabi
編譯后沒生成動態庫,需要執行:make && make install
4. 驗證編譯后的ffmpeg
然后將output文件壓縮(注意開發板上的tar功能不全,解壓縮已知是支持-cvf的壓縮包):tar -cvf ffmpeg-output.tar.gz output/
然后在開發板解壓縮: tar -xvf ffmpeg-output.tar.gz
驗證編譯后的程序能不能運行,運行./output/bin/ffmpeg,報錯:
./ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory
設置庫文件的臨時環境變量:
export LD_LIBRARY_PATH=/usr/local/lib/
再次運行./output/bin/ffmpeg,會輸出版本信息;