linux 交叉编译ffplay,移植交叉编译最新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端的程序总是编译不程序,浪费了我许多时间。

ffmpeg移植,源码编译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值