Hisi3516交叉编译ffmpeg支持h264编码

前言

Hi3516是海思半导体针对高清IPCamera产品应用开发的一款专业高端SOC芯片,具有1080P@30fps H264多码流编码性能。而ffmpeg是众多播放器的底层解、编码库,x264是一套开源的视频编码函数库,是非常优秀的h264编码器。x264支持的封装格式有常见的MP4、MKV、F4V。工欲善其事必先利其器,有了强悍的芯片,我们必须配一把好刀----ffmpeg用来处理视频方面的业务。
ffmpeg源码传送门:http://www.ffmpeg.org/download.html
x264源码传送门:https://www.videolan.org/developers/x264.html

交叉编译

交叉编译就是在pc或者其他平台编译另外一个平台可执行程序的过程,这里不再介绍怎么安装交叉编译器。本次移植的ffmpeg版本是3.2.14。x264则下载最新源码即可。
Hisi3516交叉编译ffmpeg支持h264编码_第1张图片

1.编译x2654

解压源码,打开终端进入源码目录执行:

CC=arm-himix200-linux-gcc ./configure --prefix=/home/xxxx/work/Hi3516/bulid_libs/x264 --enable-static --enable-shared --host=arm-linux-gnueabi --cross-prefix=arm-himix200-linux- --disable-asm

配置成功后:
make
make install

2.编译ffmpeg

解压源码,并在源码目录新建脚本build_ffmpeg.sh,编辑脚本:

./configure \
--prefix=/home/xxxx/work/Hi3516/mklibs/bulid_libs/ffmpeg3.2 \
--disable-asm \
--enable-ffmpeg \
--disable-ffplay \
--enable-pthreads \
--enable-cross-compile \
--cross-prefix=arm-himix200-linux- \
--arch=arm \
--target-os=linux \
--host-os=linux \
--enable-gpl \
--enable-shared \
--enable-libx264 \
--extra-cflags=-I/home/xxxx/work/Hi3516/mklibs/bulid_libs/x264/include \
--extra-ldflags=-L/home/xxxx/work/Hi3516/mklibs/bulid_libs/x264/lib

这里简单的说明一下,
–disable-ffplay,要生成ffplay就需要先编译SDL,以便渲染视频。
–cross-prefix,是指定交叉编译的路径。
–enable-libx264,这里我们需要支持H264编码,所以要打开这个选项。
–extra-cflags 、–extra-ldflags,是指定x264的头文件路径和库文件路径

如果ffmpeg需要支持x265那么要指定pkgconfig的路径否则会报错,x264则可以通过指定目录来查找依赖。如需要了解更多参数说明可./configure -h,帮助文档有详细描述每一个参数的作用,以便开发者进行裁剪。
接下来,make & make install

测试使用

把生成目录下bin和include和lib拷贝到开发板,并声明lib的环境变量。
到此移植工作完毕,接下来进行测试一下,这里我整理了一些ffmpeg常用命令,亲测可用:

1.ffmpeg mp4转ts
ffmpeg -i /mnt/app/test.mp4 -codec copy -bsf:v h264_mp4toannexb ./haha.ts 
2.ffmpeg 裁剪视频
ffmpeg -ss 00:00:00 -t 00:00:08 -i ./haha.ts -codec copy ./haha-cut-1.ts
3.ffmpeg 提取图片帧
ffmpeg -i /mnt/app/test.mp4 -r 30 -f image2 /mnt/pic/frames_%3d.jpg
4.ffmpeg 图片合成视频
ffmpeg -f image2 -i /mnt/pic/frames_%3d.jpg -vcodec libx264 /mnt/pic_video.mp4 -y
5.ffmpeg rstp视频合成
ffmpeg -i rtsp://admin@ip:port/h264/ch1 -vcodec copy ./mnt/rtsp.ts
6.ffmpeg 视频合成后台运行:
nohup ffmpeg -i rtsp://admin@ip:port/h264/ch1 -vcodec copy ./mnt/rtsp.ts &

Hisi3516下ffmpeg的移植到此完成,有兴趣的朋友可自己尝试用ffmpeg解码写个播放器。喜欢的朋友可以点个赞~

作者:费码程序猿
欢迎技术交流:QQ:255895056
转载请注明出处

你可能感兴趣的:(交叉编译)