wfjdemmye

wfjdemmye

0个粉丝

20

问答

3

专栏

4

资料

wfjdemmye  发布于  2017-03-31 14:51:49
采纳率 0%
20个问答
2969

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

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

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

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

从下面我们就开始吧:
一、移植准备
last_x264.tar.bz2,可以在官网下网:   [url]ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2[/url]
ffmpeg-3.2.4.tar.bz2 官网下载地址:    [url]http://ffmpeg.org/releases/ffmpeg-3.2.4.tar.bz2[/url]
网不好的同学可以在我的百度盘里面下载。
链接:[url]http://pan.baidu.com/s/1geLh9XD[/url] 密码: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

0个粉丝

34

问答

0

专栏

6

资料

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

wfjdemmye

0个粉丝

20

问答

3

专栏

4

资料

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

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区