前言

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则下载最新源码即可。

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
转载请注明出处

Hisi3516交叉编译ffmpeg支持h264编码相关推荐

  1. FFmpeg_编译支持h264编码的ffmpeg,并验证

    系统环境:ubuntu16.04 FFmpeg:4.1 x264:http://download.videolan.org/x264/snapshots/ nasm:2.13.03 yasm:1.3. ...

  2. 如何让ffplay或者ffmpeg支持H265编码的rtmp/http-flv 实时直播流

    很多初学者不知道ffplay或者ffmpeg是不支持flv封装的rtmp/http-flv流的,其原因是flv不支持H265编码payload的,因为当时制定flv封装协议的时候,H265还没出来,现 ...

  3. opencv-python支持h264编码 anaconda也可支持

    老版参考跳转 由于浏览器播放的视频常用h264编码格式,所以cv这边保存时希望能够以h264支持,但是奈何因为其开源许可,默认的包安装不支持h264. 开开心心指定h264报错: Could not ...

  4. ffmpeg的H264编码 视频逐渐模糊

    万能的互联网,又一次在临危之时解决了我的问题 最近在看ffmpeg里的H264编码,然后试着去做了一下.但是目前发现一个问题,就是编码写入的.264文件,用播放器(VLC,暴风都试过)播放后,发现编码 ...

  5. 让ffmpeg支持10bit编码

    文章版权由作者柯O德尔和博客园共有,请尊重并支持原创,若转载请于明显处标明出处:http://www.cnblogs.com/koder/ 最近因为工作需要,要进行265 10bit编码,于是从ffm ...

  6. ffmpeg设置h264编码IDR间隔

    在ffmpeg中,编码h264时,想强制刷出一个I帧,比较容易,但是想强制刷出IDR帧,却没有明确的说明. 而在x264的头文件中,可以看到一个参数说明: int i_keyint_max; /* F ...

  7. ffmpeg支持MP3编码的方法

    问题 近期一个项目中mp3文件较大,需要转成占用存储空间较小的文件.首先想到的是"格式工厂",非常便捷,但是此工具每次批量转换数量上限是1000,而我要转上万个.所以考虑用ffmp ...

  8. FFmpeg支持H265编码

    目前FFmpeg已经能够支持H265编码,我们可以通过configure添加 --enable-gpl --enable-libx265来配置. 这就需要我们的系统环境中已经安装了libx265,且其 ...

  9. ffmpeg进行h264编码

    首先需要穿件编码的上下文以及指定编码器代码如下 //视频编码上下文 - (AVCodecContext *)get_avcodecContext_fv{AVCodecContext *c_ctx = ...

最新文章

  1. 文件 单片机_单片机C语言编程中reg52.h头文件的作用
  2. 如何在高并下设置Linux系统及kernel参数
  3. CodeForces - 1029B.Creating the Contest(最长上升子序列0(n)解法)
  4. 通往奥格瑞玛的道路(洛谷 1462)
  5. Vue安装依赖npm install时报错问题解决方法
  6. IBatis.Net学习笔记七--日志处理
  7. JVM系列之:从汇编角度分析Volatile
  8. Linux 进程状态介绍
  9. Go语言的原子操作和互斥锁的区别
  10. 三维球体换算到二维_单图像三维重建、2D到3D风格迁移和3D DeepDream
  11. 诚之和:苹果汽车还没造出来,但数百万车将先装上它的“灵魂”
  12. Openwrt_树莓派B+_Wifi中继
  13. 计算机网络知识点总结(一)-----蜂窝移动网络
  14. wp8通过WebClient从服务器下载文件
  15. laravel发送邮件
  16. 类似qvod的流媒体点播服务器架设建议
  17. 百度云服务器上安装docker步骤
  18. MSDC 4.3 接口规范(25)
  19. 员工信息表,增删查改程序
  20. ×××网站与***的秘密

热门文章

  1. Teechart图表教程:Teechart的安装
  2. jqGrid系列:下载jqGrid
  3. java计算机毕业设计购物网站设计(附源码、数据库)
  4. python 正则使用详解
  5. 怎么恢复微信聊天记录
  6. 台风大涡模拟三维可视化
  7. CDH数仓项目(一) —— CDH安装部署搭建详细流程
  8. amCharts下的JS图表
  9. python车牌识别系统+车辆管理+计费系统(图像识别)django框架 计算机毕业设计
  10. MATLAB--数字图像处理 简单人脸识别