В настоящем документе представлена справочная информация по API YouTube для проигрывателя JavaScript.
API JavaScript позволяет пользователям управлять встроенными проигрывателями YouTube с помощью JavaScript. Вызовы могут использоваться для воспроизведения, приостановки, перехода к определенной точке в видео, настройки громкости, отключения звука в проигрывателе и других полезных функций.
Для правильного показа у конечного пользователя должен быть установлен Flash Player 8 или последующая версия. В связи с этим требованием для встраивания SWF и распознавания версии Flash Player пользователя рекомендуется пользоваться SWFObject.
Кроме того, на любой HTML-странице, содержащей проигрыватель YouTube, должна быть реализована функция JavaScript с именем onYouTubePlayerReady. API вызовет эту функцию, когда проигрыватель будет полностью загружен и API будет готов к приему вызовов. Дополнительные сведения см. в разделе Обработчики событий.
Примечание. Для проверки любого из этих вызовов необходимо обеспечить запуск файла на веб-сервере, поскольку проигрыватель Flash накладывает ограничения на вызовы между локальными файлами и внешней сетью.
Чтобы включить API JavaScript, необходимо в параметре URL проигрывателя, которым нужно управлять, передать параметр URL enablejsapi=1. Например, для встраивания SWF может подойти следующий URL.
http://www.youtube.com/v/VIDEO_ID?enablejsapi=1
Этот URL включает в проигрывателе обработчики API JavaScript и указывает на то, что после загрузки проигрывателя подготовки его к получению вызовов JavaScript должно быть передано уведомление об этом с помощью функции обратного вызова на HTML-странице. В момент готовности проигрывателя вызывается функция JavaScript onYouTubePlayerReady.
Можно также передать необязательный параметр playerapiid, определяющий проигрыватель для функции обратного вызова onYouTubePlayerReady. Любое значение, переданное в параметре playerapiid, передается обратно функции onYouTubePlayerReady в качестве первого аргумента.
http://www.youtube.com/v/VIDEO_ID?enablejsapi=1&playerapiid=ytplayer
Можно также загрузить на страницу проигрыватель Chromeless Player, если элементы управления создаются с помощью JavaScript.
http://www.youtube.com/apiplayer?enablejsapi=1
Чтобы отправить запрос на получение проигрывателя AS3 без элементов управления, добавьте параметр &version=3 к приведенному выше URL.
http://www.youtube.com/apiplayer?enablejsapi=1&version=3
После того как загружен проигрыватель Chromeless Player SWF, можно воспользоваться функциями cueVideoById(), loadVideoById(), cueVideoByUrl() или loadVideoByUrl(), чтобы загрузить конкретное видео с YouTube.
Дополнительные сведения о том, как встроить на страницу проигрыватель SWF для YouTube, см. в примерах ниже.
Для вызова методов API проигрывателя необходимо сначала получить ссылку на объект проигрывателя. Для этого вызовите getElementById() для тега object или embed, в котором содержится проигрыватель SWF, если для встраивания проигрывателя SWF используется SWFObject.
Функции работы с очередями
player.cueVideoById(videoId:String, startSeconds:Number, suggestedQuality:String):VoidplayVideo() или seekTo().
videoId определяет идентификатор воспроизводимого видео YouTube. В фидах видео API данных YouTube тег <yt:videoId> определяет идентификатор.startSeconds может принимать целочисленные значения или значения с плавающей точкой и задает время, с которого начнется воспроизведение видео при вызове playVideo(). Если задать значение startSeconds и затем вызвать seekTo(), проигрыватель начнет воспроизведение с момента, указанного в вызове seekTo(). Когда видео размечено и готово к воспроизведению, проигрыватель передает событие "видео размечено" (5).suggestedQuality определяет предлагаемое качество воспроизведения видео. Дополнительная информация о качестве воспроизведения видео приведена в определении функции setPlaybackQuality.player.loadVideoById(videoId:String, startSeconds:Number, suggestedQuality:String):VoidvideoId определяет идентификатор воспроизводимого видео YouTube. В фидах видео API данных YouTube тег <yt:videoId> определяет идентификатор.startSeconds принимает целочисленные значения и значения с плавающей точкой. Если этот параметр установлен, воспроизведение видео начнется с ключевого кадра, ближайшего к указанному времени.suggestedQuality определяет предлагаемое качество воспроизведения видео. Дополнительная информация о качестве воспроизведения видео приведена в определении функции setPlaybackQuality.player.cueVideoByUrl(mediaContentUrl:String, startSeconds:Number):VoidplayVideo() или seekTo().
mediaContentUrl нужно использовать полный URL проигрывателя YouTube в формате http://www.youtube.com/v/VIDEO_ID. Если атрибут format тега <media:content> имеет значение 5, в фидах видео API данных YouTube атрибут url этого тега будет содержать полный URL проигрывателя.startSeconds может принимать целочисленные значения или значения с плавающей точкой и задает время, с которого начнется воспроизведение видео при вызове playVideo(). Если задать значение startSeconds и затем вызвать seekTo(), проигрыватель начнет воспроизведение с момента, указанного в вызове seekTo(). Когда видео размечено и готово к воспроизведению, проигрыватель передает событие "видео размечено" (5).player.loadVideoByUrl(mediaContentUrl:String, startSeconds:Number):VoidmediaContentUrl нужно использовать полный URL проигрывателя YouTube в формате http://www.youtube.com/v/VIDEO_ID. Если атрибут format тега <media:content> имеет значение 5, в фидах видео API данных YouTube атрибут url этого тега будет содержать полный URL проигрывателя.startSeconds может принимать целочисленные значения или значения с плавающей точкой и задает время, с которого начнется воспроизведение видео. Если задать параметр startSeconds (можно в формате с плавающей точкой), воспроизведение видео начнется с ключевого кадра, ближайшего к указанному моменту времени.Настройки проигрывателя и управление воспроизведением
Воспроизведение видео
player.playVideo():Voidplayer.pauseVideo():Voidplayer.stopVideo():Voidplayer.seekTo(seconds:Number, allowSeekAhead:Boolean):VoidseekTo() будет искать ближайший ключевой кадр до времени, определенного параметром seconds. Это означает, что иногда воспроизведение будет начинаться в момент, предшествующий заданному времени (обычно не более чем на 2 секунды).allowSeekAhead определяет, будет ли проигрыватель делать новый запрос серверу, если значение seconds превышает продолжительность загруженных видеоданных.player.clearVideo():VoidstopVideo(). Обратите внимание, что в API проигрывателя ActionScript 3.0 эта функция считается устаревшей.Изменение громкости проигрывателя
player.mute():Voidplayer.unMute():Voidplayer.isMuted():Booleanplayer.setVolume(volume:Number):Voidplayer.getVolume():NumbergetVolume() возвращает установленный уровень громкости, даже если звук в проигрывателе отключен.Настройка размера окна проигрывателя
player.setSize(width:Number, height:Number):VoidСостояние воспроизведения
player.getVideoBytesLoaded():Numberplayer.getVideoBytesTotal():Numberplayer.getVideoStartBytes():Numberplayer.getPlayerState():Numberplayer.getCurrentTime():NumberКачество воспроизведения
player.getPlaybackQuality():Stringundefined. Могут возвращаться следующие значения: hd720, large, medium и small.player.setPlaybackQuality(suggestedQuality:String):VoidonPlaybackQualityChange, и код должен реагировать на него, а не на факт вызова функции setPlaybackQuality.suggestedQuality может принимать значения small, medium, large, hd720 и default. Присвоение параметру значения default предписывает YouTube выбрать наиболее подходящее качество воспроизведения в зависимости от пользователя, видео, применяемых систем и других условий воспроизведения.medium будет выглядеть лучше, чем в качестве large. В следующем списке приводятся рекомендованные уровни качества воспроизведения для различных размеров проигрывателя.small: разрешение проигрывателя – менее 640 х 360 пикселей.medium: минимальное разрешение проигрывателя – 640 х 360 пикселей.large: минимальное разрешение проигрывателя – 854 х 480 пикселей.hd720: минимальное разрешение проигрывателя – 1280 х 720 пикселей.default: YouTube выбирает подходящее качество воспроизведения. Данная настройка возвращает уровень качества в значение по умолчанию и отменяет все предыдущие действия по настройке качества воспроизведения с использованием функций cueVideoById, loadVideoById или setPlaybackQuality.setPlaybackQuality вызывается с уровнем качества suggestedQuality, который недоступен для данного видео, то будет установлен следующий доступный более низкий уровень качества. Например, если запрашивается уровень качества large и он недоступен, будет установлено качество воспроизведения medium (если данный уровень качества доступен).suggestedQuality значения, которое не является распознаваемым уровнем качества, равносильно установке для suggestedQuality значения default.player.getAvailableQualityLevels():Arrayhd720, large, medium и small. Функция возвращает пустой массив, если текущее видео отсутствует.Получение сведений о видео
player.getDuration():NumbergetDuration() возвратит 0, если метаданные видео еще не загружены, что обычно случается в самом начале воспроизведения видео.player.getVideoUrl():Stringplayer.getVideoEmbedCode():StringДобавление прослушивателя событий
player.addEventListener(event:String, listener:String):Voidevent добавляется функция прослушивателя. В следующем разделе, События, указаны различные события, вызываемые проигрывателем. Прослушиватель – это строка, задающая функцию, которая будет выполняться при возникновении указанного события.onStateChangeonPlaybackQualityChangesetPlaybackQuality(suggestedQuality) это событие возникнет, если качество воспроизведения изменится. Код должен отвечать на событие, а не предполагать, что качество автоматически изменится при вызове функции setPlaybackQuality(suggestedQuality). Точно так же код не должен предполагать, что качество воспроизведения будет меняться только в результате явного вызова setPlaybackQuality или другой функции, позволяющей установить предлагаемое качество воспроизведения.onError100, 101 и 150. Код ошибки 100 выдается, когда запрошенное видео не найдено. Это происходит, если видео было удалено (по любой причине) или было помечено как личное. Код ошибки 101 выдается, если запрошенное видео не может быть воспроизведено встроенными проигрывателями. Код ошибки 150 означает то же самое, что и 101. Это просто замаскированный 101.На HTML-странице с Chromeless Player должна быть реализована функция обратного вызова onYouTubePlayerReady. API вызовет эту функцию, когда проигрыватель будет полностью загружен и API будет готов к приему вызовов.
onYouTubePlayerReady(playerid)playerapiid, то оно передается этой функции.Для встраивания любых проигрывателей, доступ к которым будет осуществляться через API JavaScript, рекомендуется использовать SWFObject. Это позволяет определить версию проигрывателя Flash конечного пользователя (для API JavaScript необходима версия проигрывателя Flash 8 или выше), а также исключить появление поля с надписью "Click to activate this control" (Нажмите, чтобы активировать этот элемент управления) при использовании Internet Explorer. Чтобы включить API в SWF, необходимо передать параметр enablejsapi=1.
Пример использования скрипта для встраивания проигрывателя YouTube, когда включен API JavaScript и параметр playerapiid имеет значение ytplayer, см. ниже.
<script type="text/javascript" src="swfobject.js"></script>
<div id="ytapiplayer">
You need Flash player 8+ and JavaScript enabled to view this video.
</div>
<script type="text/javascript">
var params = { allowScriptAccess: "always" };
var atts = { id: "myytplayer" };
swfobject.embedSWF("http://www.youtube.com/v/VIDEO_ID?enablejsapi=1&playerapiid=ytplayer",
"ytapiplayer", "425", "356", "8", null, null, params, atts);
</script>
Параметр allowScriptAccess в этом коде необходим для того, чтобы проигрыватель SWF имел возможность вызова функций на HTML-странице, поскольку сам проигрыватель загружен из домена, отличного от домена HTML-страницы.
Единственным передаваемым атрибутом является атрибут id встроенного объекта, в данном случае – myytplayer. Этот идентификатор служит для получения ссылки на проигрыватель с помощью getElementById().
swfobject.embedSWF загружает проигрыватель с сайта YouTube и встраивает его в страницу.
swfobject.embedSWF(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj)
swfUrlStr – это URL SWF. Обратите внимание, что к обычному URL SWF YouTube добавлены параметры enablejsapi и playerapiid, чтобы включить вызовы API JavaScript.replaceElemIdStr – это идентификатор тега DIV в HTML-коде, который будет заменен встроенным контентом. В приведенном выше примере – ytapiplayer.widthStr – ширина проигрывателя.
heightStr – высота проигрывателя.
swfVersionStr – минимальная версия, необходимая для отображения контента. В данном случае необходима версия 8 или выше. Если у пользователя не установлена версия 8 или выше, то он увидит строку текста, заданную по умолчанию в теге DIV HTML-кода.
xiSwfUrlStr – задает URL быстрой установки SWF (необязательно). Не используется в этом примере.
flashVarsObj – задает переменные FlashVars в формате "имя:значение" (необязательно). Не используется в этом примере.
parObj – параметры для встроенного объекта (необязательно). В данном случае установлено значение allowScriptAccess.
AttObj – атрибуты для встроенного объекта (необязательно). В данном случае установлено значение myytplayer идентификатора.
Дополнительную информацию см. в документации по SWFObject.
После перехода проигрывателя в состояние готовности он вызывает функцию onYouTubePlayerReady.
Получить ссылку на этот проигрыватель можно через getElementById(). После получения объекта можно выполнять запросы к API.
function onYouTubePlayerReady(playerId) {
ytplayer = document.getElementById("myytplayer");
}
Теперь можно вызывать функции по ссылке на проигрыватель. Например, если нужно воспроизвести видео после нажатия пользователем некоторой ссылки, то этот код будет выглядеть следующим образом.
function play() {
if (ytplayer) {
ytplayer.playVideo();
}
}
<a href="javascript:void(0);" onclick="play();">Play</a>
Или просто
<a href="javascript:ytplayer.playVideo()">Play</a>
Чтобы подписаться на события, добавьте прослушиватель событий к ссылке на проигрыватель. Например, чтобы получать уведомления при изменении состояния проигрывателя, добавьте прослушиватель событий для onStateChange, указав функцию обратного вызова.
function onYouTubePlayerReady(playerId) {
ytplayer = document.getElementById("myytplayer");
ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
}
function onytplayerStateChange(newState) {
alert("Player's new state: " + newState);
}
Для проверки функций API JavaScript со встроенным проигрывателем или Chromeless Player можно воспользоваться Демонстрацией проигрывателя YouTube. Помимо этого, имеется площадка для экспериментов с кодом Google, предназначенная для отладки вызова кода API проигрывателя JavaScript, где можно увидеть, каким образом код будет выглядеть для пользователя веб-интерфейса.