Linux下FFmepeg交叉编译库的移植、安装

ffmpeg:FFmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward,是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。是一个非常快的视频和音频转换器,还可以抓取实时的音频/视频流。它可以在任意的采样率之间的转换和调整视频,并同时使用高品质的多相滤波器。

库的组成:

libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;

libavcodec:用于各种类型声音/图像编解码;

libavutil:包含一些公共的工具函数;

libswscale:用于视频场景比例缩放、色彩映射转换;

libpostproc:用于后期效果处理;

ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;

ffsever:一个 HTTP 多媒体即时广播串流服务器;

ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;

移植:

(我是用arm-hisiv400-linux平台,如果你是别的平台,只需要改--cross-prefix=********* ,--cc=**********, 如果出现gcc is unable to create an executable file. C compiler test failed的问题,请看这篇文章就能够解决:https://blog.csdn.net/weixin_42432281/article/details/90023643

  • 下载地址:https://ffmpeg.org/download.html      (我下载的是:ffmpeg-4.0.2.tar.bz2)
  •  tar  -jxvf ffmpeg-4.0.2.tar.bz2
  • cd ffmpeg-4.0.2
  • ./configure --prefix=./ --enable-network --enable-protocol=tcp --enable-protocol=udp --enable-protocol=rtp --enable-demuxer=rtsp --enable-static --enable-muxer=adts --enable-muxer=mpegts --enable-muxer=mpeg2video --enable-small --enable-protocols --enable-pthreads --enable-cross-compile --cross-prefix=arm-hisiv400-linux- --cc=arm-hisiv400-linux-gcc --arch=arm  --target-os=linux --disable-asm --optflags=-O0 --disable-programs
  • make
  • make install

这样就算是完成了,安装过程可能会比较久,也可以适当的裁剪编译的过程,不然生成执行文件可能会有点大,具体的想要裁剪的编译选项可以参考:https://blog.csdn.net/yzhang6_10/article/details/77104211,如果有些功能不支持,如解码编码不支持的类型,则需要移植安装相关类型的库,如libx264,安装移植完libx264后,ffmpeg的编译选项就要做出相关的改变:

./configure --prefix=./  --disable-everything --enable-network --enable-protocol=tcp --enable-protocol=rtp --enable-demuxer=rtsp --enable-static --enable-muxer=adts --enable-muxer=mpegts --enable-muxer=mpeg2video --enable-small --enable-protocols --enable-pthreads --enable-cross-compile --cross-prefix=arm-hisiv400-linux- --cc=arm-hisiv400-linux-gcc --arch=arm  --target-os=linux --disable-asm --optflags=-O0 --disable-programs  --enable-gpl --enable-libx264  --extra-cflags=-I/home/xy/ffmpeg/x264-snapshot-20180927-2245-stable/include --extra-ldflags=-L/home/xy/ffmpeg/x264-snapshot-20180927-2245-stable/lib --extra-libs=-ldl

当然如果编译选项过长,可以写成脚本的形式:

#!/bin/sh
PREFIX=./
./configure \
--enable-gpl    --enable-version3 --enable-nonfree \
--enable-static --disable-shared \
\
--prefix=$PREFIX \
\
--disable-opencl \
--disable-thumb \
--disable-pic \
--disable-stripping \
\
--enable-small \
\
--enable-ffmpeg \
--enable-ffplay \
--enable-ffserver \
--enable-ffprobe \
\
--disable-doc \
--disable-htmlpages \
--disable-podpages \
--disable-txtpages \
--disable-manpages \
\
--disable-everything \
\
--enable-libx264 \
--extra-cflags=-I/home/xy/ffmpeg/x264-snapshot-20180927-2245-stable/include \
--extra-ldflags=-L/home/xy/ffmpeg/x264-snapshot-20180927-2245-stable/lib \
--extra-libs=-ldl \
--enable-encoder=libx264 \
--enable-decoder=h264 \
--enable-encoder=aac \
--enable-decoder=aac \
--enable-encoder=ac3 \
--enable-decoder=ac3 \
--enable-encoder=rawvideo \
--enable-decoder=rawvideo \
--enable-encoder=mjpeg \
--enable-decoder=mjpeg \
\
--enable-demuxer=concat \
--enable-muxer=flv \
--enable-demuxer=flv \
--enable-demuxer=live_flv \
--enable-muxer=hls \
--enable-muxer=segment \
--enable-muxer=stream_segment \
--enable-muxer=mov \
--enable-demuxer=mov \
--enable-muxer=mp4 \
--enable-muxer=mpegts \
--enable-demuxer=mpegts \
--enable-demuxer=mpegvideo \
--enable-muxer=matroska \
--enable-demuxer=matroska \
--enable-muxer=wav \
--enable-demuxer=wav \
--enable-muxer=pcm* \
--enable-demuxer=pcm* \
--enable-muxer=rawvideo \
--enable-demuxer=rawvideo \
--enable-muxer=rtsp \
--enable-demuxer=rtsp \
--enable-muxer=rtsp \
--enable-demuxer=sdp \
--enable-muxer=fifo \
--enable-muxer=tee \
\
--enable-parser=h264 \
--enable-parser=aac \
\
--enable-protocol=file \
--enable-protocol=tcp \
--enable-protocol=rtmp \
--enable-protocol=cache \
--enable-protocol=pipe \
\
--enable-indev=v4l2 \
--enable-indev=alsa \
\

当然里面的编译选项要自己去选择裁剪了。然后运行脚本,在make,make install就行了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章