我设置了ExoPlayer
HlsRendererBuilder
。
到目前为止,我已经将Uri传递给服务器上的m3u8
流文件。它工作得很好。
现在我可以选择将视频下载到手机上并从存储中播放。我已成功从给定链接下载文件,将其存储在app私人文件夹中。请求和批准访问外部存储的所有权限。
在这种情况下,我从我下载的文件传递一个Uri。
Uri看起来像这样:file:///storage/emulated/0/video/file.mp4
。当我开始播放时,永远不会加载文件。我在日志中没有任何异常或错误。任何人都可以帮我建议一种方法吗?如果需要,我将提供代码片段,但不确定哪个部分有用。
我有ExoPlayer.Listener
,它记录了玩家状态。
finish()
活动。 当我尝试从本地存储播放流文件时,我确实遇到FileNotFound
异常,它无法找到该文件,即流文件中列出的下一部分媒体。我认为问题出在玩家设置中?不确定......
答案 0 :(得分:2)
您需要为本地(视频/音频)文件使用不同的RendererBuilder
。
ExtractorRendererBuilder
是您应该关注的事情。
答案 1 :(得分:1)
当您使用HlsRendererBuilder
时,我认为您应该传递.m3u8
播放列表文件。我基于DashRendererBuilder
的经验,但我相信HlsRendererBuilder
的工作方式非常相似。渲染器可能正在尝试使用多个.mp4
(或.ts
)文件解析播放列表,但您只提供.mp4
个文件。
尝试下载.m3u8
文件中列出的所有文件(包括播放列表文件),然后将URI
file:///storage/emulated/0/video/movie.m3u8
传递给您的渲染器。
希望它有所帮助!