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

sam*_*gak 14 video android codec media-player mediaplayerservices

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

我想用这个编解码器,可以在不包含固件的编解码器,通过将.so文件在我的库/ armeabi文件夹,并通过JNI调用它的手机安装一个视频播放器应用程序的一部分.

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

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

任何提示非常感谢.

Ecl*_*ses 2

你可以查阅Android的源代码来了解Android是如何用Java实现MediaPlayer接口的。您可以遵循类似的思路。

MediaPlayer 类参考

  • 感谢您的回复。在发布最初的问题之前,我通读了 MediaPlayer 界面的 Android 源代码。遵循类似的思路似乎是不可能的。具体来说,内置 MediaPlayer 使用 ACCESS_SURFACE_FLINGER 权限,该权限似乎被非内置应用程序拒绝。我希望用户能够下载并安装我的播放器,而不是在手机上预装它。 (3认同)