Embedded Linux 應用:FFmpeg

From Jollen's Wiki

Jump to: navigation, search

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 的修改

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" 選項移除即可。

下載

Views
個人工具
導航
工具