2016-08-25 112 views
1

我有一個ExoPlayer設置爲HlsRendererBuilder。 到目前爲止,我已經將它傳遞給服務器上的一個Uri到m3u8流文件。它運作良好。 現在我可以選擇將視頻下載到手機並從存儲中播放。我已經成功地從給定鏈接下載了該文件,並將其存儲在應用私人文件夾中。所有訪問外部存儲的權限都被請求和批准。 在這種情況下,我從我下載的文件傳遞了一個Uri。 Uri是這樣的:file:///storage/emulated/0/video/file.mp4。當我開始播放時,文件從不加載。我在日誌中沒有發現任何異常或錯誤。任何人都可以幫助我建議一種方法嗎?如果需要,我會提供一小段代碼,但不確定哪一部分是有用的。ExoPlayer不從文件播放

我有ExoPlayer.Listener它記錄了我的玩家狀態。

  1. 當我流我從IDLE開始各種狀態 - > BUFFERING - > READY - > BUFFERING ...等基於互聯網的連接,或者如果媒體結束EC。
  2. 當我播放存儲文件時,我只能得到狀態IDLE而沒有其他事情發生。我永遠得到了黑屏,直到我的活動finish()

當我試圖打從本地存儲流文件我也有一個例外FileNotFound它無法找到該文件,在流文件中列出的媒體下一部分。我認爲問題將出現在播放器設置中?不知道...

回答

2

您需要爲本地(視頻/音頻)文件使用不同的RendererBuilder

ExtractorRendererBuilder是你應該看的東西。

+0

是的!謝謝!我已經知道了。同樣,標記爲答案。 – parohy

1

當你使用HlsRendererBuilder我認爲你應該通過.m3u8播放列表文件。我基於我的經驗DashRendererBuilder,但我相信HlsRendererBuilder以非常類似的方式工作。渲染器可能試圖用多個.mp4(或.ts)文件解析播放列表,但您只提供.mp4文件。

嘗試下載您.m3u8文件,包括您的播放列表文件中列出的所有文件,然後通過URIfile:///storage/emulated/0/video/movie.m3u8你的渲染器。

希望它有幫助!

+1

其實你是對的。我知道'.m3u8'文件是一個播放列表文件。我知道我必須設置一個不同的渲染器才能呈現'.mp4'文件。我給+1,這是一個好點。 – parohy