[Bug 768460] dashdemux: Problems playing youtube streams
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Wed Jul 6 01:33:23 UTC 2016
https://bugzilla.gnome.org/show_bug.cgi?id=768460
Thiago Sousa Santos <thiagossantos at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |thiagossantos at gmail.com
--- Comment #1 from Thiago Sousa Santos <thiagossantos at gmail.com> ---
(In reply to codebythepound from comment #0)
> Created attachment 330919 [details]
> MPD
>
> Using source from 1.9.0.1.
>
> Youtube uses mpeg-dash as one method to distribute its live streams, and I
> am trying to use gstreamer to play a stream directly from youtube servers.
> Attached is part of the MPD for one of these streams. I am assuming the MPD
> is valid. It is from the live stream here:
> https://www.youtube.com/watch?v=njCDZWTI-xg. Here is a link to an MPD for
> this file:
> https://manifest.googlevideo.com/api/manifest/dash/playlist_type/DVR/key/yt6/
> upn/OlXrWwK-70c/source/yt_live_broadcast/sparams/as,gcr,hfr,id,ip,ipbits,
> itag,playlist_type,requiressl,source,expire/gcr/us/signature/
> 80C14B2024BE29F75C1DBF68CDBDEF411A632D5E.
> 893DDA5444737864A0068A89270AB08F26ACF9D3/fexp/9407060,9416126,9416891,
> 9422596,9428398,9431012,9433096,9433223,9433946,9435526,9435876,9437066,
> 9437553,9437742,9439652,9440376/ip/216.228.112.21/requiressl/yes/itag/0/as/
> fmp4_audio_clear,webm_audio_clear,webm2_audio_clear,fmp4_sd_hd_clear,
> webm2_sd_hd_clear/expire/1467351997/id/njCDZWTI-xg.54/sver/3/ipbits/0/hfr/1
>
How exactly to do you run this? I get a forbidden when trying. Is it region
restricted?
> I was hoping to get your help with several issues relating to dashdemux when
> dealing with these streams:
>
> 1) Youtube puts the <SegmentTimeline> in the <Period> but outside of any
> <AdaptdationSet>. I assume this means that this timeline should be valid
> for all future <SegmentList>'s. The current parser doesn't seem to like
> this as after the SegmentList is parsed, I get the error "segment has
> neither duration nor timeline" printed from
> gst_mpdparser_parse_mult_seg_base_type_ext().
>
> To get around this for the time being I put a huge hack in
> gst_mpdparser_parse_segment_timeline_node that will store any timelines that
> have been parsed (in these files - only one) and add them to any node that
> did not contain a timeline in the method
> gst_mpdparser_parse_mult_seg_base_type_ext(). This gets me past this
> problem for the time being, but then I ran into the next issue (which may be
> caused by doing this, I'm not sure).
This is close to the real solution. Stuff that is under the <Period> should be
considered default for their children that don't have that same node as a
child. I'd prefer here to just reference the parent's node when needed instead
of doing a copy.
>
> 2) gst_mpd_client_get_period_index_at_time () iterates through the periods
> to try to find one that is valid for the current TOD. The 1 period in the
> file is checked and has a correct start time, but for some reason has a
> duration of -1. This causes the calculation to fail and return G_MAXUINT
> causing dashdemux to think there are no streams valid for the current time.
> I'm not sure if -1 is an error or means "plays forever" - but I worked
> around this issue by checking if the duration was -1, and if so calling it a
> valid period.
This is a live stream, is it detected as such? The period duration of -1 might
just mean that it is infinite/unknown as it is live.
Would you mind sharing a GST_DEBUG=*adaptive*:6,dashdemux:6,uridownloader:6 log
of this issue? It would be easier to understand why it fails after you apply
your hack.
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list