-
Notifications
You must be signed in to change notification settings - Fork 93
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
Support Multi-manifest Streams #56
Comments
@Kethsar just got this issue on a stream for the first time
and the googleurl says edit: just happened again and it uses |
Here's a script that can be used to stream to YouTube in a way that can occasionally reproduce the issue. It simulates disconnections, resolution / framerate changes, and aspect ratio changes. Still fairly inconsistent; YouTube may continue serving reencoded fragments under the same manifest / broadcast ID despite parameter changes on the streamer's side; you may need to run it a second time or adjust delays. It might be the case that it just doesn't run long enough for YouTube to serve a new manifest or for the first one to expire — I've seen at least one stream where the first manifest went for two minutes before changing over. I think some incremented broadcast IDs may be from the streamer configuring their tools before going live. Got one instance where the broadcast started at 2 but the resulting VOD had the same length as the download. |
It appears occasionally youtube will actually create a new manifest for a Stream. That, or the streamer can by messing with something. Currently ytarchive fails when this happens as the new manifest resets the fragment number back to 0.
The manifest and googlevideo URLs will have an id parameter set to
<videoid>.<manifest number>
. Check this parameter and keep track of the manifest number, resetting the fragment number as necessary.Also turns out a new manifest can end up with different qualities. So a stream starting with up to 1080p can end up only having up to 720p if the streamer decided to reduce their quality without making a new frame.
This may require muxing for each manifest rather than appending to the stream as a whole.
EDIT: Turns out the manifest ID is also in the player response, under
playabilityStatus.liveStreamability.liveStreamabilityRenderer.broadcastId
The text was updated successfully, but these errors were encountered: