5

YouTube Flash API のエラー コード 0 は何を意味しますか? API を使用して一部の動画を再生しようとすると発生します。その他のエラー コードはAPI リファレンスで説明されていますが、エラー コード 0 は説明されていません。

YouTube Player Demoと同じように、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";
        }
    }
}
4

3 に答える 3

0

これは、 YouTube AS3 Player API エラー コード 0と同じ質問です... もちろん、その質問にも答えはありません (興味深いことに、同じ 4 つの動画が再生できない動画の例として使用されています)。

唯一の提案は、データのパターンを探すことです。たとえば、v3 データ API は、リストした再生されていない 4 つの動画すべてがドイツでブロックされていることを示していますが、再生されている動画にはそのようなブロックはありません。これは、おそらくエラーがリージョン ブロックに関連しているという仮定につながります (リージョン ブロックは、アップローダーが設定できるメタデータである「埋め込み可能」ブロックとは異なることに注意してください)。ドイツでブロックされた動画は、Vevo が許可されていないため、すべてブロックされており、すべて Vevo の動画です。

もちろん、「プレイできない」ことが意図的であることを必ずしも示唆しているわけではありませんが、そうである可能性もあります。API が (ビデオの再生にさまざまな方法を使用するため直接比較できない Youtube サイトとは対照的に) リージョンがブロックされたビデオを再生しようとしたときに何が起こるかを詳しく説明している直接のドキュメントは知りません。おそらく@Dominic Ormeは、タイムアウト、リージョンブロックによって引き起こされるタイムアウト(またはプロキシを使用してリージョンブロックをバイパスしようとすることによって引き起こされるタイムアウト)に関連しているという点で正しいでしょう。

パターンに適合する他のビデオを見つけることで、この理論をテストできます。たとえば、すべての Vevo ビデオはコードで再生できませんか? 他の国でブロックされている動画も再生できませんか?

于 2013-07-27T03:30:16.913 に答える
0

ビデオがタイムアウトしたとき、エラー状態が 0 になりました。

使用しているブラウザの開発者ツールを見ると、タイムアウトした「videoplayback」というコールアウトが表示されます。7.5 分後にタイムアウトしますが、接続に関連している可能性があります。

また、「タイムアウト」エラーは、現在文書化されているエラー状態ではカバーされていません。

于 2013-07-22T07:06:11.830 に答える