2013-07-19 4 views
5

Что означает код ошибки 0 в API YouTube Flash? Это происходит при попытке воспроизвести некоторые видео с помощью API. Другие коды ошибок описаны в API Reference, но не код ошибки 0.Игрок YouTube API не воспроизводит некоторые видеоролики

Как сделать плеер YouTube играть все видео, так же, как это делает на YouTube Player Demo?

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"; 
     } 
    } 
} 
+0

Мое предположение было бы, что это была ошибка в плеере Youtube, где ошибки не было правильно инициализироваться перед отправкой события. К сожалению, я не могу дублировать то, что вы видите - пример кода, который вы предоставили, отлично подходит для меня, когда я запускаю его, без каких-либо ошибок. –

+0

@joshbuhler Что делает вашу машину особенной? Я даже подключался через прокси U.S./Canada несколько раз, и ошибка 0 сохранялась для первых 4 видео. – Pleo

+0

Кто-нибудь еще получает эту странную ошибку с кодом выше? – Pleo

ответ

0

Я была в состоянии ошибки 0 - когда видео таймаут.

Если вы посмотрите в инструментах разработчика, в зависимости от того, с каким браузером вы работаете, вы должны увидеть выноску, называемую «видеоплан», которая будет выходить из строя. У меня есть тайм-аут после 7,5 минут, но это может быть связано с подключением.

Кроме того, ошибка «тайм-аут» не включена в текущие зарегистрированные состояния ошибок.

+0

Но почему он никогда не воспроизводит несколько видеороликов и не выдает код ошибки 0, всегда проигрывая другие видео без проблем? – Pleo

+0

Список опций в настоящее время: HTML5-плеер против Flash-плеера (некоторые видео оптимизированы для одного, а не другого) Объявления - youtube вводит рекламу в потоки, и я понятия не имею, как ее обнаружить. Или вы однажды сыграли видео, и где-то он стал кэшироваться. –

0

Это тот же вопрос, что и YouTube AS3 Player API Error Code 0 ... конечно, у этого вопроса нет ответа (интересно, однако, что те же 4 видео используются в качестве примеров неиграбельных видеороликов).

Единственное, что у меня было бы, - это искать шаблон в данных. Например, API данных v3 показывает, что все 4 видео, которые вы не воспроизводите, заблокированы в Германии, а тот, который вы предлагаете, который играет, не имеет такого блока. Это привело бы к предположению, что, возможно, ошибка связана с блоком региона (обратите внимание, что блок области отличается от блока «встраиваемого», который представляет собой метаданные, которые может установить загрузчик). Видео, заблокированные в Германии, сделаны так, потому что Vevo там не допускается, и все они видео Vevo.

Я, конечно, не обязательно предполагаю, что «неиграбельность» преднамерена, хотя это может быть; Я не знаю о прямой документации, в которой подробно описывается, что происходит, когда API (в отличие от сайта Youtube, который использует разные методы для воспроизведения видео, чтобы вы не могли делать прямых сравнений) пытается воспроизвести заблокированное видео в регионе. Возможно, @Dominic Orme верен тем, что он связан с таймаутом, таймаутом, вызванным блоком региона (или попыткой использовать прокси для обхода блока области).

Вы можете проверить эту теорию, найдя другие видеоролики, которые соответствовали бы шаблону. Например, все видео Vevo не воспроизводятся с вашим кодом? Не заблокированы ли видео в других странах?

+0

Я пытался добавить образец кода к этому вопросу, прежде чем публиковать свои собственные, но бесплодные. В любом случае, 4 видео - это не все видео Vevo, только третье. На самом деле видео Vevo воспроизводится чаще, чем нет. Я не в Германии, поэтому я не могу сказать, насколько это связано с блокировкой региона. Одним из наблюдаемых шаблонов было бы то, что практически все видеоролики Beatles не воспроизводятся. Напротив, все видео отлично воспроизводятся на сайте YouTube для меня. – Pleo

+0

Да ... мой плохой вопрос Vevo. Я видел, что Taylor Swift vid был, а остальные я только просматривал API данных, поэтому сделал предположение. Тем не менее, шаблон все еще показывает, что 4 видео, которые вы указали, заблокированы в Германии (опять же, я не предполагал, что вы находитесь в Германии, но, возможно, есть что-то внутренне, что вызывает ошибку, связанную с этим). Вы говорите, что видео Vevo вообще работает, а дополнительные видеоролики Beatles нет; можете ли вы предложить некоторые из этих идентификаторов, чтобы посмотреть? Кроме того, есть ли видео, которые не являются музыкой, которая не воспроизводится? – jlmcdonald

+0

И повторить, по моему опыту, что-то, что играет на сайте, в целом не имеет большого отношения к способности воспроизводить видео через API, поскольку они работают с различными методами для извлечения, воспроизведения и т. Д. Хотя вы также можете сообщить о том, что происходит, когда вы пытаетесь встроить эти видео в iframe, через API javascript и т. д., чтобы узнать, получили ли вы разные результаты. – jlmcdonald

Смежные вопросы