Android上的可变视频播放率

时间:2012-11-05 14:31:14

标签: android video

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

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

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

2 个答案:

答案 0 :(得分:2)

我从vitamio获得了android自定义播放器。在这方面,媒体播放器可以选择设置播放速度。 即 mMediaPlayer.setPlaybackSpeed(速度); 设置视频和音频播放速度 参数: 速度如0.8或2.0,默认为1.0,范围为[0.5-2]

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

答案 1 :(得分:1)

我一直在寻找类似的东西,以下是我的一些可能对您有用的发现:

  1. 如果您已经下载了android ndk r7或更高版本,则ndk-> samples-> native-media是一个使用jni执行原生Android媒体播放器的示例项目。
  2. 这使用OpenMAXAL.h库(在ndk中):您会注意到一个名为XA_IID_PLAYBACKRATE的接口。有decent reference card,但样本很薄。听起来它应该做我们想做的事。
  3. 该示例表示minSdkVersion = 14,因此它应该适用于您的ICS设备。
  4. 我在唯一可用的ICS +设备上测试了这个,运行4.2(Jellybean)的16GB华硕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)
    

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

  5. 如果有人遵循这些说明并且已成功运行,请发表评论 - 我将继续对此进行攻击并尝试使其正常运行,并将随着任何进展进行更新。