Linux:移植ffmpeg到ARM板(含x264编译步骤)
1、ffmpeg简介
ffmpeg(Fast Forward Mpeg)的介绍可以参考,里面有比较全面以及专业的描述,主要功能大约可以总结为以下几点:
2、编译
ffmpeg中已有H.264的解码,但没有编码,所以需要先编译libx264,它是自由的H.264编码库,是x264项目的一部分。
2.1 编译x264
源码下载:
编译步骤:
tar xjvf x264-snapshot-20180619-2245-stable.tar.bz2 cd x264-snapshot-20180619-2245-stable/ ./configure --host=arm-linux-gnueabihf --prefix=$PWD/tmp --enable-shared --disable-asm vi config.mak # 修改内容以支持交叉编译 CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-gcc -o AR=arm-linux-gnueabihf-gcc-ar rc RANLIB=arm-linux-gnueabihf-gcc-ranlib STRIP=arm-linux-gnueabihf-strip make && make install tree tmp/ # 生成了bin/include/lib三个文件夹及其内容 tmp/ ├── bin │ └── x264 ├── include │ ├── x264_config.h │ └── x264.h └── lib ├── libx264.so -> libx264.so.152 ├── libx264.so.152 └── pkgconfig └── x264.pc
2.2 编译ffmpeg
源码下载:
编译步骤:
tar xjvf ffmpeg-3.4.5.tar.bz2 cd ffmpeg-3.4.5/ ./configure --enable-cross-compile --cross-prefix=arm-linux-gnueabihf- --arch=arm --target-os=linux --cc=arm-linux-gnueabihf-gcc --prefix=$PWD/tmp --enable-shared --enable-pic --disable-static --enable-gpl --enable-nonfree --enable-pthreads --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-stripping --enable-libx264 --extra-cflags=-I$PWD/../x264-snapshot-20180619-2245-stable/tmp/include --extra-ldflags=-L$PWD/../x264-snapshot-20180619-2245-stable/tmp/lib make && make install ls -l tmp/ # 生成了bin/include/lib/share四个文件夹及其内容
./configure参数说明可以参考:
注:./configure时提示“arm-linux-xxx-pkg-config not found”不影响后续使用。
3、使用示例
本例使用了USB摄像头作为测试,支持640x480、320x240多种分辨率,在系统中的节点为/dev/video0,则使用320x240分辨率的测试命令如下:
ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 /mnt/test.avi
