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就行了。

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