6

我需要制作一个可以将播放速度从 0 逐渐更改为大约 200% 的视频播放器。它必须运行得非常快,因为它将播放以高帧率 (60 FPS) 录制的高清电影。如果无法支持高清,可以使用较低的分辨率。

该代码只需要在具有硬件 h264 解码器和 ICS(没有可用于目标平板电脑的 Jelly Bean)的相对高端的 Android 平板电脑上运行。

我没有找到任何支持在 Android 系统中更改视频播放速率,我怀疑我需要深入研究 JNI 才能到达那里,但想先在这里问一下是否有人有一些代码、建议或指针可以帮我。

4

2 回答 2

2

我从 vitamio 获得了 android 自定义播放器。在那,媒体播放器有一个设置播放速度的选项。即 mMediaPlayer.setPlaybackSpeed(speed); 设置视频和音频播放速度参数:速度例如0.8或2.0,默认为1.0,范围在[0.5-2]

请参考链接: http: //www.vitamio.org/en/docs/news/2013/0529/19.html

于 2013-10-18T06:42:28.390 回答
1

我一直在考虑做类似的事情,以下是我的一些发现可能对您有用:

  1. 如果你已经下载了 android ndk r7 或更高版本,ndk->samples->native-media 是一个使用 jni 执行原生 android 媒体播放器的示例项目。
  2. 这使用了 OpenMAXAL.h 库(ndk 中的):您会注意到一个名为 XA_IID_PLAYBACKRATE 的接口。有不错的参考卡,但样品薄。听起来它应该做我们想做的事。
  3. 该示例指示 a minSdkVersion = 14,因此它应该可以在您的 ICS 设备上运行。
  4. 我在我唯一可用的 ICS+ 设备上测试了这个,运行 4.2 (Jellybean) 的 16GB ASUS Nexus7,我在我的笔记日志中得到了以下输出(省略了我自己的调试语句)

    01-15 14:19:33.384: W/libOpenSLES(6037): class MediaPlayer interface 1 requested but unavailable MPH=75
    01-15 14:19:33.384: W/libOpenSLES(6037): Leaving Object::GetInterface (SL_RESULT_FEATURE_UNSUPPORTED)
    01-15 14:19:33.384: A/libc(6037): jni/native-media-jni.c:409: Java_com_example_nativemedia_NativeMedia_createStreamingMediaPlayer: assertion "XA_RESULT_SUCCESS == res" failed
    01-15 14:19:33.384: A/libc(6037): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 6037 (ple.nativemedia)
    

    在加载媒体流(或文件)并创建本机媒体播放器实例的函数中。这些错误非常明确地表明我的设备/解码器、我的操作系统或我的文件类型不支持该功能。我实际上不确定它是哪一个(或组合),但如果它是第一个,这可能意味着没有很多设备可以支持您想要的功能。也许 Nexus7 是一个异常值,但不幸的是,这仍然是平板电脑空间的一个相当大的部分,这意味着我们不能期望其他设备有太多的一致性。

如果有人遵循这些说明并成功运行,请发表评论 - 我将继续对此进行修改并尝试使其正常工作,并将更新任何进展。

于 2013-01-15T22:48:23.773 回答