-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
When I use a HEVC 256 stream, VLC can play normally, but HLS cannot play normally #6895
Comments
I tested this issue on the master branch. |
HLS.js does not support everything that VLC does. Please provide a better reason for triaging the included media. The included error details suggest that the segments do not include media in a format supported by HLS.js. How was it encoded and packaged? |
Thank you for your response. I believe the primary reason the stream fails to play is due to data loss in the video stream. However, I am not entirely sure about the root cause of the data loss. My role is simply to work with the given stream and ensure it plays correctly. I did notice that when I commented out the line this.resetTransmuxer(); in the updateLevelTiming function within the base-stream-controller.ts class, the stream was able to play normally in hls.js. This leads me to believe that hls.js has the capability to handle this type of stream. However, its compatibility with certain erroneous streams could still be improved. |
HEVC in M2TS is a community contributed feature made up of these PRs (CC @devoldemar):
Provide more information about the asset encoding and packaging, including any identifiable out-of-spec features. Try triaging the issue further in HLS.js. Why does HLS.js find no media in "6719b8152cdfb78408001bb7(1).ts" (set hls.js/src/demux/video/hevc-video-parser.ts Lines 121 to 130 in 1dbc3ce
should probably be: // VPS
case 32:
push = true;
track.params ||= {};
Object.assign(track.params, this.readVPS(unit.data));
this.initVPS = unit.data;
track.vps = [unit.data];
break; Then hls.js/src/demux/video/hevc-video-parser.ts Lines 132 to 146 in 1dbc3ce
should always update track params (adding them if necessary) // SPS
case 33:
push = true;
spsfound = true;
if (
track.vps !== undefined &&
track.vps[0] !== this.initVPS &&
track.sps !== undefined &&
!this.matchSPS(track.sps[0], unit.data)
) {
this.initVPS = track.vps[0];
track.sps = track.pps = undefined;
}
if (!track.sps) {
track.params ||= {}; And finally hls.js/src/demux/video/hevc-video-parser.ts Lines 171 to 175 in 1dbc3ce
should also always update track params (adding them if necessary) // PPS
case 34:
push = true;
if (!track.pps) {
track.params ||= {}; |
What version of Hls.js are you using?
1.6.0
What browser (including version) are you using?
Chrome version 131.0.6778.86 (arm64)
What OS (including version) are you using?
mac
Test stream
https://schoolfighting.oss-cn-hangzhou.aliyuncs.com/test/teshh265/output.m3u8
Configuration
Additional player setup steps
No response
Checklist
Steps to reproduce
Expected behaviour
Play normally
What actually happened?
Interface black screen
Console output
Chrome media internals output
No response
The text was updated successfully, but these errors were encountered: