0

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 
deji202
  • 5
  • 2

1 Answers1

0

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.

xiaoming
  • 101
  • 2
  • This IsTypeSupported() output looks good. Is it possible for you to try the same stream with linux-x64x11? If linux-x64x11 works, can you check if your SbPlayer reports any error message via callbacks or if any SbPlayer* call fails? – xiaoming Jun 17 '17 at 15:45
  • I have tried running the linux-x64x11 from the same souce base and it works for live streams. I also noticed that the "ASYNC MEDIA SOURCE playback" is being used i.e. LoadMediaSource (LoadProgressive is called in my port). At this point, none of the SbPlayer has been called so no possible errors here. I think the main question is: is there a configuration that makes cobalt/youtube always use "PROGRESSIVE" instead of "ASYNC MEDIA SOURCE" playback? – deji202 Jun 21 '17 at 11:03
  • I have found the issue. It was related to some wrong implementation of the SbMediaGetAudioOutputCount and SbMediaGetAudioConfiguration API. I was somehow using the stubbed version. – deji202 Jun 21 '17 at 13:32