艾编程的鲁小班

艾编程的鲁小班

19个粉丝

25

问答

17

专栏

32

资料

艾编程的鲁小班  发布于  2017-03-31 14:51:49
采纳率 12%
25个问答
一个爱技术的人
7004

移植交叉编译最新ffmpeg源码,以及PC端编译源码

本帖最后由 wfjdemmye 于 2017-3-31 15:32 编辑

前绪: 最近在做海思的产品,想在海思的IPC产品做一个视频播放功能,但是比较坑的是,海思产品特点是带编码就不带解码,带解码就不带编码,所以决定用软解的方式来做。

其实移植源码也就是那么几步: 1.configure 配置需要的参数 2.make 开始编译 3.make install 安装编译库

从下面我们就开始吧: 一、移植准备 last_x264.tar.bz2,可以在官网下网: ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 ffmpeg-3.2.4.tar.bz2 官网下载地址: http://ffmpeg.org/releases/ffmpeg-3.2.4.tar.bz2 网不好的同学可以在我的百度盘里面下载。 链接:http://pan.baidu.com/s/1geLh9XD提取码:v6sw 好啦,基本源材料都准备好了 二、编译x264库(我们ffMpeg中有用到这个依赖库,主要用来编译H.264 / mpeg - 4 AVC压缩格式) step1:configure 配置 ARM配置: CC=arm-hisiv500-linux-gcc ./configure \ --host=arm-hisiv500-linux \ --enable-pic\ --prefix=/opt/ffmpeg-hisi/x264_hisi \ --cross-prefix=arm-hisiv500-linux- \ --enable-static \ --enable-shared

or PC配置: ./configure --enable-shared --enable-shared --enable-pic --prefix=/opt/ffmpeg-X86/x264_x86

step2:make

step3:make install

我的安装目录在/opt/ffmpeg-hisi/x264_hisi,跟上的同学们可以自己决定安装在哪里,这个目录我们后面编译ffmpeg和基于ffmpeg的程序都是需要用的。

二、编译ffmpeg step1:configure 配置 ./configure \ --prefix=/opt/ffmpeg-hisi/ffmpeg_hisi/ \ --enable-filters \ --enable-asm \ --enable-ffmpeg \ --enable-ffplay \ --enable-ffprobe \ --enable-ffserver \ --enable-doc \ --enable-cross-compile \ --cross-prefix=arm-hisiv500-linux- \ --arch=arm \ --target-os=linux \ --host-os=linux \ --enable-gpl \ --enable-version3 \ --enable-small \ --enable-shared \ --enable-static \ --enable-encoder=rawvideo \ --enable-encoder=mpeg2video \ --enable-encoder=mp2 \ --enable-encoder=libx264 \ --enable-libx264 \ --enable-muxer=adts \ --enable-muxer=mpegts \ --enable-muxer=mpeg2video \ --enable-muxer=rtsp \ --enable-muxer=hls \ --enable-muxer=h264 \ --enable-muxer=rtp \ --enable-muxer=avi \ --enable-muxer=flv \ --enable-muxer=mp4 \ --enable-demuxer=mpegts \ --enable-demuxer=rtsp \ --enable-demuxer=hls \ --enable-demuxer=h264 \ --enable-demuxer=rtp \ --enable-demuxer=flv \ --enable-muxer=mp4 \ --enable-demuxer=mpegts \ --enable-demuxer=rtsp \ --enable-demuxer=hls \ --enable-demuxer=h264 \ --enable-demuxer=rtp \ --enable-demuxer=flv \ --enable-demuxer=avi \ --enable-demuxer=mpegps \ --enable-demuxer=mpegtsraw \ --enable-demuxer=mpegvideo \ --enable-parser=aac \ --enable-parser=h264 \ --enable-parser=mpeg4video \ --enable-parser=mpegvideo \ --enable-parser=mpegaudio \ --enable-bsf=h264_mp4toannexb \ --enable-protocol=http \ --enable-protocol=rtp \ --enable-protocol=rtmpts \ --enable-protocol=https \ --enable-protocol=hls \ --enable-protocol=file \ --enable-protocol=data \ --enable-gray \ --enable-safe-bitstream-reader \ --extra-cflags=-I/opt/ffmpeg-hisi/x264_hisi/include \ --extra-ldflags=-L/opt/ffmpeg-hisi/x264_hisi/lib

or: PC配置: ./configure \ --prefix=/opt/ffmpeg-X86/ffmpeg_x86/ \ --enable-filters \
--enable-asm \ --enable-ffmpeg \ --enable-ffplay \ --enable-ffprobe \ --enable-ffserver \ --enable-doc \ --target-os=linux \ --host-os=linux \ --enable-gpl \ --enable-version3 \ --enable-small \ --enable-shared \ --enable-static \ --enable-decoder=ibopenh264\ --enable-encoder=rawvideo \ --enable-encoder=mpeg2video \ --enable-encoder=mp2 \ --enable-encoder=libx264 \ --enable-encoder=libvo_aacenc \ --enable-libx264 \ --enable-muxer=adts \ --enable-muxer=mpegts \ --enable-muxer=mpeg2video \ --enable-muxer=rtsp \ --enable-muxer=hls \ --enable-muxer=h264 \ --enable-muxer=rtp \ --enable-muxer=avi \ --enable-muxer=flv \ --enable-muxer=mp4 \ --enable-demuxer=mpegts \ --enable-demuxer=rtsp \ --enable-demuxer=hls \ --enable-demuxer=h264 \ --enable-demuxer=rtp \ --enable-demuxer=flv \ --enable-demuxer=avi \ --enable-demuxer=mpegps \ --enable-demuxer=mpegtsraw \ --enable-demuxer=mpegvideo \ --enable-parser=aac \ --enable-parser=h264 \ --enable-parser=mpeg4video \ --enable-parser=mpegvideo \ --enable-parser=mpegaudio \ --enable-bsf=h264_mp4toannexb \ --enable-protocol=http \ --enable-protocol=rtp \ --enable-protocol=rtmpts \ --enable-protocol=https \ --enable-protocol=hls \ --enable-protocol=file \ --enable-protocol=data \ --enable-gray \ --enable-safe-bitstream-reader \ --extra-cflags=-I/opt/ffmpeg-X86/x264_x86/include \ --extra-ldflags=-L/opt/ffmpeg-X86/x264_x86/lib

step2:make

step3:make install

就这样简单,移植完毕;这个配置即可以做编译也可做解码,支持大部分格式。

大家需要迈地的坑:在移植后要去核对一下,自己的系统中是否存在ffmpeg库。如果存在的话会因为和现在的最新版的接口不兼容,会给后期写程序带来很大的麻烦。

移植之后检察一下是否有ffmpeg库,否在没有安装的地方也会有。

root@airgens-pc:/# find . -name libavcodec.so find: ‘./run/user/1000/gvfs’: Permission denied ./opt/hisi-H264/lib/libavcodec.so ./opt/ffmpeg-X86/ffmpeg_x86/lib/libavcodec.so ./opt/hisi-linux/x86-arm/arm-hisiv500-linux/lib/libavcodec.so ./opt/ffmpeg-hisi/ffmpeg_hisi/lib/shareLib/libavcodec.so ./opt/ffmpeg-hisi/ffmpeg_hisi/lib/libavcodec.so find: ‘./mnt/hgfs’: Protocol error ./home/airgens/work/qt-foder/ffjpeg-H264/ffmpeg-2.2.3/libavcodec/libavcodec.so ./home/airgens/work/qt-foder/SCXJ/SCXJ/H264PlayBaseFFmpeg/lib/libavcodec.so ./home/airgens/work/openSourceCoding/ffmpeg-3.2.4_X86/libavcodec/libavcodec.so ./home/airgens/work/openSourceCoding/ffmpeg-3.2.4_Arm/libavcodec/libavcodec.so

我之前在/usr/lib/i386-linux-gnu/目录下有ffmpeg2.5版本的库,导致我PC端的程序总是编译不程序,浪费了我许多时间。

[free]ffmpeg移植,源码编译[/free]

我来回答
回答2个
时间排序
认可量排序

9crk

1个粉丝

34

问答

0

专栏

6

资料

9crk 2017-04-12 11:16:14
认可0
带呀,Hi353x系列都是又能编码又能解码的呀

艾编程的鲁小班

19个粉丝

25

问答

17

专栏

32

资料

艾编程的鲁小班 2018-12-01 12:51:34
认可0
ffmpeg移植之后,可以结合海思平台做硬编解码,做RTSP的服务和客户段,方便省事儿,不会去实现协议层。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区