本文僅快速介紹如何把 ffmpeg 安裝到 Linux 上,至於ffmpeg內部的原理,我還沒深入 trace 過,在此文不提。
以下為本文介紹的重點
- 把 ffmpeg 抓下來。
- configure
- 建立 library
- 試著 compile 出一個可執行檔來跑
首先,要先把 ffmpeg 抓下來,這裡建議使用 svn 抓。在 Linux 上打入下列命令
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
等一段時間後,svn 把檔案都 check out 出來,即可看到 ffmpeg 的目錄。
接著,要進行 configure 的動作。在這裡如果沒有特殊需求,直接打 configure 即可。
如果想指定 library 和 header file 安裝的目錄,可以利用 --prefix 參數指定,未指定的話預設是 /usr/local;如果要執行的機器是不同的平台,例如在 x86 上面 compile arm 的 library,可以使用 --arch、--cross-prefix、--enable-cross-compile 等參數。詳細的參數使用可以打 configure --help 參考。
configure 完後,直接打 make,再打 make install,就會把 library 和 header file 放到指定的目錄位置。
到此,已經可以開始寫程式呼叫 ffmpeg 的 library 了。
一開始,可以到 ffmpeg/libavcodec 下,找到 apiexample.c 這個檔。新手入門可以先拿這個檔來參考。但是要修改一些地方。
首先,第38行,#include "avcodec.h" 要改成 #incluce "libavcodec/avcodec.h",不然可能會找不到 avcodec.h 這個 header file。
再來,建議把 audio 的部份先 mark 掉;總計有 audio_encodec_example()、audio_decode_example(),及 main 裡面呼叫這兩個 function 的地方,全部 mark 掉。
存檔後,打 gcc -o ffmpeg_test apiexample.c -lavcodec -lavutil,就可以過了。如果不行的話,可以試著加上 -lm 和 -lz 試試。
接著,執行 ffmpeg_test,可以在 /tmp 下找到 test.mpg 檔,這是壓縮過後的檔案;在 /tmp 下同樣也可以找到 test*.pgm,這是解壓之後的檔案,用圖片一張一張表現,格式是 pgm。
總結,快速的作法為
- svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
- cd ffmpeg; configure
- make;make install
至此已將 ffmpeg 的 library 和 header file 安裝至 /usr/local/ffmpeg 目錄下。注意,做此動作必須為 root 才行。如果不是 root,請在 configure 後使用 --prefix 指定有權限的目錄。
4 則留言:
您好:
因為在使用ffmpeg遇到一些問題所以想要請教一下您...我在做完您說的第一個步驟之後(利用svn下載)之後產生了ㄧ個ffmpeg的檔案夾.可是之後我再打configure卻顯示:bash: configure: command not found,這是什麼原因呢?該如何安裝還是我少了什麼?謝謝!
在 ffmpeg 目錄底下, 打 ./configure 試試。
如果可以的話,問題出在你的 PATH 沒有 ./ , 也就是沒有目前目錄。
您好:
謝謝您的回覆...只是我在configure之後又遇到了ㄧ個問題~(我用的是fedora)可是之後卻產生了三個檔案.分別是config.h,config.mak,config.err,我在config.err看到了顯示的錯誤 //tmp/ccJaA9DB.s:assembler message:
//tmp/ccJaA9DB.s:19: Error: alignment not a power of 2
請問這個有方法解決嗎?
感謝您的幫助!
這個... 我沒解決 @@
我在 configure 之後也有在 config.err 看到一樣的訊息,不過沒管它,繼續 make,一切正常。
config.err 看起來像是 configure 在測試 assembler 的結果。
張貼留言