-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Workaround for streams with hvc1.0.4 codec signalling? #4966
Comments
After further looking into this I assume this could be achieved using a SEGMENT type response filter and an external library to modify the mp4 boxes. Is there a way to further differentiate between initialization and "regular" segments besides looking at specifics of the response URL? |
A response filter is probably the correct way to handle this on your end, yes. We could potentially convert the content on our end, like how we handle TS transmuxing and such, but this might be too niche to be worth building into the player, I'm not sure. Anyway, as you said you're going to have to look at the URL. Unfortunately there's no built-in way to tell if a segment is an init segment or not from the filter end; I would say we could add a new I guess we could add a new field to the |
Thanks for looking into this. It is niche and I guess usually one would opt to "fix" the content instead of having a workaround in the player. While there are some options to guess the segment type, e.g. file naming, content-type or additional headers but they all require a pretty strict setup on content or delivery side which might not be possible. I agree breaking backwards compatibility is not an option and using the response object for this is not great. Would it be conceivable to have an additional optional subtype parameter for response filters instead? |
Yeah, I guess that would work... Okay, I have a design in mind. I'm thinking of an optional paramater of a new I'll put this together now, while I'm thinking about it. Shouldn't take too long. |
This adds an optional parameter to request and response filters, of a new enum called AdvancedRequestType. This enum describes request types that are subtypes of the basic types. For example, INIT_SEGMENT is a type of SEGMENT. This gives users more information about the type of the request, while maintaining backwards compatibility. Closes shaka-project#4966
This adds an optional parameter to request and response filters, of a new enum called AdvancedRequestType. This enum describes request types that are subtypes of the basic types. For example, INIT_SEGMENT is a type of SEGMENT. This gives users more information about the type of the request, while maintaining backwards compatibility. Closes #4966
Have you read the Tutorials? Yes
Have you read the FAQ and checked for duplicate open issues? Yes
What version of Shaka Player are you using? 4.3.4
We encountered problems with H.265 DASH streams using "hvc1.0.4..." codec config. Streams using "hvc1.2.4" work on the other hand. Both codec configs are spec compliant in my understanding.
hvc1.0.4 indicates an unknown general_profile_idc and Main10 general_profile_compatibility_flag set
hvc1.2.4 indicates an Main10 general_profile_idc and Main10 general_profile_compatibility_flag set
Modifying the codec string in the manifest alone is not sufficient and initialization segments have to be updated as well changing just 1 bit for the general_profile_idc in moov/trak/mdia/minf/stbl/stsd/(hvc1|encv)/hvcC
https://d3sw8jxc8xznn6.cloudfront.net/hvc1.0.4/stream.mpd
https://d3sw8jxc8xznn6.cloudfront.net/hvc1.2.4/stream.mpd
You should be able to reproduce this behaviour using the demo player with Chrome on Windows.
Is there any way to modify this during initialization e.g. using a response filter? Or is this something that should be addressed internally in content workarounds?
This applies to other codec configs without proper profile idc as well, e.g. Main Profile "hvc1.0.2" or "hvc1.0.6" while other odd configs like "hvc1.1.0" and "hvc1.2.0" with unset profile compatibility flags work.
Thank you!
The text was updated successfully, but these errors were encountered: