移植FFmpeg
有两种方法:
- 下载源码,手工编译
- 使用Buildroot,配置选择ffmpeg,直接编译生成映象文件
准备
- 开发板野火imx6ull
- USB免驱摄像头
- 交叉编译工具为arm-linux-gnueabihf
- debian文件系统
编译x264
x264 是一个免费的软件库和应用程序,用于将视频流编码为 H.264/MPEG-4 AVC压缩格式,
链接:http://www.videolan.org/developers/x264.html
或者
git clone https://code.videolan.org/videolan/x264.git
下载好文件后,创建编译目标文件
mkdir x264_install
进入x264文件,执行以下命令
./configure --prefix=/home/xfy/FFmpeg/x264_install --enable-shared --host=arm-none-linux-gnueabi --cross-prefix=arm-linux-gnueabihf- --disable-asm
参数说明:
–prefix=/home/xfy/FFmpeg/x264_install :指定编译后存放路径.
–host=arm-linux-gnueabihf :指定交叉编译链,用户需要修改为自己的交叉编译器
–cross-prefix=arm-linux-gnueabihf-:交叉编译链地址
–enable-shared :创建动态库
–disable-asm:跳过汇编
然后选择编译器,进行编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- install
查看x264_install文件夹
将x264_install 下的库文件/lib拷贝到开发板的/lib/目录下
编译 FFmpeg
下载地址:http://ffmpeg.org/download.html
或者
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
然后创建ffmpeg_install 编译的目标文件
进入文件夹,修改Makefile文件vi Makefile
在第39行:添加内容, 这是说明我们要进行编译动态文件库:
CFLAGS += -fPIC
配置编译选项,执行以下命令:
./configure --cross-prefix=arm-linux-gnueabihf- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --prefix=/home/xfy/FFmpeg/ffmpeg_install --enable-shared --disable-static --enable-gpl --enable-nonfree --disable-ffplay --enable-swscale --enable-pthreads --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-x86asm --disable-stripping --enable-libx264 --extra-cflags=-I/home/xfy/FFmpeg/x264_install/include --extra-ldflags=-L/home/xfy/FFmpeg/x264_install/lib --extra-libs=-ldl
–cross-prefix=arm-linux-gnueabihf- :配置为自己的交叉编译工具
–enable-cross-compile :允许使用交叉编译
–target-os=linux
–cc=arm-linux-gnueabihf-gcc :配置为自己的交叉编译工具
–arch=arm
–prefix=/home/xfy/FFmpeg/ffmpeg_install :你刚刚创建的编译目标文件
–enable-shared :编译动态库
–disable-static :不编译静态库
–enable-gpl :允许使用GPL(默认关闭)
–enable-nonfree
–disable-ffplay :禁用生成ffplay
–enable-swscale :启用计数器支持(默认关闭)
–enable-pthreads :用pthreads(多线程)(默认关闭)
–disable-armv5te :禁用armv5te
–disable-armv6
–disable-armv6t2
–disable-x86asm :跳过汇编阶段
–disable-stripping : 禁用剥离可执行程序和共享库
–enable-libx264 :启用H.264编码(默认关闭)
–extra-cflags=-I/home/xfy/FFmpeg/x264_install/include :x264编译成功的头文件
–extra-ldflags=-L/home/xfy/FFmpeg/x264_install/lib :x264编译成功的动态库文件
–extra-libs=-ldl:显式加载动态库的动态函数库
跟多参数可参考:https://www.cnblogs.com/azraelly/archive/2012/12/31/2840541.html
make
make install
编译需要等待的一段时间,编译完成后进行拷贝即可
将ffmpeg_install/lib 下的 so 库文件全部拷贝到开发板的/lib/目录下
开发板端:
sudo cp ./ffmpeg_install/lib/*so* /lib
将ffmpeg_install/bin/目录下的 ffmpeg 拷贝到开发板的/bin/目录下
开发板端:
sudo cp ./ffmpeg_install/bin/ffmpeg /bin
测试
在开发板上安装好ffmpeg后:
- 执行命令:
ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 /mnt/my.avi
- 它会把摄像头的数据录制为my.avi
- 把my.avi复制到PC机,播放