Search code examples
c++youtubecobaltmse

Media source vs. progressive media in Cobalt port


My port of cobalt is currently not able to play live streams on Youtube. I always receive the "Playback Error" page. After some investigation, it seems that in the HTMLMediaElement::LoadResource, we always try to call LoadProgressive whereas the linux-x11 port always calls LoadMediaSource. Am I missing a configuration? I can provide debug logs if relevant.

I am using the example starboard implementation of SbMediaCanPlayMimeAndKeySystem in src/starboard/shared/starboard/media/media_can_play_mime_and_key_systems.cc.

Below are the requested logs:

[0616/124741:INFO:url_utils.cc(124)] Update URL to https://www.youtube.com/tv#/search?resume
[0616/124742:INFO:fetcher_factory.cc(94)] Fetching: https://clients1.google.com/complete/search?client=yout[...]
[0616/124745:INFO:url_utils.cc(124)] Update URL to https://www.youtube.com/tv#/watch/video/idle?v=ANM-dq5USTc&resume
[0616/124745:WARNING:html_media_element.cc(837)] HTMLMediaElement::LoadInternal, nothing to load
[0616/124746:INFO:media_source.cc(331)] MediaSource::IsTypeSupported(video/mp4; codecs="avc1.4d4015"; width=426; height=240; framerate=30; bitrate=258000) -> probably/true
[0616/124746:INFO:media_source.cc(331)] MediaSource::IsTypeSupported(video/mp4; codecs="avc1.4d401e"; width=640; height=360; framerate=30; bitrate=646000) -> probably/true
[0616/124746:INFO:media_source.cc(331)] MediaSource::IsTypeSupported(video/mp4; codecs="avc1.4d401f"; width=854; height=480; framerate=30; bitrate=1171000) -> probably/true
[0616/124746:INFO:media_source.cc(331)] MediaSource::IsTypeSupported(video/mp4; codecs="avc1.4d401f"; width=1280; height=720; framerate=30; bitrate=2326000) -> probably/true
[0616/124746:INFO:media_source.cc(322)] MediaSource::IsTypeSupported(audio/mp4; codecs="mp4a.40.5") -> not supported/false
[0616/124746:INFO:media_source.cc(322)] MediaSource::IsTypeSupported(audio/mp4; codecs="mp4a.40.2") -> not supported/false
[0616/124746:INFO:media_source.cc(331)] MediaSource::IsTypeSupported(video/mp4; codecs="avc1.42c00b"; width=256; height=144; framerate=30; bitrate=124000) -> probably/true
[0616/124746:INFO:media_source.cc(322)] MediaSource::IsTypeSupported(video/webm; codecs="vp9"; width=426; height=240; framerate=30; bitrate=236500) -> not supported/false
[0616/124746:INFO:media_source.cc(322)] MediaSource::IsTypeSupported(video/webm; codecs="vp9"; width=640; height=360; framerate=30; bitrate=421720) -> not supported/false
[0616/124746:INFO:media_source.cc(322)] MediaSource::IsTypeSupported(video/webm; codecs="vp9"; width=854; height=480; framerate=30; bitrate=768640) -> not supported/false
[0616/124746:INFO:media_source.cc(322)] MediaSource::IsTypeSupported(video/webm; codecs="vp9"; width=1280; height=720; framerate=30; bitrate=1521280) -> not supported/false
[0616/124746:INFO:html_media_element.cc(213)] HTMLMediaElement::canPlayType(video/mp4; codecs="avc1.42001E, mp4a.40.2", ) -> probably
[0616/124746:INFO:html_media_element.cc(213)] HTMLMediaElement::canPlayType(application/x-mpegURL, ) -> maybe
[0616/124746:INFO:fetcher_factory.cc(94)] Fetching: https://s.youtube.com/api/stats/qoe?event=streamingstat[...]
[0616/124746:INFO:html_media_element.cc(213)] HTMLMediaElement::canPlayType(application/x-mpegURL, ) -> maybe
[0616/124746:INFO:html_media_element.cc(213)] HTMLMediaElement::canPlayType(application/x-mpegURL, ) -> maybe
[0616/124746:INFO:fetcher_factory.cc(94)] Fetching: https://www.youtube.com/live_204?ns=yt&el=leanback&eurl[...]
[0616/124746:WARNING:html_media_element.cc(837)] HTMLMediaElement::LoadInternal, nothing to load
[0616/124746:INFO:html_media_element.cc(881)] HTMLMediaElement::LoadResource(https://manifest.googlevideo.com/api/manifest/hls_variant/file/index.m3u8?dover=8&ip=195.70.19.74&requiressl=yes&playlist_type=DVR&signature=0F9647CBEA834556179171D3A3FD2FEAEA373C3F.3DFC9F0879094D2E779724380C28DB9C63DDF9CE&gcr=ch&maudio=1&expire=1497632026&id=ANM-dq5USTc.6&ipbits=0&keepalive=yes&source=yt_live_broadcast&ratebypass=yes&ei=urhDWYCqDYuscvuaqJgN&itag=0&go=1&sparams=ei%2Cgcr%2Cgo%2Cid%2Cip%2Cipbits%2Citag%2Cmaudio%2Cplaylist_type%2Cratebypass%2Crequiressl%2Csource%2Cexpire&key=yt6&cpn=1nZ-rQ6kQLN1TFx9&ibw=1369843&c=TVHTML5&cver=5.20160729&ptk=ChannelsTVNigeria&oid=dxjKbku-XsIc5f9auPNeFQ&ptchn=EXGDNclvmg6RW0vipJYsTQ&pltype=contentlive, , 
[0616/124746:INFO:html_media_element.cc(873)] HTMLMediaElement::LoadInternal, using 'src' attribute url
[0616/124746:INFO:shell_demuxer.cc(210)] this is a PROGRESSIVE playback.
[2508:1202853151620:WARNING:thread_set_name.cc(36)] Thread name "ShellDemuxerBlockingThread" was truncated to "ShellDemuxerBlo"
[0616/124746:WARNING:html_media_element.cc(990)] HTMLMediaElement::NoneSupported() error.
[0616/124746:WARNING:html_media_element.cc(837)] HTMLMediaElement::LoadInternal, nothing to load
[0616/124746:WARNING:html_media_element.cc(837)] HTMLMediaElement::LoadInternal, nothing to load
[0616/124746:INFO:html_media_element.cc(881)] HTMLMediaElement::LoadResource(https://manifest.googlevideo.com/api/manifest/hls_variant/file/index.m3u8?dover=8&ip=195.70.19.74&requiressl=yes&playlist_type=DVR&signature=0F9647CBEA834556179171D3A3FD2FEAEA373C3F.3DFC9F0879094D2E779724380C28DB9C63DDF9CE&gcr=ch&maudio=1&expire=1497632026&id=ANM-dq5USTc.6&ipbits=0&keepalive=yes&source=yt_live_broadcast&ratebypass=yes&ei=urhDWYCqDYuscvuaqJgN&itag=0&go=1&sparams=ei%2Cgcr%2Cgo%2Cid%2Cip%2Cipbits%2Citag%2Cmaudio%2Cplaylist_type%2Cratebypass%2Crequiressl%2Csource%2Cexpire&key=yt6&cpn=1nZ-rQ6kQLN1TFx9&ibw=1369843&c=TVHTML5&cver=5.20160729&ptk=ChannelsTVNigeria&oid=dxjKbku-XsIc5f9auPNeFQ&ptchn=EXGDNclvmg6RW0vipJYsTQ&pltype=contentlive&playerfallback=1, , 
[0616/124746:INFO:shell_demuxer.cc(210)] this is a PROGRESSIVE playback.
[0616/124746:INFO:html_media_element.cc(873)] HTMLMediaElement::LoadInternal, using 'src' attribute url
[2513:1202853318166:WARNING:thread_set_name.cc(36)] Thread name "ShellDemuxerBlockingThread" was truncated to "ShellDemuxerBlo"
[0616/124746:WARNING:html_media_element.cc(990)] HTMLMediaElement::NoneSupported() error.
[0616/124746:INFO:fetcher_factory.cc(94)] Fetching: https://s.youtube.com/api/stats/qoe?event=streamingstat[...]
[0616/124746:INFO:fetcher_factory.cc(94)] Fetching: https://www.youtube.com/live_204?ns=yt&el=leanback&eurl[...]
[0616/124746:WARNING:html_media_element.cc(837)] HTMLMediaElement::LoadInternal, nothing to load 

Solution

  • It could be an issue in your SbMediaCanPlayMimeAndKeySystem() implementation.

    Before playing any video, you should see a few queries in the log like:

    [0615/083711:INFO:media_source.cc(331)] MediaSource::IsTypeSupported(video/mp4; codecs="avc1.4d401e"; width=640) -> probably/true
    [0615/083711:INFO:media_source.cc(322)] MediaSource::IsTypeSupported(video/mp4; codecs="avc1.4d401e"; width=99999) -> not supported/false
    [0615/083711:INFO:media_source.cc(322)] MediaSource::IsTypeSupported(video/webm; codecs="vp9") -> not supported/false
    [0615/083711:INFO:media_source.cc(331)] MediaSource::IsTypeSupported(video/mp4; codecs="avc1.4d401e"; height=360) -> probably/true
    [0615/083711:INFO:media_source.cc(322)] MediaSource::IsTypeSupported(video/mp4; codecs="avc1.4d401e"; height=99999) -> not supported/false
    [0615/083711:INFO:media_source.cc(322)] MediaSource::IsTypeSupported(video/webm; codecs="vp9") -> not supported/false
    [0615/083711:INFO:media_source.cc(331)] MediaSource::IsTypeSupported(video/mp4; codecs="avc1.4d401e"; framerate=30) -> probably/true
    [0615/083711:INFO:media_source.cc(322)] MediaSource::IsTypeSupported(video/mp4; codecs="avc1.4d401e"; framerate=9999) -> not supported/false
    [0615/083711:INFO:media_source.cc(322)] MediaSource::IsTypeSupported(video/webm; codecs="vp9") -> not supported/false
    

    If you could paste such log here, I may be able to have a better guess.