Воспроизведение монетизированной песни YouTube внутри расширения Google Chrome. Есть ли у меня какие-либо варианты?

Я столкнулся с огромным препятствием в разработке расширения Google Chrome. Любая песня YouTube, которая монетизирована (например, имеет рекламу), не будет воспроизводиться.

Это описано здесь: https://developers.google.com/youtube/flash_api_reference_as2#Events

а также здесь: https://stackoverflow.com/info/4852490/some-videos-not-playing-through-youtube-api

Раньше я использовал YouTube Flash API. Это отлично работало, пока я не попытался развернуть мое расширение. В этот момент я столкнулся с огромными проблемами безопасности, которые заблокировали приложение из-за недостаточных привилегий. Таким образом, я переписал плеер, чтобы использовать API iFrame вместо Flash API.

API iFrame позволил мне успешно развертываться без каких-либо проблем безопасности Flash, но теперь я не могу воспроизвести какую-либо песню с рекламой.

Кто-нибудь знает об этом?

Edit:

Мое расширение можно скачать здесь: http://www.meomixes.com/

Источник расширения можно увидеть здесь: http://github.com/MeoMix/YouPod

В качестве примера эта песня отлично работает для меня: http://www.youtube.com/watch?v=QXtPoNfOYSo

Эта песня, однако, вызывает ошибку при воспроизведении: http://www.youtube.com/watch?v=_dfVAAWbLUY

Обратите внимание, что вторая песня была монетизирована.

Ответ 1

Сначала я инициализировал плеер и загрузил видео:

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 = новый YT.Player(getFrameID ('MusicHolder')); onmessage = console. log.bind(консоль); player.loadVideoById( '_ dfVAAWbLUY')