使用 ExoPlayer 缓冲音频直播

Posted

技术标签:

【中文标题】使用 ExoPlayer 缓冲音频直播【英文标题】:Buffer audio livestream with ExoPlayer 【发布时间】:2018-04-02 11:14:11 【问题描述】:

我在 android 上使用 ExoPlayer 播放广播音频直播。 使用标准实现,当网络连接丢失时,直播会立即停止播放。

ExoPlayer 状态: 已开始 -> 连接丢失 -> 立即缓冲 -> 2-3 秒后。空闲

是否可以缓冲广播直播,所以如果没有互联网连接,流会继续播放几秒钟,直到网络连接恢复。 音乐应用 Tunein 具有此功能。 ExoPlayer 可以做到这一点还是怎么可能?

【问题讨论】:

【参考方案1】:

是的,现在可以使用具有此功能的 ExoPlayer 2.7.0。参考本期:Seeking in radio streams

在这篇文章的最后几个 cmets 中提到了它。希望对您有所帮助。

【讨论】:

【参考方案2】:

对于 2.x ,可以使用 LoadControl 修改缓冲区大小:

    DefaultLoadControl loadControl = new DefaultLoadControl(allocator, 30000,
 45000, 1500, DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS);

Official docs

更新: 但是 ExoPlayer 有一个问题: Audio stream moved to buffering state immediately on disconnection of internet 正如开发人员所说,计划在年底(或此后不久)修复

【讨论】:

不幸的是,这不起作用。连接丢失后,播放器状态立即为 BUFFERING 并且在 IDLE 之后 它仍然没有修复......希望他们会尽快修复它。 TuneIn 应用程序具有此功能并且可以正常工作...

以上是关于使用 ExoPlayer 缓冲音频直播的主要内容,如果未能解决你的问题,请参考以下文章

Android ExoPlayer 无法播放 HLS(HTTP 直播)

Android音频开发:使用ExoPlayer播放音频

Android音频开发:使用ExoPlayer播放音频

Android音频开发:使用ExoPlayer播放音频

android tv 中的 Exoplayer 不会在直播中重现 (.m3u8) 文件

如何使用 exoplayer 一起播放单独的音频和视频?