android - Exoplayer Mediaplayer Android延迟应用PlaybackParameters

标签 android kotlin android-mediaplayer media exoplayer

我正在使用Exoplayer在应用程序中播放视频,我想做的就是改变播放速度,为此Exoplayer提供了一个简单的解决方案:

    val playbackParameters = PlaybackParameters(whateverSpeedFloat)
    exoPlayer.setPlaybackParameters(playbackParameters)
现在这行得通,但是我的问题是效果不是立即产生的,当您更改速度时,更改实际速度需要几帧。我猜这是因为某些帧已预加载或缓冲,并且设置的播放参数仅在此之后影响帧。
如果我停止播放视频,然后将速度从0.5倍更改为2倍,然后按播放,则很明显回放速度更改存在延迟。但是,如果我按Stop键,则将速度从0.5倍更改为2倍,并在视频中寻找另一个点,然后按播放,效果很好,没有延迟。我猜它会使用正确的播放参数重新加载/缓冲新帧。我试着做
   exoPlayer.clearVideoDecoderOutputBufferRenderer() 
更改速度后,尝试在设置播放参数后重新缓冲帧,但似乎没有任何改变。
有想法该怎么解决这个吗?还是其他没有此问题的视频播放器库?

最佳答案

我认为您可以减少ExpPlayer初始化期间配置设置内缓冲的时间。低于前在配置上,您可以抛出文档并检查可能的值。

/* Instantiate a DefaultLoadControl.Builder. */
DefaultLoadControl.Builder builder = new
DefaultLoadControl.Builder();

/* Maximum amount of media data to buffer (in milliseconds). */
final long loadControlMaxBufferMs = 60000;

/*Configure the DefaultLoadControl to use our setting for how many
Milliseconds of media data to buffer. */
builder.setBufferDurationsMs(
DefaultLoadcontrol.DEFAULT MIN BUFFER MS,
loadControlMaxBufferMs,
/* To reduce the startup time, also change the line below */
DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_MS,

DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS);

/* Build the actual DefaultLoadControl instance */
DefaultLoadControl loadControl = builder.createDefaultLoadControl();

/* Instantiate ExoPlayer with our configured DefaultLoadControl */
ExoPlayer player = ExoPlayerFactory.newSimpleInstance(
new DefaultRenderersFactory(this),
new DefaultTrackSelector(),
loadControl);

还有一篇有关更改缓冲时间选项的好文章。

关于android - Exoplayer Mediaplayer Android延迟应用PlaybackParameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63754900/

相关文章:

android - java.lang.RuntimeException:无法在单元测试中创建ViewModel类的实例

android - 如何在 Kotlin Android 中从 JSON 中获取数据

Android ExoPlayer 通过 HTTP 流式传输 mp3

java - Android 从所有文件夹加载媒体

android - 如何使用 React Native 从文件系统检索文件,以转换为 base64 并以 JSON 格式发布 http?

Android Twilio 调用电话

android - xamarin表单上的“Can' t Write”错误

java - 当用户更新我的应用程序时,如何运行一些代码?

android - 需要 bool 类型的值 : Popup Menu

android - 保持声音在App内播放,但在App进入后台时停止播放