2012-03-25 37 views
3

ビデオを読み込もうとしているクロムのないYouTubeプレーヤーがありますが、一部のビデオだけが動作します。私が間違っていないと、読み込まれていないものは著作権侵害によるものです(たとえば、漫画のエピソードの一部は読み込まれませんが、バックフリップをしている子供のホームムービーなど)。私がしようとしているのは、これらのビデオをロードするかどうかを、ロードするかどうかを調べることです。YouTube動画を埋め込む前に埋め込み可能かどうかを確認するにはどうすればよいですか?

例として、Nataly Dawnの2つの動画があります。 1つはロードされ、もう1つはロードされません。

// loads and plays the video 
ytplayer.loadVideoById("GhDGdT33K0k"); 

// doesn't load/play the video 
ytplayer.loadVideoById("-KYUPJIzCyM"); 

the working videonon-working videoの両方のデータを見てから、私は後者が非組み込み可能であることを示すことになる何かを見ているように見えることはできません。 [私は<yt:accessControl>タグや行方不明yt:format='5'(参照How do I use the Youtube API to check if a video is embeddable?)を探していますが、無駄にしています。]

私はコンソールで試してみたところでは、関係なく、かどうかのloadVideoById常に戻りundefined、ビデオは実際には読み込まれません。私はビデオがそうしたかどうかを判断するAPIメソッドを見つけることができないようです。

+0

videoEmbeddable:"true"が含まれます。たとえば、次のコードを使用します。http://code.google.com/apis/ajax/playground/#change_the_playing_video – mjhm

+0

Google Playgroundでは、埋め込み不可能な動画(qvr6K02dglcなど)を再生することがあります。ディスク上のローカルHTMLファイルに埋め込むことができます。 –

答えて

3

あなたが言いました両方の動画は、私にとって読み込み可能で再生可能なようです。たとえば、google code playgroundを使用して、動画をHTMLのオプションタグに挿入します。

ここにいくつかのヒントがあります。

  • 現在のYTデータAPIを使用するには、gdataリクエストの「v = 2」パラメータを使用します。
  • This blog post lists several additional restrictions that you may need to check for to determine if a video playable or embeddable
  • 一部のビデオは埋め込むことができますが、再生しないことがあります。その場合は、JavaScript PlayerAPIを使用して再生中であることを示すstateChangeイベントを探し、setIntervalを使用してビデオをポーリングしてgetCurrentTimeで実際に再生されているかどうかを確認します。しかし、これはほとんどのアプリケーションで少し狂っています。
+0

ブログの投稿から「時々起こるような微妙な制限がありますが、これらのすべてが現在APIを使用してクエリ可能なわけではありません。たとえば、一部の動画は特定のドメインでのみ再生できます。ユーザーがビデオを見るためのアクセス権を持っているかどうかを知るための唯一の方法は、見てみることです。私はあなたの最後の選択肢を見ていきます。:) –

+0

私は最終的に、ビデオがロードされるかどうかを事前に把握できなかったことを知りました。しかし、onErrorイベントのハンドラを置いた後、要求されたビデオが埋め込みプレイヤで再生できないときにエラーコード '150'を返すようにできました。なぜこれがコードの遊び場にロードされ、私の特定のコードでは読み込まれないのですか。 –

+0

明らかに埋め込みが許可されていないビデオがいくつかありますが、qvr6K02dglc –

0

今日、埋め込みAPIのonErrorイベントをフックして、ビデオが埋め込み再生からブロックされたことを示すエラーコード101と150(同じもの)を確認できます。また、このようにすると、他のエラーが発生した場合(違法リクエスト、html 5 issueなど)に違った行動を取ることができます。

function onError(event){ 
    switch(event.data){ 
     case 2: 
      console.log('request contains an invalid parameter value') 
      break 
     case 5: 
      console.log('The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.') 
      break 
     case 100: 
      console.log('The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.') 
      break 
     case 101: 
     case 150: 
      console.log('Uploader has blocked this content from embedded playback') 
      break 
     default: 
      console.log('error code: '+event.data) 

    } 
} 

あなただけの埋め込みビデオの結果は、検索APIによって返される場合は、あなたが言及した両方の動画がロード可能と再生可能なように見えるあなたのrequest

関連する問題