ExoPlayer,如何加载更大的远程音频文件
我正在使用ExoPlayer 2播放远程曲目。 默认情况下,玩家一个接一个地加载曲目(即约20秒,然后在曲目播放时再加20秒)。
由于曲目是从远程服务器加载的,所以如果连接断开,播放器将无法再加载。 有没有办法说ExoPlayer加载音频文件的更大的部分(也是一次完整的轨道)?
我试图看到ExtractorMediaSource
, DataSource.Factory
和DefaultExtractorsFactory
但我没有找到解决我的问题。
val audioSource = ExtractorMediaSource( Uri.parse(videoUrl), mDataSourceFactory, // DataSource.Factory mExtractor, // DefaultExtractorsFactory null, null ) mExoPlayer.prepare(audioSource) mExoPlayer.playWhenReady = true
(这是Kotlin,但是Java程序员似乎也可以理解)
我找到了解决方案。 由于我没有找到其他相关的问题,我会回答我的问题(希望将来有人会需要它):
正确的配置对象是在创建ExoPlayer
对象时传递给ExoPlayerFactory
的LoadControl
:
val loadControl = DefaultLoadControl( DefaultAllocator(true, C.DEFAULT_BUFFER_SEGMENT_SIZE), 5 * 60 * 1000, // this is it! 10 * 60 * 1000, DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_MS.toLong(), DefaultLoadControl.DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS.toLong() ) mExoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl)
文件在哪里解释。