ExoPlayer 不从文件播放
ExoPlayer not playing from file
我有一个 ExoPlayer
设置 HlsRendererBuilder
。
到目前为止,我一直在将 Uri 传递给服务器上的 m3u8
流文件。它工作得很好。
现在我可以选择将视频下载到您的 phone 并从存储中播放。我已成功从给定的 link 下载文件,并将其存储在应用程序的私有文件夹中。请求并批准访问外部存储的所有权限。
在这种情况下,我从我下载的文件中传递一个 Uri。
Uri 看起来像这样:file:///storage/emulated/0/video/file.mp4
。当我开始播放时,文件从未加载过。我在日志中没有收到任何异常或错误。谁能帮我建议一种方法?如果需要,我会提供代码片段,但不确定哪部分有用。
我有 ExoPlayer.Listener
记录了我的玩家状态。
- 当我进行流式传输时,我会获得各种状态,从空闲 -> 缓冲 -> 就绪 -> 缓冲...等等,基于互联网连接或媒体是否结束 ec.
- 当我播放存储的文件时,我只进入 IDLE 状态,没有其他任何反应。我一直黑屏,直到
finish()
activity。
当我尝试从本地存储播放流文件时,我确实遇到了一个 FileNotFound
异常,它无法找到流文件中列出的媒体的下一部分文件。我认为问题出在播放器设置中?不确定...
由于您正在使用 HlsRendererBuilder
,我认为您应该传递 .m3u8
播放列表文件。我基于我在 DashRendererBuilder
方面的经验,但我相信 HlsRendererBuilder
的工作方式非常相似。渲染器可能正在尝试解析包含多个 .mp4
(或 .ts
)文件的播放列表,但您只提供了一个 .mp4
文件。
尝试下载您的 .m3u8
文件中列出的所有文件,包括您的播放列表文件,然后将 URI
如 file:///storage/emulated/0/video/movie.m3u8
传递给您的渲染器。
希望对您有所帮助!
您需要为本地 (video/audio) 文件使用不同的 RendererBuilder
。
ExtractorRendererBuilder
是你应该看的东西。
我有一个 ExoPlayer
设置 HlsRendererBuilder
。
到目前为止,我一直在将 Uri 传递给服务器上的 m3u8
流文件。它工作得很好。
现在我可以选择将视频下载到您的 phone 并从存储中播放。我已成功从给定的 link 下载文件,并将其存储在应用程序的私有文件夹中。请求并批准访问外部存储的所有权限。
在这种情况下,我从我下载的文件中传递一个 Uri。
Uri 看起来像这样:file:///storage/emulated/0/video/file.mp4
。当我开始播放时,文件从未加载过。我在日志中没有收到任何异常或错误。谁能帮我建议一种方法?如果需要,我会提供代码片段,但不确定哪部分有用。
我有 ExoPlayer.Listener
记录了我的玩家状态。
- 当我进行流式传输时,我会获得各种状态,从空闲 -> 缓冲 -> 就绪 -> 缓冲...等等,基于互联网连接或媒体是否结束 ec.
- 当我播放存储的文件时,我只进入 IDLE 状态,没有其他任何反应。我一直黑屏,直到
finish()
activity。
当我尝试从本地存储播放流文件时,我确实遇到了一个 FileNotFound
异常,它无法找到流文件中列出的媒体的下一部分文件。我认为问题出在播放器设置中?不确定...
由于您正在使用 HlsRendererBuilder
,我认为您应该传递 .m3u8
播放列表文件。我基于我在 DashRendererBuilder
方面的经验,但我相信 HlsRendererBuilder
的工作方式非常相似。渲染器可能正在尝试解析包含多个 .mp4
(或 .ts
)文件的播放列表,但您只提供了一个 .mp4
文件。
尝试下载您的 .m3u8
文件中列出的所有文件,包括您的播放列表文件,然后将 URI
如 file:///storage/emulated/0/video/movie.m3u8
传递给您的渲染器。
希望对您有所帮助!
您需要为本地 (video/audio) 文件使用不同的 RendererBuilder
。
ExtractorRendererBuilder
是你应该看的东西。