本帖最后由 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移植,源码编译