API YouTube JS: обнаружение "встраивание отключено" - PullRequest
4 голосов
/ 13 мая 2009

Использование API Java YouTube (http://code.google.com/apis/youtube/js_api_reference.html), Я пытаюсь разрешить пользователю вставлять видео в какой-то контент, который он создает в моем приложении. У меня все работает, кроме возможности обнаружить и обработать В случае, если вложение видео не разрешено.

В настоящее время проигрыватель загружает и показывает миниатюру запрещенного видео, и выдает ошибку только после того, как пользователь попытается воспроизвести его. Это плохо, потому что пользователь не может воспроизвести видео перед сохранением / отправкой своего контента. Я хотел бы заранее определить, что видео не может быть встроено, и отобразить полезное сообщение для пользователя.

Единственное решение, которое я вижу, - это фактически воспроизвести его (программно) и обработать ошибку, которая возникает в этой точке.

Существующее решение:

  1. Встроить проигрыватель (embedSWF)
  2. onYouTubePlayerReady (): добавить прослушиватели событий onError onStateChange.
  3. onStateChange (newState): когда загрузка видео закончится, попробуйте воспроизвести его.
    например if (newState == 5 / * CUED * /) {player.mute (); player.playVideo (); player.stopVideo (); player.unMute (); }
  4. onError (ошибка): если видео не удалось воспроизвести в onStateChange, здесь будет отображаться ошибка.

Есть ли лучший способ?

Спасибо!
* 1021 Роб *

Ответы [ 3 ]

6 голосов
/ 03 июня 2009

Вы можете получить фид JSON для этой записи видео, прежде чем вставлять ее, и посмотреть, существует ли «yt $ format»: 5, то есть SWF для встраивания. Этого не будет, если встраивание отключено.

http://gdata.youtube.com/feeds/api/videos/video_id?v=2&alt=json-in-script

0 голосов
/ 13 мая 2019

Я думаю, что вы можете искать параметр videoSyndicated или videoEmbeddable. Документация API гласит:

videoEmbeddable

Параметр videoEmbeddable позволяет ограничить поиск только видео, которые могут быть встроены в веб-страницу. Если вы указываете значение для этого параметра, вы также должны установить значение параметра типа равным video.

Ссылка: https://developers.google.com/youtube/v3/docs/search/list#videoEmbeddable

videoSyndicated

Параметр videoSyndicated позволяет ограничить поиск только видео, которые можно воспроизводить за пределами youtube.com. Если вы указываете значение для этого параметра, вы также должны установить значение параметра типа равным video.

Ссылка: https://developers.google.com/youtube/v3/docs/search/list#videoSyndicated

Пример вызова

С обоими:

GET https://www.googleapis.com/youtube/v3/search?&part=snippet,statistics&videoSyndicated=true&videoEmbeddable=true&key=${yourKey}
0 голосов
/ 29 января 2012

Я знаю, что это не напрямую вопрос, но в случае, если кто-то, использующий PHP, наткнется на эту проблему, есть метод getNoEmbed() в Zend_Gdata_YouTube_VideoEntry.

Взято из документов:

Если возвращаемое значение является экземпляром Zend_Gdata_YouTube_Extension_NoEmbed, это видео не может быть встроено.

...