在ARM-Linux下移植FFMPEG

版权声明:本文为 风筝 博主原创文章,未经博主允许不得转载!!!!!!谢谢合作 https://blog.csdn.net/Guet_Kite/article/details/80831333

你好!这里是风筝的博客,

欢迎和我一起交流。


FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证。它的移植同样遵循LGPL或GPL移植方法:configure、make、make insatll。

移植ffmpeg之前,我觉得还是先移植下x264比较好,等会会用到。
移植x264:
x264下载:http://download.videolan.org/pub/videolan/x264/snapshots/
这里我下载的是:x264-snapshot-20171212-2245.tar.bz2
解压:tar -xjf x264-snapshot-20171212-2245.tar.bz2
cd x264-snapshot-20171212-2245/
mkdir tmp
./configure –host=arm-linux –prefix=$PWD/tmp –enable-shared –disable-asm
注意,每个参数前面都是两个短的横杆,不知道为什么显示出来就是像一条长横杆一样……
会生成config.mak,然后修改config.mak文件,修改为:

CC=arm-linux-gcc
LD=arm-linux-gcc -o
AR=arm-linux-gcc-ar rc
RANLIB=arm-linux-gcc-ranlib

接着make
make install
这样就会在当前目录下的tmp目录下,就是我们的安装目录可以得到三个文件夹:bin/lib/include
把相应的库文件拷贝到arm板子上就ok。

接下来是移植ffmpeg:
ffmpeg下载地址:http://ffmpeg.org/releases/
这里我下载的是ffmpeg-3.4.1.tar.gz,我没有用最新的,就下了个17年底的。
解压:
tar -xzf ffmpeg-3.4.1.tar.gz
cd ffmpeg-3.4.1
mkdir tmp
./configure –cross-prefix=arm-linux- –enable-cross-compile –target-os=linux –cc=arm-linux-gcc –arch=arm –prefix=$PWD/tmp –enable-shared –disable-static –enable-gpl –enable-nonfree –enable-libx264 –enable-ffmpeg –disable-ffplay –enable-ffserver –enable-swscale –enable-pthreads –disable-armv5te –disable-armv6 –disable-armv6t2 –disable-stripping –extra-cflags=-I/work/system/nanopi/ffmpeg/x264-snapshot-20171212-2245/tmp/include –extra-ldflags=-L/work/system/nanopi/ffmpeg/x264-snapshot-20171212-2245/tmp/lib
注意,每个参数前面都是两个短的横杆,不知道为什么显示出来就是像一条长横杆一样……
这里的参数,简单说几个:
–prefix代表安装路径、
–cflags:ffmpeg第三方库头文件声明
–extra-ldflags:第三方库库文件路径、
然后发现一个warning:
WARNING: arm-linux-pkg-config not found, library detection may fail.
这个先不用管,
make
但是这样配置,make之后我发现一个问题:
LD libavutil/libavutil.so.55
/usr/local/arm/opt/FriendlyARM/toolschain/4.9.3/bin/../lib/gcc/arm-cortexa9-linux-gnueabihf/4.9.3/../../../../arm-cortexa9-linux-gnueabihf/bin/ld.bfd: libavutil/aes.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol’ can not be used when making a shared object; recompile with -fPIC

这里提示:LD libavutil/libavutil.so.55时出现问题,提示给了解决方案:
recompile with -fPIC
然后我就去修改Makefile了,去找LD命令……
结果搞了好久都搞不定。
最后求助大佬终于解决了,就是在 ./configure 修改:
–enable-pic
所以最后的 ./configure 修改为:
./configure –cross-prefix=arm-linux- –enable-cross-compile –target-os=linux –cc=arm-linux-gcc –arch=arm –prefix=$PWD/tmp –enable-shared –enable-pic –disable-static –enable-gpl –enable-nonfree –enable-libx264 –enable-ffmpeg –disable-ffplay –enable-ffserver –enable-swscale –enable-pthreads –disable-armv5te –disable-armv6 –disable-armv6t2 –disable-stripping –extra-cflags=-I/work/system/nanopi/ffmpeg/x264-snapshot-20171212-2245/tmp/include –extra-ldflags=-L/work/system/nanopi/ffmpeg/x264-snapshot-20171212-2245/tmp/lib
最后
make
make install
这样就会在当前目录下的tmp目录下,就是我们的安装目录了;

最后就 可以使用ffmpeg命令录制视频了:
ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 /mnt/tmp/test.avi
video4linux2 代表Linux下
/dev/video0代表摄像头设备
/mnt/tmp/test.avi代表输出路径

参考:https://blog.csdn.net/mashang123456789/article/details/8673426

猜你喜欢

转载自blog.csdn.net/Guet_Kite/article/details/80831333