14

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

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

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

这是我开始遇到问题的地方。实现自定义播放器的推荐方法是什么?有吗?除了浏览源代码之外,是否有任何这些东西的在线文档?我可以使用多少框架,我必须自己重新实现多少?我是否必须实现自己的 MediaPlayerService 等价物?

非常感谢任何提示。

4

3 回答 3

2

您可以查看 Android 的源代码以了解 Android 如何在 Java 中实现 MediaPlayer 接口。您可以遵循类似的路线。

MediaPlayer 类参考

于 2011-07-07T10:47:07.227 回答
2

你为什么不改用 VLC 呢?你可以得到源代码,支持各种格式。为你的目的修剪它,剥皮,瞧,c'est fini。我知道他们现在实际上正在破解代码,您可以跳过它并帮助他们。

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

于 2011-07-14T03:31:25.747 回答
2

我希望您的编解码器不太占用 CPU。Android 仅支持 H.264 的主要原因是(我猜)大多数设备都支持此编解码器的硬件。其他编解码器需要由 CPU 处理,这可能不够强大。

于 2011-07-13T17:26:23.807 回答