天天看點

[編譯]FFmpeg及其交叉編譯(理論)

以下給出個人在學習FFmpeg的完整過程,僅供參考。

引言 因為在項目預研階段,每個人的環境有所不一樣,是以在編譯過程中十分注意:配置環境、依賴庫、外接開源庫。其實這些都是為了統一項目環境而已。避免開發階段發現,咦你原來缺來一個庫,然而之前找了兩天的bug。 但跟以往自己随意編譯一個開源庫不一樣,進一步掌握了關于環境、編譯的一些知識。 過程如下:主要是按照FFmpeg-wiki上的編譯部分指導操作 FFmpeg-wiki—— Generic compilation guide  一般話的編譯指導,可使用于所有開源庫編譯 該文章非常實用:

  1. 為什麼編譯源碼?
  2. 一般化的編譯過程?三部曲
  3. 安裝路徑:
  4. 環境變量:env指令檢視環境變量

本機編譯 FFmpeg-wiki—— FFmpeg Compilation Guides 特指FFmpeg的編譯方法 下面是個人配置FFmpeg的configure指令:

PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame  --enable-libopus --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libx265 --enable-nonfree

将configure --help列印出來,友善查找配置選項

項目中配置,轉到 [配置]FFmpeg配置 不得不說的是:上面使用了hash指令, 連結

需要按照教程來建立目錄(家目錄下建立),安裝完成後發現沒有出現ffplay,原來是沒有按照SDL,解析 連結 雖然FFmpeg官網并沒有給出相應的配置方法,但結合上述思路:路徑+運作檔案 下面是個人配置SDL的configure指令:

PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" PATH="$HOME/bin:$PATH" make make install make distclean 由于FFmpeg更新較快,上述的安裝方法對應的更新方法是:正确删除後,從新編譯一次即可。

編譯後,需要設定對應的環境變量,在此根據本機設定修改為: /etc/profile添加二進制路徑 export PATH="/home/h265/bin:$PATH" /etc/manpath.config添加man檔案路徑 MANPATH_MAP /home/h265/bin /home/h265/ffmpeg_build/share/man

交叉編譯 本節,講述如何在ARM平台上編譯運作FFmpeg,使得MPP系統與FFmpeg同時運作 hi3516a之ffmpeg x264交叉編譯 連結 連結  連結 連結 連結(安卓平台,它比較清晰)

繼續閱讀