YouTube API播放器不播放某些视频



错误代码0在YouTube Flash API中意味着什么?当尝试使用API播放某些视频时会发生这种情况。API参考中解释了其他错误代码,但没有解释错误代码0。

我如何让YouTube播放器播放所有视频,就像在YouTube播放器演示中一样?

FLA和SWF文件:https://s3.amazonaws.com/YouTubeAPIError0/YouTubeAPIError0.zip

package {
    import flash.system.Security;
    import flash.display.MovieClip;
    import flash.display.Loader;
    import flash.events.Event;
    import flash.net.URLRequest;
    import fl.data.DataProvider;
    import fl.controls.ComboBox;
    import fl.controls.TextArea;
    public class YouTubeAS3 extends MovieClip {
        public var VidHolder:MovieClip;
        public var VidSelection:ComboBox;
        public var traceArea:TextArea;
        private var player:Object;
        private var loader:Loader;
        private var vidCollection:DataProvider;
        public function YouTubeAS3():void {
            Security.allowInsecureDomain("*");
            Security.allowDomain("*");
            vidCollection = new DataProvider();
            vidCollection.addItem({data:"eDdI7GhZSQA", label:"Video 1"});
            vidCollection.addItem({data:"S09F5MejfBE", label:"Video 2"});
            vidCollection.addItem({data:"QUwxKWT6m7U", label:"Video 3"});
            vidCollection.addItem({data:"TAbnQZZ6QXc", label:"Video 4"});
            vidCollection.addItem({data:"QH2-TGUlwu4", label:"Errorless Video"});
            VidSelection.dataProvider = vidCollection;
            VidSelection.addEventListener(Event.CHANGE, cueVideo);
            loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
            loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
        }
        private function onLoaderInit(event:Event):void {
            VidHolder.addChild(loader);
            loader.content.addEventListener("onReady", onPlayerReady);
            loader.content.addEventListener("onError", onPlayerError);
            loader.content.addEventListener("onStateChange", onPlayerStateChange);
            loader.content.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange);
        }
        private function onPlayerReady(event:Event):void {
            traceArea.text += "player ready: " + Object(event).data + "r";
            player = loader.content;
            player.setSize(480, 360);
            VidSelection.selectedIndex = 0;
            VidSelection.dispatchEvent(new Event(Event.CHANGE));
        }
        private function cueVideo(event:Event):void {
            traceArea.text += "switch to: " + event.target.selectedItem.label + "r";
            player.cueVideoById(event.target.selectedItem.data);
        }
        private function onPlayerError(event:Event):void {
            traceArea.text += "player error: " + Object(event).data + "r";
        }
        private function onPlayerStateChange(event:Event):void {
            traceArea.text += "player state: " + Object(event).data + "r";
        }
        private function onVideoPlaybackQualityChange(event:Event):void {
            traceArea.text += "video quality: " + Object(event).data + "r";
        }
    }
}

我相信你的问题的答案是:

"域级白名单/黑名单目前未通过API公开。"

"v3 api即使使用videoEmbeddable=True也会返回被阻止的内容"这一问题的公认答案也应该适用。

当视频超时时,我的错误状态为0。

如果你在使用的浏览器的开发工具中查看,你应该会看到一个名为"视频播放"的调用,它将超时。我在7.5分钟后将其超时,但这可能与连接有关。

此外,"超时"错误未包含在当前记录的错误状态中。

这是与YouTube AS3 Player API错误代码0相同的问题。。。当然,这个问题也没有答案(有趣的是,同样的4个视频被用作不可播放视频的例子)。

我唯一的建议是在数据中寻找一个模式。例如,v3数据API显示,您列出的所有4个未播放的视频在德国都被阻止,而您提供的播放视频则没有这样的阻止。这将导致假设错误可能与区域块有关(请注意,区域块与"可嵌入"块不同,后者是上传者可以设置的元数据)。在德国被屏蔽的视频都是因为Vevo不被允许进入,而且都是Vevo视频。

当然,我并不一定认为"不愉快"是故意的,尽管它可能是故意的;我不知道API(与Youtube网站相反,Youtube网站使用不同的方法播放视频,因此无法进行任何直接比较)试图播放区域阻止的视频时会发生什么的直接文档。也许@Dominic Orme是正确的,因为它与超时有关,超时是由区域块(或试图使用代理绕过区域块)引起的。

你可以通过寻找其他符合模式的视频来测试这一理论。例如,是否所有Vevo视频都无法使用您的代码播放?在其他国家被屏蔽的视频是否也无法播放?

相关内容

  • 没有找到相关文章

最新更新