2

GoogleChrome拡張機能の開発で大きな障害に遭遇しました。収益化されている(広告があるなど)YouTubeの曲は再生されません。

これはここに文書化されています: https ://developers.google.com/youtube/flash_api_reference_as2#Events

ここだけでなく:https ://stackoverflow.com/questions/4852490/some-videos-not-playing-through-youtube-api

以前は、YouTubeのFlashAPIを使用していました。これは、拡張機能をデプロイしようとするまではうまく機能しました。その時点で、私は不十分な特権のためにアプリをロックダウンする巨大なセキュリティ問題に遭遇しました。そのため、FlashAPIの代わりにiFrameAPIを使用するようにプレーヤーを書き直しました。

iFrame APIを使用すると、Flashのセキュリティを気にすることなく正常にデプロイできましたが、広告が含まれている曲を再生できなくなりました。

誰かがこれの回避策を知っていますか?

編集:

私の拡張機能はここからダウンロードできます:http ://www.meomixes.com/

拡張機能のソースはここで見ることができます:http://github.com/MeoMix/YouPod

例として、この曲は私にとって完全に問題なく機能します:http ://www.youtube.com/watch?v=QXtPoNfOYSo

ただし、この曲は再生時にエラーをスローします:http ://www.youtube.com/watch?v=_dfVAAWbLUY

2番目の曲は現金化されていることに注意してください。

4

1 に答える 1

3

まず、プレーヤーを初期化し、ビデオをロードしました。

player = new YT.Player(getFrameID('MusicHolder')); player.loadVideoById('_ dfVAAWbLUY')

ご覧のとおり、プレーヤーが小さすぎるため、プレーヤーはビデオの埋め込みを拒否しました。そこで、プレーヤーのサイズを変更して、もう一度試してみました。

$('iframe')。width(640).height(390); player.loadVideoById('_ dfVAAWbLUY');

ビデオの再生が始まりました。拡張機能で同じコードをテストしましたが、問題も解消されました。

したがって、次のようにダミーフレームを作成します。

<iframe
    width="640"
    height="390"
    src="http://www.youtube.com/embed/dummy?enablejsapi=1"
></iframe>

その他のデバッグ情報:

  • 前のスクリーンショットでhttp://localhost:8000/は、はchrome拡張機能のルートディレクトリです。以前python -m SimpleHTTPServerはサーバーを作成していました。
  • フレームとページの間のメッセージを傍受したところ、エラーコード150がスローされたことがわかりました。ドキュメントによると、これは「101と同じ」であり、「要求されたビデオが組み込みプレーヤーでの再生を許可しない場合、101エラーコードがブロードキャストされます」。

player = new YT.Player(getFrameID('MusicHolder')); onmessage = console.log.bind(console); player.loadVideoById('_ dfVAAWbLUY')

于 2012-06-04T15:26:06.933 に答える