Cobalt 端口中的媒体源与渐进式媒体
Media source vs. progressive media in Cobalt port
我的 cobalt 端口目前无法在 Youtube 上播放直播。我总是收到 "Playback Error" 页面。
经过一些调查,似乎在 HTMLMediaElement::LoadResource 中,我们总是尝试调用 LoadProgressive,而 linux-x11 端口总是调用 LoadMediaSource。
我缺少配置吗?如果相关,我可以提供调试日志。
我在 src/starboard/shared/starboard/media/media_can_play_mime_and_key_systems.cc.
中使用 SbMediaCanPlayMimeAndKeySystem 的示例右舷实现
请求的日志如下:
[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
这可能是您的 SbMediaCanPlayMimeAndKeySystem() 实现中的一个问题。
在播放任何视频之前,您应该会在日志中看到一些查询,例如:
[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
如果你能把这样的日志贴在这里,我可能会有更好的猜测。
我的 cobalt 端口目前无法在 Youtube 上播放直播。我总是收到 "Playback Error" 页面。 经过一些调查,似乎在 HTMLMediaElement::LoadResource 中,我们总是尝试调用 LoadProgressive,而 linux-x11 端口总是调用 LoadMediaSource。 我缺少配置吗?如果相关,我可以提供调试日志。
我在 src/starboard/shared/starboard/media/media_can_play_mime_and_key_systems.cc.
中使用 SbMediaCanPlayMimeAndKeySystem 的示例右舷实现请求的日志如下:
[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
这可能是您的 SbMediaCanPlayMimeAndKeySystem() 实现中的一个问题。
在播放任何视频之前,您应该会在日志中看到一些查询,例如:
[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
如果你能把这样的日志贴在这里,我可能会有更好的猜测。