交叉编译ffmpeg
项目背景:现在做一个远程监控系统 ,需要将网络摄头的RTSP数据转RTMP流,推送到rtmp服务器进行播放;查资料,ffmpeg可以抓取rtsp流,并进行相应的转换,得到rtmp流并推送到rtmp服务器。
- 一、获取源码
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
ffmpeg是开源项目,可以很方便的使用git工具获取到最新的源码,不懂git使用的自己找资料学习啦~
- 二、编译
1、配置
./configure --cross-prefix=arm-linux-gnueabihf- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-yasm --disable-stripping
得到结果 如下:
作为一名严谨的程序 员,眼里容不得warning,所以,按照提示,将–disable-yasm 改成–disable-x86asm,第一个(玩你)warning就会消失,第二个看你们自己的交叉编译工具有没有相应的pkg-config了,我自己用的arm-linux-gnueabihf-,是有这个工具的。所说忽略这个警告也是可以正常运行的,可以自行试一下。
2、编译和安装
make && make install
在编译过程中可能出现recompile with -fPIC的提示,修改ffbuild/config.mak,在CFLAGS行加上-PIC,然后make clean &&make &&make install即可。
等编译大致需要10分钟左右;(可能是我电脑 不好),在/usr/local/ffmpeg/下面就是交叉编译得到的目录了。