如何创建自定义媒体播放器以在Android中播放自定义编解码器?

时间:2011-04-07 09:03:58

标签: android video media-player codec mediaplayerservices

n00b这里(第一个Android项目)。我收到了一个与Android固件版本集成的自定义视频编解码器。它是一个.so文件,包含一个继承自MediaPlayerInterface的类,以及一个自定义MediaPlayerService实现,用于从适当文件类型的create()工厂函数返回自定义编解码器类的实例。

我希望将此编解码器用作视频播放器应用程序的一部分,该应用程序可以安装在不包含固件编解码器的手机上,方法是将.so文件放在我的libs / armeabi文件夹中并通过JNI调用它。 / p>

从答案到this question我认为在MediaPlayer框架内无法做到这一点,我必须从头开始创建一个新的媒体播放器。首先,我在Java中实现了一个UI,并将其设置为使用自定义视图(而不是VideoView),该视图扩展了SurfaceView并使用MediaPlayer类的实例来播放视频。然后我用自定义媒体播放器Java类替换了这个MediaPlayer实例。我已经设置了JNI接口,模仿android_media_MediaPlayer.cpp的方式,并在JNI代码中调用MediaPlayer C ++类。现在我需要用自定义C ++媒体播放器类替换那个

这是我开始遇到问题的地方。实施自定义播放器的推荐方法是什么?有吗?除了在源头拖网之外,还有一些关于这些东西的在线文档吗?我可以使用多少框架以及我需要多少重新实现自己?我是否必须实现自己的等效于MediaPlayerService?

任何提示都非常感谢。

3 个答案:

答案 0 :(得分:3)

您可以查看Android的源代码,了解具体方法 Android已经在Java中实现了MediaPlayer接口。您可以 按照类似的路线。

MediaPlayer Class Reference

答案 1 :(得分:2)

我希望您的编解码器不会过于耗费CPU。 Android支持H.264的主要原因是(我猜)在大多数设备中都有对此编解码器的硬件支持。其他编解码器需要由CPU处理,这可能不够强大。

答案 2 :(得分:2)

为什么不使用VLC?你可以获得源代码,支持每种格式。为了你的目的修剪它,皮肤,瞧,c'est fini。我知道他们现在实际上正在攻击代码,你可以跳过它并帮助他们。

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