提示: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,会输出版本信息;