2011-04-07 50 views
14

n00b在這裏(第一個Android項目)。我得到了一個已經與Android固件版本集成的定製視頻編解碼器。它是一個包含從MediaPlayerInterface繼承的類的.so文件,以及用於從create()工廠函數返回適當文件類型的自定義編解碼器類實例的自定義MediaPlayerService實現。如何創建自定義媒體播放器以在Android中播放自定義編解碼器?

我想通過將.so文件放入我的libs/armeabi文件夾並通過JNI調用它,將此編解碼器用作視頻播放器應用程序的一部分,該應用程序可以安裝在不包含固件編解碼器的手機上。

從我對this question的回答可以看出,在MediaPlayer框架中無法做到這一點,我必須從頭開始創建一個新的媒體播放器。首先,我使用Java實現了一個UI,並將其設置爲使用自定義視圖(而不是VideoView),該視圖擴展了SurfaceView並使用MediaPlayer類的一個實例來播放視頻。然後,我用一個自定義媒體播放器Java類替換了MediaPlayer的這個實例。我建立了JNI接口,模仿了android_media_MediaPlayer.cpp的方式,並且在JNI代碼中調用了MediaPlayer C++類。現在我需要用一個定製的C++媒體播放器類替換,即

這是我開始遇到問題的地方。實施自定義播放器的建議方法是什麼?有一個嗎?除了通過源碼進行拖網之外,是否還有一些在線文檔適用於這些內容?我可以使用多少框架以及需要多少人來重新實現自己?我是否必須實現自己的等效MediaPlayerService?

任何提示非常感謝。

回答

3

您可以查看Android的源代碼,以瞭解Android如何在Java中實現MediaPlayer接口 。你可以按照類似的路線 。

MediaPlayer Class Reference

+3

感謝您的回覆。在發佈最初的問題之前,我通讀了MediaPlayer界面的Android源代碼。類似的路線似乎不可能。具體而言,內置MediaPlayer使用ACCESS_SURFACE_FLINGER權限,這似乎被拒絕給不內置的應用程序。我希望用戶能夠下載並安裝我的播放器,而不是在手機上預先安裝它。 – samgak 2011-07-11 02:36:52

+0

嗨,請分享您的最新發現,瞭解如何實現android自定義編解碼器。 @samgak – HoseinIT 2016-03-09 06:45:23

2

我希望你的編解碼器是不是太CPU密集型。 Android僅支持H.264的主要原因是(我猜)在大多數設備中都有硬件支持這種編解碼器。其他編解碼器需要由CPU處理,這可能不夠強大。

2

爲什麼不使用VLC呢?你可以得到源代碼,支持每種格式。修剪它爲您的目的,皮膚,瞧,c'est菲尼。我知道他們現在真的在竊取代碼,你可以跳過它並幫助他們。

http://gigaom.com/video/vlc-for-android-demo-beta/

+3

VLC按照GPLv2許可證發佈。您不能在自己的商業項目中使用該代碼。 – philipp 2013-08-01 22:17:44