ffmpeg----configure參數配置說明

ffmpeg----configure參數配置說明

ffmpeg版本

  • ffmpeg4.2.2
  • 不同版本可能略有差異,實際上要以configure文件中說明的爲準

配置說明

  • 一開始接觸ffmpeg的configure感覺會有點迷茫,很多參數都不知道有什麼值可以設置,其實configure文件就能解決絕大部分參數的疑惑,有時間建議通讀一遍這個文件

–disable-everything

  • 這個選項相當於關閉了encoders,decoders,hwaccels,muxers,demuxers,parsers,bsfs,protocols,devices,indevs,outdevs,filters共9種組件;

  • 如果用戶增加了這個選項,那麼就需要手動打開所需的以上encoders,decoders等

  • 比如我只想編譯h264的解碼器和支持硬解,那麼只需要如下即可,沒有配置的都會關閉,只打開你所配置的

    ./configure --disable-everything --enable-decoder=h264 --enable-hwaccel=h264_dxva2
    
  • 如果沒有加上–disable-everything,那麼相當於開啓了ffmpeg的9種組件支持的所有東西

  • 我們如果要編譯ffmpeg庫來二次開發,那麼一般情況下不會用到所有東西,因此建議加上這個選項,然後再通過enable只打開需要的,這樣能減少最後編譯庫的大小和時間

–disable-[component]

  • 我們都知道ffmpeg完全編譯後有avcodec,avdevice,avformat,swresample,swscale,avfilter,avutil,postproc這8大塊

  • 如果不做任何配置,這8大塊默認是開啓的

  • 而我們可能不需要其中的一些,比如不需要後處理postproc這一塊,那麼我們就可以關閉它,比如

    ./configure --disable-postproc
    
  • 這樣就不會編譯postproc這個組件了

–enable-shared

  • 默認情況下編譯的庫是靜態的,如果我們想編譯動態的,那麼就可以加上這個選項,而ffmpeg還爲我們提供了顯示關閉靜態庫的選項–disable-static,而一般情況下靜動態是不會同時編譯的,也就是說如果打開動態庫的開關,那麼靜態庫也就被關閉了,因此如果我們想編譯動態庫的就加上這一行,如果是靜態的就不用作修改

    ./configure --enable-shared
    

–enable-cross-compile

  • 如果想交叉編譯,那麼得開啓這個開啓這個選項,同時還得設置–arch和–target_os和–cross_prefix,實際上你只要增加了–cross_prefix選項,那麼configure會自動幫你加上–enable-cross-compile,也就是有了–cross_prefix,–enable-cross-compile你可以省略不寫
  • 從configure裏可以看出,如下在這裏插入圖片描述
  • –arch可以設置哪些值呢,直接在configure中搜索“ARCH_LIST”就可以查到
  • –target_os可以設置的值在configure文件中可以你通過搜索“case $target_os in”就可以定位到了
  • –cross-prefix這個指定的是交叉編譯工具的前綴(如果沒有前綴可以不寫),比如如果交叉編譯工具x86_64-w64-mingw32-gcc,那麼你就應該寫–cross-prefix=x86_64-w64-mingw32-,注意最後的橫線,別漏了,然後configure就會找到–cc設置的值,這個值默認是gcc,也就是相當於加了–cc=gcc的選項,configure會把這兩個值拼接在一起,形成x86_64-w64-mingw32-gcc,這樣就找到了這個交叉編譯工具,至於這個x86_64-w64-mingw32-gcc你肯定要將其配置進環境變量,不然都找不到路徑就沒法使用了

總結

  • 我們使用ffmpeg一般都是作爲二次開發,否則直接拿官方的就可以用了,而二次開發往往不需要ffmpeg的所有東西,往往只需要其中的某些庫而已,這樣就會有一些基本的配置是可以一直保持的

  • 最後總結出一些基礎的配置,爲了減少編譯時間和體積,以下是建議配置的,其他要根據實際情況決定

    ./configure \
    --diable-everything  --disable-debug \
    --disable-programs --disable-ffmpeg --disable-ffplay --disable-ffprobe \
    --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages \
    

參考

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