这里是 n00b(第一个 Android 项目)。我获得了一个与 Android 固件构建集成的自定义视频编解码器。它是一个 .so 文件,其中包含一个继承自 MediaPlayerInterface 的类,以及一个自定义 MediaPlayerService 实现,用于从相应文件类型的 create() 工厂函数返回自定义编解码器类的实例。
我想将此编解码器用作视频播放器应用程序的一部分,该应用程序可以安装在固件中不包含编解码器的手机上,方法是将 .so 文件放在我的 libs/armeabi 文件夹中并通过 JNI 调用它。
来自 this question 的答案我发现在 MediaPlayer 框架内不可能做到这一点,我必须从头开始创建一个新的媒体播放器。首先,我用 Java 实现了一个 UI,并将其设置为使用自定义 View (而不是 VideoView),它扩展了 SurfaceView 并使用 MediaPlayer 类的实例来播放视频。然后我用自定义媒体播放器 Java 类替换了这个 MediaPlayer 实例。我已经设置了 JNI 接口(interface),模仿 android_media_MediaPlayer.cpp 的方式,并在 JNI 代码中调用 MediaPlayer C++ 类。现在我需要用自定义 C++ 媒体播放器类替换 that。
这是我开始遇到问题的地方。实现自定义播放器的推荐方法是什么?有吗?除了通过源代码拖网之外,是否有任何这些东西的在线文档?我可以使用多少框架以及我必须自己重新实现多少?我是否必须实现自己的 MediaPlayerService 等效项?
非常感谢任何提示。
最佳答案
你可以查看Android的源代码来了解如何 Android 已经用 Java 实现了 MediaPlayer 接口(interface)。你可以 遵循类似的路线。
关于android - 如何创建自定义媒体播放器以在 Android 中播放自定义编解码器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5578569/