2011-04-07 96 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