Воспроизведение монетизированной песни 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')]()