http-streaming icon indicating copy to clipboard operation
http-streaming copied to clipboard

Error when switching bitrate in a HLS stream with AES-128 encryption

Open dagalvao opened this issue 2 years ago • 5 comments

Please do not delete the template, by filling out the required information we can investigate your issue more quickly.

Before opening an issue see if your problem can be resolved with the troubleshooting guide.

Description

When switching to a different bitrate in a HLS stream with AES-128 encryption, VideoJS stops playback and throws error: "video append of 86718b failed for segment #0 in playlist 0-QualityLevels(400000)/Manifest(video,format=m3u8-cmaf,encryption=cbc)"

Sometimes, if you load the player again, the bitrate switching will work as intended. If you clear the cache and refresh the page, the issue always occurs on the first bitrate switching.

Sources

https://videojs-http-streaming.netlify.app/?debug=false&autoplay=false&muted=true&fluid=false&minified=false&sync-workers=false&liveui=false&llhls=true&url=https%3A%2F%2Fdagalvaomediaaccount-uswc.streaming.media.azure.net%2F72a9e630-9517-46dc-a07a-2445b9a01fcb%2F6f7b1218-01dd-429e-9eee-30a21b4b4de6.ism%2Fmanifest(format%3Dm3u8-cmaf%2Cencryption%3Dcbc).m3u8&type=application%2Fx-mpegURL&keysystems=&buffer-water=true&exact-manifest-timings=false&pixel-diff-selector=false&network-info=false&dts-offset=false&override-native=true&preload=auto&mirror-source=true

Steps to reproduce

Explain in detail the exact steps necessary to reproduce the issue.

  1. Load URL: https://videojs-http-streaming.netlify.app/?debug=false&autoplay=false&muted=true&fluid=false&minified=false&sync-workers=false&liveui=false&llhls=true&url=https%3A%2F%2Fdagalvaomediaaccount-uswc.streaming.media.azure.net%2F72a9e630-9517-46dc-a07a-2445b9a01fcb%2F6f7b1218-01dd-429e-9eee-30a21b4b4de6.ism%2Fmanifest(format%3Dm3u8-cmaf%2Cencryption%3Dcbc).m3u8&type=application%2Fx-mpegURL&keysystems=&buffer-water=true&exact-manifest-timings=false&pixel-diff-selector=false&network-info=false&dts-offset=false&override-native=true&preload=auto&mirror-source=true
  2. Press play
  3. Observe playback
  4. Click gear icon and switch bitrate from 360p to 540p
  5. Observe as playback stops, and an error pops up

Results

Expected

Video bitrate switches, and playback continues.

Error output

video.core.js:249 VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) The media could not be loaded, either because the server or network failed or because the format is not supported. MediaErrorcode: 4message: "The media could not be loaded, either because the server or network failed or because the format is not supported."[[Prototype]]: Object (anonymous) @ video.core.js:249

video.core.js:249 VIDEOJS: ERROR: (CODE:3 MEDIA_ERR_DECODE) video append of 86718b failed for segment #0 in playlist 0-QualityLevels(400000)/Manifest(video,format=m3u8-cmaf,encryption=cbc) MediaErrorcode: 3message: "video append of 86718b failed for segment #0 in playlist 0-QualityLevels(400000)/Manifest(video,format=m3u8-cmaf,encryption=cbc)"[[Prototype]]: Object (anonymous) @ video.core.js:249

video.core.js:249 VIDEOJS: ERROR: (CODE:3 MEDIA_ERR_DECODE) The media playback was aborted due to a corruption problem or because the media used features your browser did not support. MediaError

image

Additional Information

videojs-http-streaming version

Version in https://videojs-http-streaming.netlify.app/

Browsers

Chrome 100.0.4896.75 and Edge 100.0.1185.39

dagalvao avatar Apr 20 '22 00:04 dagalvao

Hey! We've detected some video files in a comment on this issue. If you'd like to permanently archive these videos and tie them to this project, a maintainer of the project can reply to this issue with the following commands:

  • for https://videojs-http-streaming.netlify.app/?debug=false&autoplay=false&muted=true&fluid=false&minified=false&sync-workers=false&liveui=false&llhls=true&url=https%3A%2F%2Fdagalvaomediaaccount-uswc.streaming.media.azure.net%2F72a9e630-9517-46dc-a07a-2445b9a01fcb%2F6f7b1218-01dd-429e-9eee-30a21b4b4de6.ism%2Fmanifest(format%3Dm3u8-cmaf%2Cencryption%3Dcbc).m3u8: say @video-archivist-bot save 0j27ew

video-archivist-bot avatar Apr 20 '22 00:04 video-archivist-bot

👋 Thanks for opening your first issue here! 👋

If you're reporting a 🐞 bug, please make sure you include steps to reproduce it. We get a lot of issues on this repo, so please be patient and we will get back to you as soon as we can. To help make it easier for us to investigate your issue, please follow the contributing guidelines.

welcome[bot] avatar Apr 20 '22 00:04 welcome[bot]

same here with non-encrypted streams https://videojs-http-streaming.netlify.app/?debug=false&autoplay=false&muted=false&fluid=false&minified=false&sync-workers=false&liveui=true&llhls=false&url=https%3A%2F%2Farte-cmafhls.akamaized.net%2Fam%2Fcmaf-concert-webonly%2F108000%2F108500%2F108548-026-A_VO%2F220610224755%2F108548-026-A_VO_XQ.m3u8&type=application%2Fx-mpegURL&keysystems=&buffer-water=false&exact-manifest-timings=false&pixel-diff-selector=false&network-info=false&dts-offset=false&override-native=true&preload=auto&mirror-source=true To reproduce : empty your cache, and change quality immediately after the stream has begun, this is the best way to optimize chances to reproduce.

privaloops avatar May 05 '22 09:05 privaloops

The same thing happens to me but with DRM content in Dash and HLS format.

It always happens at the beginning of the video, but it also happens during playback if I play a bit with the bitrate change.

Logs:

VIDEOJS: DEBUG: VHS: SourceUpdater > changing videoBuffer codec from avc1.64001E to avc1.64001F

VIDEOJS: DEBUG: VHS: SegmentLoader[main] > timinginfo: video - start - 0

VIDEOJS: DEBUG: VHS: SourceUpdater > Appending segment 0's 357204 bytes to videoBuffer

VIDEOJS: DEBUG: VHS: SegmentLoader[main] > WAITING -> APPENDING

VIDEOJS: ERROR: (CODE:3 MEDIA_ERR_DECODE) The media playback was aborted due to a corruption problem or because the media used features your browser did not support. 

VIDEOJS: DEBUG: VHS: SegmentLoader[audio] > Aborting segment [0/52] segment start/end [0 => 3.9938321995464854] startOfSegment [0] duration [3.9938321995464854] timeline [0] selected by [getMediaInfoForTime (currentTime 0.391814)] playlist [0-placeholder-uri-AUDIO-audio-eng]

VIDEOJS: DEBUG: VHS: SegmentLoader[audio] > WAITING -> READY

VIDEOJS: DEBUG: VHS: SegmentLoader[main] > Received non QUOTA_EXCEEDED_ERR on append 

VIDEOJS: DEBUG: VHS: SegmentLoader[main] > error occurred: video append of 357204b failed for segment #0 in playlist 1-placeholder-uri-1

VIDEOJS: DEBUG: VHS: SegmentLoader[main] > APPENDING -> READY

videojs-http-streaming.netlify.app Load URL: https://cutt.ly/YHDgGSQ

fparappa avatar May 20 '22 23:05 fparappa

Hi, this is also a blocker for us. Do we have any kind of workaround either on the JS side or by changing some settings on our encoding workflows ?

PascalThuet avatar Jun 08 '22 06:06 PascalThuet