最近我已經成功地將視頻解碼器移植到了android。還將輸出轉儲到surfaceview並使用本地API檢查輸出。接下來的任務是實現播放,暫停,流媒體等,即媒體播放器的其他功能。這樣做將是一個返工,因爲所有這些功能都已在android多媒體框架中定義。我聽說我們可以將我們的解碼器作爲插件並將其集成到Android的多媒體框架中。雖然我GOOGLE了同樣的,我幾乎找不到任何有關信息。所以我懇請任何讀者爲上述問題建議一些相關鏈接或解決方案。在此先感謝,等待您的回覆。Android:如何將解碼器集成到多媒體框架
回答
在Android SF框架中,編解碼器通過media_codecs.xml
註冊。在標準的android發行版中,例如media_codecs.xml
可以找到here。所有視聽組件都註冊爲OMX
組件。
1編解碼器註冊
要註冊您的視頻解碼器,你就必須下<Decoders>
列表中添加新條目。爲確保您的編解碼器始終處於待用狀態,請確保您的編解碼器被列爲特定MIME
類型的第一個條目。 H.264解碼器的示例條目如下。
<Decoders>
<MediaCodec name="OMX.ABC.XYZ.H264.DECODER" type="video/avc" >
<Quirk name="requires-allocate-on-input-ports" />
<Quirk name="requires-allocate-on-output-ports" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.decoder" type="video/avc" />
其中,
一個。 OMX.ABC.XYZ.H264.Decoder
是您的組件的名稱
b。 video/avc
是組件的MIME
類型。在這個例子中,它表示一個視頻解碼器。
c。接下來的兩條語句分別表示您的組件的quirks
或特殊要求。在給出的示例中,requires-allocate-on-input-ports
向Stagefright
框架指示組件優選在其所有輸入端口上分配緩衝區。同樣,其他quirk
通知組件也將更喜歡分配它的輸出端口。有關係統中支持的quirks
的列表,請參閱OMXCodec.cpp文件中的功能OMXCodec::getComponentQuirks
。這些怪癖轉化爲標誌,然後由框架讀取標誌以創建和初始化組件。
在示例說明中,顯示您的OMX
組件在默認 Google之前註冊的視頻解碼器。
注意:如果你想這樣的一個終端設備上,則必須確保該項目被反映在最終media_codecs.xml
文件。
2. OMX核心登記
要創建組件,並確保正確工廠方法被調用時,你可能與Stagefright
框架註冊OMX
核心。
要註冊一個新的內核,您必須創建一個名爲libstagefrighthw.so
的新庫,該庫位於您的最終系統中的/system/lib
。這個庫將不得不公開一個createOMXPlugin
符號,該符號將被dlsym
查找。
的OMX
芯的登記是這樣的:OMXMaster
調用addVendorPlugin
其內部調用addPlugin("libstagefrighthw.so")
。在addPlugin
中,將查找createOMXPlugin
,使用它來初始化makeComponentInstance
,destroyComponentInstance
等的其他函數指針。
一旦OMX
內核被初始化,您就可以在android框架中運行自己的組件。 OMXMaster
的參考可以找到here。
隨着這些變化,您的視頻解碼器被集成到android stagefright框架中。
- 1. 如何將多個Luis模型集成到機器人框架
- 2. 集成多媒體與LibGDX
- 3. Android媒體編解碼器崩潰
- 4. 將社交媒體集成到DFP中
- 5. 如何在Android中集成Azure媒體播放器
- 6. iOS媒體框架
- 7. Flex媒體框架
- 8. 媒體編解碼器api
- 9. monodevelop實體框架集成
- 10. MediaCodec如何在Android框架內找到編解碼器?
- 11. 在Android中使用java媒體框架
- 12. 如何將MySQL與Zend框架集成?
- 13. 如何將wicket框架與mongoDB集成?
- 14. 如何將extJs與zend框架集成?
- 15. 如何將ExtJS與Spring框架集成
- 16. 多媒體框架的差異
- 17. 的ffmpeg在MLT多媒體框架
- 18. android,andengine,pureMVC框架集成
- 19. 如何將會員表與實體框架集成? Asp.net
- 20. 如何將實體框架與外部REST數據源集成?
- 21. Android媒體播放器與WMA編解碼器電臺流媒體
- 22. 如何將G729編解碼器集成到pjsip中?
- 23. 如何將joomla媒體選擇器集成到自定義組件
- 24. 解碼LPR媒體
- 25. 如何將AAC分析器集成到Android源代碼中?
- 26. 媒體查詢跨框架
- 27. Scala/Java媒體框架?
- 28. 我如何在Android上添加mp3到多媒體播放器?
- 29. Asterisk +媒體服務器集成?
- 30. Qt多媒體API和視頻解碼
非常感謝您的回覆。不過,我有點困惑。 – Zax 2013-03-12 05:08:29
說我有一個項目,其中有一個文件資源管理器來選擇一個輸入文件解碼和一個解碼按鈕來解碼輸入文件。我如何着手上述步驟?等待你的回覆。提前致謝。 – Zax 2013-03-12 05:18:46
@Zax我在這裏的另一個線程上回答了這個問題http://stackoverflow.com/questions/15356629/how-to-create-a-stagefright-plugin – Ganesh 2013-03-12 13:41:10