video-dev / hls.js

HLS.js is a JavaScript library that plays HLS in browsers with support for MSE.
https://hlsjs.video-dev.org/demo
Other
14.87k stars 2.58k forks source link

CHUNK_DEMUXER_ERROR_APPEND_FAILED when playing HEVC video stream #6377

Open randagia74 opened 6 months ago

randagia74 commented 6 months ago

What do you want to do with Hls.js?

Our goal is to have the H265 Low Latency HLS stream working with hls.js (URL REMOVED).

What have you tried so far?

We are trying to play H265 Low Latency HLS stream using HLS.JS 1.5.8 demo page. video stream: URL REMOVED/playlist.m3u8 HLS 1.5.8 demo page: https://hlsjs.video-dev.org/demo/?src=***URL REMOVED HLS JS v1.5.9-0.canary.10206 demo page: https://hlsjs-dev.video-dev.org/demo/?src=URL REMOVED***

result in both version 1.5.8 & 1.5.9: video does not play error in both version 1.5.8 & 1.5.9: The video could not be loaded, either because the server or network failed or because the format is not supported - CHUNK_DEMUXER_ERROR_APPEND_FAILED: RunSegmentParserLoop: stream parsing failed. append_window_start=0 append_window_end=inf

playlist:

EXTM3U

EXT-X-VERSION:3

EXT-X-MEDIA:TYPE=AUDIO,NAME="encoder_output_on_wowza",DEFAULT=YES,GROUP-ID="audioGroup",URI="chunklist_w1956238298_ao.m3u8"

EXT-X-STREAM-INF:BANDWIDTH=1017661,CODECS="hvc1.1.6.H123.B1.0.1.1,mp4a.40.2",RESOLUTION=1920x1080,AUDIO="audioGroup"

chunklist_w1956238298_vo.m3u8

chunklist sample:

EXTM3U

EXT-X-VERSION:6

EXT-X-SERVER-CONTROL:CAN-BLOCK-RELOAD=YES,PART-HOLD-BACK=2.0,CAN-SKIP-UNTIL=42.0

EXT-X-INDEPENDENT-SEGMENTS

EXT-X-TARGETDURATION:6

EXT-X-MEDIA-SEQUENCE:870

EXT-X-PART-INF:PART-TARGET=1.28

EXT-X-MAP:URI="header_w1956238298_vo_m3u8.cmfv"

EXT-X-PROGRAM-DATE-TIME:2024-04-24T13:32:39.787+00:00

EXTINF:9.7,

media_w1956238298_vo_870_m3u8.cmfv

EXT-X-PROGRAM-DATE-TIME:2024-04-24T13:32:39.798+00:00

EXTINF:2.88,

media_w1956238298_vo_871_m3u8.cmfv

EXT-X-PROGRAM-DATE-TIME:2024-04-24T13:32:52.374+00:00

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_872.0_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_872.1_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_872.2_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_872.3_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=0.64,URI="media_w1956238298_vo_872.4_m3u8.cmfv"

EXTINF:5.76,

media_w1956238298_vo_872_m3u8.cmfv

EXT-X-PROGRAM-DATE-TIME:2024-04-24T13:32:58.116+00:00

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_873.0_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_873.1_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_873.2_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_873.3_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=0.64,URI="media_w1956238298_vo_873.4_m3u8.cmfv"

EXTINF:5.76,

media_w1956238298_vo_873_m3u8.cmfv

EXT-X-PROGRAM-DATE-TIME:2024-04-24T13:33:03.880+00:00

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_874.0_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_874.1_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_874.2_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_874.3_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=0.64,URI="media_w1956238298_vo_874.4_m3u8.cmfv"

EXTINF:5.76,

media_w1956238298_vo_874_m3u8.cmfv

EXT-X-PROGRAM-DATE-TIME:2024-04-24T13:33:09.651+00:00

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_875.0_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_875.1_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PART:DURATION=1.28,URI="media_w1956238298_vo_875.2_m3u8.cmfv",INDEPENDENT=YES

EXT-X-PRELOAD-HINT:TYPE=PART,URI="media_w1956238298_vo_875.3_m3u8.cmfv"

When trying to play similar video without cmaf segments Video Stream: URL REMOVED/playlist.m3u8 HLS JS 1.5.8: https://hlsjs.video-dev.org/demo/?src=***URL REMOVED*** Error: no specific error, audio is fine, video does not play

HLS JS v1.5.9-0.canary.10206 demo page: https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2F***URL REMOVED*** Result: Video and Audio playing, video not smooth

playlist:

EXTM3U

EXT-X-VERSION:3

EXT-X-STREAM-INF:BANDWIDTH=1062484,CODECS="hvc1.1.6.H123.B1.0.1.1,mp4a.40.2",RESOLUTION=1920x1080

chunklist_w811046433.m3u8

chunklist:

EXTM3U

EXT-X-VERSION:3

EXT-X-TARGETDURATION:21

EXT-X-MEDIA-SEQUENCE:307

EXT-X-DISCONTINUITY-SEQUENCE:0

EXTINF:0.96,

media_w811046433_307.ts

EXTINF:8.64,

media_w811046433_308.ts

EXTINF:10.56,

media_w811046433_309.ts

live_158.log

robwalch commented 6 months ago

Hi @ randagia74,

Sorry to hear you are having trouble setting up a live stream.

For the CMAF stream there is clearly something wrong with the encoding and or packaging. We would expect any valid HLS asset to play in Safari, but this one does not. In HLS.js, besides the decode error (Error Group: PipelineStatus. Error Code: 16. Stacktrace: media/filters/chunk_demuxer.cc:1068 in the Chrome dev-tools Media panel) the audio and video Playlists Program Date Times do not align (playlist dates at the start or end are 30 seconds apart) and when I can get as far as media timestamps being parsed for both tracks those also appear to not align or be in sync (I see initPTS adjusted by 18 seconds).

Here are some steps to help triage stream issues:

  1. Does it play in Safari or QuickTime Player? (not for me)
  2. Does the HLS Tools mediastreamvalidator report any MUST fix issues? (many)
  3. Does the html report produced by hlsreport from the validation json output by mediastreamvalidator provide addition feedback?
  4. Does it play in HLS.js when you set "lowLatencyMode" to false? (same issues loading full segments so it's not just a problem with partial segments)
  5. Have you tried any other playback or media validation tools to verify the media is valid?
  6. Are you working with Wowza on any of these issues?

For the TS stream, HEVC in TS is not supported in v1.5. Support is coming in v1.6.0 via #5847 (that explains why it only succeeds in decoding something in dev). Note that HEVC in TS is not supported by Apple HLS clients.

This all points to multiple issues with the HLS packaging. The decode error and timestamp issues also suggest that there are issues with the video and audio encoding.

randagia74 commented 6 months ago

Hi Robwalch, timing issues might be due to the fact that the stream is a recorded video "badly" put in loop, but anyway I'll work on your suggested steps and let you know. Thanks