2016-08-25 3 views
1

У меня есть ExoPlayer с HlsRendererBuilder. До сих пор я передавал ему Uri в файл потока m3u8 на сервере. Он отлично работает. Теперь у меня есть возможность загрузить видео на ваш телефон и воспроизвести его из хранилища. Я успешно загрузил файл с указанной ссылки, сохранил его в частной папке приложения. Все разрешения на доступ к внешнему хранилищу запрошены и одобрены. В этом случае я передаю Uri из файла, который я загрузил. Uri выглядит так: file:///storage/emulated/0/video/file.mp4. Когда я начинаю воспроизведение, файл никогда не загружается. Я не получаю никаких исключений или ошибок в журнале. Может ли кто-нибудь помочь мне предложить подход? При необходимости я предоставил фрагмент кода, но не уверен, какая часть будет полезна.ExoPlayer, не играющий из файла

У меня есть ExoPlayer.Listener, который регистрирует меня в состоянии игрока.

  1. Когда я потоковом я получаю различные состояния, начиная с IDLE -> БУФЕРИЗАЦИЯ -> READY -> БУФЕРИЗАЦИЯ ... так далее на основе подключения к Интернету или если СМИ закончились есы.
  2. Когда я играю в сохраненный файл, я получаю только состояние IDLE, и ничего больше не происходит. Я получил черный экран навсегда до тех пор, пока не начну свою деятельность finish().

Когда я пытался воспроизвести файл потока из локального хранилища, я получил исключение FileNotFound, так как он не может найти файл, следующую часть носителя, указанного в файле потока. Я предполагаю, что проблема будет в настройке проигрывателя? Не знаю ...

ответ

2

Для местного (видео/аудио) файла необходимо использовать другой RendererBuilder.

ExtractorRendererBuilder - вещь, на которую вы должны смотреть.

+0

Да! Спасибо! Я уже понял это. То же самое, отмечая как ответ. – parohy

1

Как вы используете HlsRendererBuilder Думаю, вы должны передать файл плей-листа .m3u8. Я основываюсь на своем опыте с DashRendererBuilder, но считаю, что HlsRendererBuilder работает очень похоже. Возможно, Renderer пытается разобрать плейлист с несколькими .mp4 (или .ts) файлами, но вы предоставляете только файл .mp4.

Загрузите все файлы, перечисленные в вашем файле .m3u8, включая ваш файл плейлиста, а затем передайте URI, как file:///storage/emulated/0/video/movie.m3u8, вашему визуализатору.

Надеюсь, это поможет!

+1

Да, на самом деле вы правы. Я знаю, что файл '.m3u8' является файлом списка воспроизведения. Я попал в ту часть, где я знаю, что мне нужно было создать другой рендерер, чтобы иметь возможность отображать файл '.mp4'. Я даю +1, это хороший момент. – parohy

Смежные вопросы