Embedded Linux 應用:FFmpeg
From Jollen's Wiki
jkbuilder-ffmpeg
Application層所使用的MPEG撥放程式 – ffplay內建於FFmpeg裡,是一個陽春型的撥放器。
目錄 |
[編輯]
準備工作
進行 'jkbuilder-ffmpeg' 專案前,必須完成以下檢查項目:
- 準備一個包含 Nano-X 與 SDL 功能的 root filesystem
- SDL 必須設定成透過 Nano-X 繪圖
SDL 的整入,有助於 application 的設計,同時,網路上也能找到許多基於 SDL 發展的程式。對於簡單的圖形與多媒體應用裝置來說,Nano-X/SDL 可以提供陽春的平臺。
[編輯]
Open Source / Free Software
本專案的基礎設計,採用以下的自由軟體:
- ffmpeg
[編輯]
關於 FFmpeg
- FFmpeg 的官方網站:http://ffmpeg.mplayerhq.hu/
- FFmpeg 官方手冊:http://ffmpeg.mplayerhq.hu/documentation.html
- ffserver 使用手冊:http://ffmpeg.mplayerhq.hu/ffserver-doc.html
[編輯]
FFmpeg 的修改
FFmpeg的ffplay.c有一個小小的暇疵,導致其X11的設定無法配合使用者的configure設定。
修改ffplay.c原始碼的第49行:
48: #if defined(__linux__) 49: #define HAVE_X11 50: #endif
將HAVE_X11的定義取消即可:
48: #if defined(__linux__) 49: #undef HAVE_X11 50: #endif
[編輯]
移植 FFmpeg
以下是 Jollen 提供的編譯設定,以客製化設定可將以下程式庫移植至 Jollen-Kit! Pro:
- libavcodec
- libavutil
- libavformat
以下 Jollen-Kit! Pro 使用的 FFmpeg autcoconf 參數:
- --cross-prefix=arm-9tdmi-linux-gnu-:FFmpeg的configure必須透過這個參數來設定cross compiliation,請指定為cross toolchain的prefix。
- --cpu=armv4:處理器的核心架構,S3C2410為armv4。
- --tune=arm9tdmi:處理器的指令集架構,S3C2410為arm9tdmi。
- --enable-shared:編譯成shared library。
- --disable-mmx:關閉MMX功能。此功能使用x86 MMX組合語言撰寫,若不關閉的話,會出現編譯錯誤的訊息。
- --disable-iwmmxt:同理,關閉IWMMXT功能。
- --disable-altivec:相同地,也要關閉AltiVec(PowerPC向量運算)功能。
- --disable-bktr:關閉BKTR功能。
- --disable-dv1394:關閉DV1394的支援。
- --disable-vhook:關閉vhook(特效)支援。
- --disable-ffserver:不要編譯ffserver應用程式。
FFmpeg編譯完成後的ffplay應用程式,可用來撥放多媒體檔(如:AVI),但實務應用時,請移植其它更好的媒體撥放程式。
[編輯]
關於 Video Streaming
需要 video streaming server 的應用場合,只需再把 FFmpeg 的 ffserver 加入 root filesystem,即可讓 ARM 裝置具備基本的 video streaming 功能。
編譯時,將 "--disable-ffserver" 選項移除即可。
[編輯]
下載
- jkbuilder-ffmpeg distribution: http://svn.jk2410.org/jkbuilder/jkbuilder-ffmpeg/
- Pre-built binary: http://www.jk2410.org/opensource/pre-built/rootfs/, 請下載 urootfs-ffmpeg*.bin


