
좋은 아침입니다. HLS 스트리밍을 테스트 중이며 명령을 사용하여 간단한 재생 목록과 비디오 세그먼트를 만들었습니다 ffmpeg -i C:\Users\funny\Desktop\uscita\out.mp4 -vcodec libx264 -g 24 -hls_time 10 -hls_playlist_type vod -vsync 1 index1.m3u8
.
소스 비디오는 문제 없이 열리고 ffmpeg는 문제 없이 이를 index1, 즉 재생 목록 파일로 인코딩하고 index10 index11 index12는 3.ts입니다(비디오 길이는 26초에 불과함). 재생 목록 파일이 열리는 것을 알고 VLC를 설치했습니다. 그래서 .m3u8을 테스트할 수 있었지만 VLC로 열면 프로그램이 실행되기 시작하지만 아무것도 재생되지 않습니다. 참고로 재생목록도 마찬가지입니다.
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:12
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:11.500000,
index10.ts
#EXTINF:12.000000,
index11.ts
#EXTINF:2.500000,
index12.ts
#EXT-X-ENDLIST
답변1
tl;dr: 이는 VLC의 버그인 것 같습니다. 다른 플레이어를 사용하세요.
ffmpeg
질문에 표시된 대로 생성된 HLS 비디오 파일 세트로 이 문제를 재현할 수 있습니다 . ffmpeg 4.0.2 및 VLC 3.0.4에서 발생합니다.
증상:
VLC로 파일 을 열면 .m3u8
다음 오류 메시지가 나타납니다.
적응형 demux 오류: demuxer(nil) TLS를 생성하지 못했습니다.
디버그 로그는 VLC가 실제로 재생 목록을 성공적으로 읽고 TS 파일을 찾았지만 문제가 발생했음을 나타냅니다.
그러나 두 가지 모두를 사용하여 파일을 성공적으로 재생할 수 있습니다 ffplay
.MPlayer, 따라서 VLC에 결함이 있는 것 같습니다.
VLC 버그 추적기에는 비슷한 모양의 버그 보고서가 있지만 대부분은 상당히 오래되었으며 수정된 것으로 추정됩니다. 파일의 URL을 열어 HTTP를 통해 HLS 스트림을 재생할 수 있었기 .m3u8
때문에 버그는 다운로드한 HLS 스트림에만 적용되는 것 같습니다. 로컬로 다운로드한 파일을 재생하는 것은 .m3u8
VLC의 우선순위가 높지 않으므로 다른 플레이어를 사용하세요.
답변2
VLC는 'EXT-X' 지시문이 포함된 m3u8 파일을 처리할 수 없는 것 같습니다. 아마도 이것은 오늘날까지도 아직 해결되지 않은 VLC 버그(다른 곳에서 언급한 바와 같이)일 것입니다.
최선의 선택은 다음과 같습니다.
- 파일 을 편집
.m3u8
하고 EXT-X 줄을 삭제합니다(단, EXTINF 줄은 유지하세요). 그러면 VLC로 재생 목록을 재생할 수 있습니다. .m3u8
파일을 있는 그대로 재생하려면 다른 응용프로그램을 사용하십시오 .ffplay
예를 들어 그것을 재생할 것입니다.
답변3
누군가가 여전히 그것에 대한 정보가 필요한 경우를 대비하여.
mpegts 청크의 "content-type" 헤더를 확인하세요. "video/mp2t"여야 합니다.