ExoPlayer无法从文件

时间:2016-08-25 07:56:58

标签: android exoplayer

我设置了ExoPlayer HlsRendererBuilder。 到目前为止,我已经将Uri传递给服务器上的m3u8流文件。它工作得很好。 现在我可以选择将视频下载到手机上并从存储中播放。我已成功从给定链接下载文件,将其存储在app私人文件夹中。请求和批准访问外部存储的所有权限。 在这种情况下,我从我下载的文件传递一个Uri。 Uri看起来像这样:file:///storage/emulated/0/video/file.mp4。当我开始播放时,永远不会加载文件。我在日志中没有任何异常或错误。任何人都可以帮我建议一种方法吗?如果需要,我将提供代码片段,但不确定哪个部分有用。

我有ExoPlayer.Listener,它记录了玩家状态。

  1. 当我流式传输时,我会从IDLE开始获得各种状态 - >缓冲 - >准备 - >缓冲...依据互联网连接或媒体结束ec。
  2. 当我播放存储文件时,我只获得状态IDLE,没有其他任何事情发生。我永远得到黑屏,直到我finish()活动。
  3. 当我尝试从本地存储播放流文件时,我确实遇到FileNotFound异常,它无法找到该文件,即流文件中列出的下一部分媒体。我认为问题出在玩家设置中?不确定......

2 个答案:

答案 0 :(得分:2)

您需要为本地(视频/音频)文件使用不同的RendererBuilder

ExtractorRendererBuilder是您应该关注的事情。

答案 1 :(得分:1)

当您使用HlsRendererBuilder时,我认为您应该传递.m3u8播放列表文件。我基于DashRendererBuilder的经验,但我相信HlsRendererBuilder的工作方式非常相似。渲染器可能正在尝试使用多个.mp4(或.ts)文件解析播放列表,但您只提供.mp4个文件。

尝试下载.m3u8文件中列出的所有文件(包括播放列表文件),然后将URI file:///storage/emulated/0/video/movie.m3u8传递给您的渲染器。

希望它有所帮助!