3

尝试在 Chromecast 上播放 YouTube 视频,而不是使用 YouTube 接收器,而只是使用 iframe YouTube api。当接收器 url 在桌面 chrome 浏览器中加载时,它可以正常播放,但是当相同的 url 加载到 Chromecast 上时,我收到消息“此视频当前不可用 - 了解更多”。如果我一直试图让小部件在创建后播放不同的视频,它有时还会显示“视频播放需要 Adob​​e Flash Player”。

该小部件是使用新的 YT.Player 在 onYouTubeIframeAPIReady() 回调中创建的,如文档中所示。也许我很困惑,但我认为 iframe api 是基于 html5,而不是基于 flash。有没有人成功地实现了这一点,或者 Chromecast 不支持这一点,因此出现了奇怪的行为?我也偶然发现了这个http://www.youtube.com/html5

4

3 回答 3

6

这是我目前在接收器上使用的代码。消息处理(两个方向)是命中注定的,我目前正在努力解决这个问题……但是 iFrame 库的加载、视频的嵌入等一切正常。如果它对您不起作用,我们可以开始调查您的设置可能有何不同。我试图在可能有帮助的地方添加评论。

<html>
<head>
<script src="https://www.gstatic.com/cast/js/receiver/1.0/cast_receiver.js">
</script>
<script type="text/javascript">
 // first create our receiver object and our channel handler
        var receiver = new cast.receiver.Receiver('{YOUR_APP_ID}', ['ChromecastYoutube'],"",5);
        var ytChannelHandler = new cast.receiver.ChannelHandler('ChromecastYoutube'); //  'using 'ChromecastYoutube' as my dev namespace. Wouldn't really be that in production.
        ytChannelHandler.addChannelFactory(receiver.createChannelFactory('ChromecastYoutube'));
        ytChannelHandler.addEventListener(
                cast.receiver.Channel.EventType.MESSAGE,
                onMessage.bind(this)
        );

        receiver.start();

        window.addEventListener('load', function() { // we won't try to load the iframe libraries until the chromecast window is fully loaded.
                var tag = document.createElement('script');
                tag.src = "https://www.youtube.com/iframe_api";
                var firstScriptTag = document.getElementsByTagName('script')[0];
                firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
        });

        var player;
        function onYouTubeIframeAPIReady() {
                player = new YT.Player('player', {
                        height: '562',
                        width: '1000',
                        videoId: 'jLlSqucqXB0',
                        playerVars: { 'autoplay': 0, 'controls': 0 },
                        events: {
                                'onReady': onPlayerReady,
                                'onPlayerStateChange': onStateChange
                        }
                });
        }

        function onPlayerReady(event) {
                document.getElementById('annotation').innerHTML="We're ready to go";
        }

        function onStateChange(event) {
                switch (event.data) {
                        case YT.PlayerState.ENDED:
                                // TODO let sender know we're done, then close casting 
                                break;
                        case YT.PlayerState.PLAYING:
                                // TODO let sender know we're playing 
                                break;
                        case YT.PlayerState.PAUSED:
                                // TODO let sender know we're paused 
                                break;
                }
        }

        function onMessage(event) { // currently, any one of these will work, but subsequent ones seem to falter. Investigating...
                ytBindings={"playVideo":player.playVideo(),"pauseVideo":player.pauseVideo(),"stopVideo":player.stopVideo(),"getStatus":player.getPlayerState()}
                ytBindings[event.message];
        }


</script>
<style>
#wrapper {
        width: 1000px;
        margin: 10px auto;
        text-align: center;
}
#annotation {
        color: #ffffcc;
        font-size: 200%;
        margin-top:25px;
}
</style>
</head>
<body>
<div id="wrapper">
<div id="player"></div>
<div id="annotation"></div>
</div>
</body>
</html>
于 2013-09-04T16:10:07.407 回答
0

当前行为:现在似乎已使用 Chromecast 固件 16041 修复,并且在 Chromecast 设置期间是否正确设置了国家代码。在此处查看最新评论https://code.google.com/p/gdata-issues/issues/detail?id=5923

旧答案:这是问题的根本原因:https: //support.google.com/chromecast/answer/2995235?hl=en 某些视频可能无法使用 Chromecast 播放。私人视频、直播内容和未获准用于移动播放的视频将无法与 Chromecast 一起使用。 希望这会改变,杀死一个主要的 Chromecast 用例。

于 2014-02-07T07:42:18.853 回答
0

我也遇到了这个问题,发现原因是我在视频开始之前使用 html5 音频播放一些音效。删除音效使 youtube 播放器再次工作。

于 2017-12-29T17:32:58.013 回答