整合 GStreamer 到 Android

Thinker 在「GStreamer 和 OpenMAX IL 的比較」一文提到:

GStreamer 是知名的 open source multimedia framework,相當於 Windows 下的 DirectShow 。而 OpenMAX IL 則是多家知名廠商參與制定的標準,其功能和 GStreamer 也有些類似。目前已有一些 multimedia framework 開始支援 OpenMAX IL,以使用 OpenMAX IL 相容的 component 。 OpenMAX IL 是一個 codec 的標準介面,實作該介面的 codec 可以被任何 OpenMAX IL client 所使用。目前 Android 使用的 opencore 所支援的 codec 實在很少,如果可以透過實作 OpenMAX IL 的 wrapper ,讓 FFmpeg 之類的 multimedia framework 所提供的 codec 能當成 OpenMAX IL 的 component 載入,那麼 opencore 瞬間就多出許多 codec 可以使用。
這個想法已經被 Prajnashi S 初步實現,雖然層面不同,但還是有很大的參考價值。下午將之前的程式碼升級到 Android cupcake (1.5 Release),做了一些微調,在 target 上運作起來,先看看有哪些 plugin:
# gst-inspect-0.10
audiotestsrc: audiotestsrc: Audio test source
videotestsrc: videotestsrc: Video test source
omx: omx_dummy: OpenMAX IL dummy element
omx: omx_mpeg4dec: OpenMAX IL MPEG-4 video decoder
omx: omx_h263dec: OpenMAX IL H.263 video decoder
omx: omx_h264dec: OpenMAX IL H.264 video decoder
omx: omx_mp3dec: OpenMAX IL MP3 audio decoder
omx: omx_amrnbdec: OpenMAX IL AMR-NB audio decoder
omx: omx_amrwbdec: OpenMAX IL AMR-WB audio decoder
omx: omx_aacdec: OpenMAX IL AAC audio decoder
audioflingersink: audioflingersink: Audio Sink (AudioFlinger)
videoflip: videoflip: Video flipper
quicktime: qtdemux: QuickTime demuxer
coreelements: capsfilter: CapsFilter
coreelements: fakesrc: Fake Source
coreelements: fakesink: Fake Sink
coreelements: fdsrc: Filedescriptor Source
coreelements: fdsink: Filedescriptor Sink
coreelements: filesrc: File Source
coreelements: identity: Identity
coreelements: queue: Queue
coreelements: filesink: File Sink
coreelements: tee: Tee pipe fitting
coreelements: typefind: TypeFind
coreelements: multiqueue: MultiQueue
ffmpegcolorspace: ffmpegcolorspace: FFMPEG Colorspace converter
surfaceflingersink: surfaceflingersink: android's surface flinger sink
coreindexers: memindex: A index that stores entries in memory
videoscale: videoscale: Video scaler
staticelements: bin: Generic bin
staticelements: pipeline: Pipeline object

Total count: 12 plugins, 31 features
這表示,透過 GStreamer,Android 瞬間多了許多高品質的 plugin 與外加功能,也就能以 FFmpeg 或既有的 gst-plugins 來處理各式的多媒體資料。現在 video 的處理,可透過 Surface Flinger sink 來操作,測試方式:
# gst-launch-0.10 videotestsrc ! surfaceflingersink
以下是對應的螢幕輸出:

稍後,我們再來探討整合的議題。


About this entry


  1. Chih-Wei Huang 2010年3月8日 下午6:05

    這個議題有沒有新的進展?

     

張貼留言