2016-08-25 6 views
1

HlsRendererBuilder으로 설정 한 ExoPlayer이 있습니다. 지금까지 저는 Uri를 서버의 m3u8 스트림 파일로 전달했습니다. 그것은 위대한 일을하고 있습니다. 이제 휴대 전화로 비디오를 다운로드하고 저장 장치에서 재생할 수있는 옵션이 있습니다. 주어진 링크에서 파일을 성공적으로 다운로드하여 응용 프로그램 개인 폴더에 저장했습니다. 외부 저장소에 액세스하기위한 모든 권한이 요청되고 승인되었습니다. 이 경우 다운로드 한 파일에서 Uri를 전달하고 있습니다. 우리의 모습은 다음과 같습니다 : file:///storage/emulated/0/video/file.mp4. 재생을 시작하면 파일이로드되지 않습니다. 로그에서 예외 나 오류가 발생하지 않습니다. 누구든지 접근법을 제안하도록 도와 줄 수 있습니까? 필요한 경우 코드 스 니펫을 제공 하겠지만 어느 부분이 유용 할 지 확신하지 못합니다.파일에서 재생되지 않는 ExoPlayer

나는 플레이어 상태를 기록하는 ExoPlayer.Listener입니다. 내가 스트리밍하고 때

  1. 나는 IDLE부터 다양한 상태를 얻을 수 -> 버퍼링 -> READY -> 버퍼링 ... 등등 인터넷 연결 또는 미디어 EC를 종료하는 경우를 기반으로.
  2. 저장된 파일을 재생할 때 상태가 유휴 상태가되고 아무 일도 일어나지 않습니다. 내가 finish() 활동까지 영원히 검은 스크린이있다.

는 나는 그것을 파일, 스트림 파일에 나열된 미디어의 다음 부분을 찾을 수 있다는 FileNotFound 예외를 가지고 않았다 로컬 스토리지에서 스트림 파일을 재생하려고합니다. 문제는 플레이어 설정에 있다고 가정합니까? 확실하지 않습니다 ...

답변

2

로컬 (비디오/오디오) 파일에 다른 RendererBuilder을 사용해야합니다.

ExtractorRendererBuilder 당신이보고 있어야하는 것입니다.

+0

예! 고맙습니다! 나는 이미 알아 냈어. 같은 대답을 표시했다. – parohy

1

HlsRendererBuilder을 사용하고 있으니 .m3u8 재생 목록 파일을 전달해야합니다. 내가 DashRendererBuilder와 내 경험을 기반으로하지만, 나는 매우 비슷한 방식으로 작동 HlsRendererBuilder 믿습니다. 렌더러가 복수 .mp4 (또는 .ts) 개의 파일로 재생 목록을 파싱하려하지만 .mp4 파일 만 제공하고 있습니다.

재생 목록 파일을 포함하여 .m3u8 파일에 나열된 모든 파일을 다운로드 한 다음 (file:///storage/emulated/0/video/movie.m3u8)을 렌더러에 전달하십시오.

희망이 있습니다.

+1

네, 사실 당신이 옳습니다. '.m3u8' 파일이 재생 목록 파일임을 알고 있습니다. 나는 .mp4 파일을 렌더링 할 수있는 다른 렌더러를 설정해야한다는 것을 알고 있습니다. +1을 주겠다. 좋은 지적이다. – parohy