ExoPlayer,如何加载远程音频文件的更大部分

时间:2017-03-07 08:35:24

标签: android audio-streaming exoplayer

我正在使用ExoPlayer 2播放远程曲目。默认情况下,播放器逐片加载曲目(即大约20秒,然后在播放曲目时其他20秒)。

由于从远程服务器加载了曲目,因此如果连接断开,播放器将无法再加载。有没有办法说ExoPlayer加载音频文件的更大部分(也是一次完整的音轨)?

我试图查看ExtractorMediaSourceDataSource.FactoryDefaultExtractorsFactory,但我找不到解决问题的方法。

val audioSource = ExtractorMediaSource(
        Uri.parse(videoUrl),
        mDataSourceFactory,    // DataSource.Factory
        mExtractor,    // DefaultExtractorsFactory
        null,
        null
)

mExoPlayer.prepare(audioSource)
mExoPlayer.playWhenReady = true

(它是Kotlin,但Java程序员似乎也可以理解)

2 个答案:

答案 0 :(得分:15)

我找到了解决方案。由于我没有找到其他相关问题,我会回答我的问题(我希望将来有人会需要它):

要配置的正确对象是在创建LoadControl对象时传递给ExoPlayerFactory的{​​{1}}:

ExoPlayer

The doc解释它。

答案 1 :(得分:0)

@Massimo的答案是正确的,但已弃用了方式

使用类似的东西

DefaultLoadControl.Builder()
            .setBufferDurationsMs(
                DefaultLoadControl.DEFAULT_MIN_BUFFER_MS, 
                30_000, 
                DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_MS,
                DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS
            )