A API do player IFrame permite incorporar um player de vídeo do YouTube em seu website e controlar o player usando o JavaScript.
Usando as funções JavaScript da API, você pode enfileirar vídeos para reprodução; reproduzir, pausar ou interromper esses vídeos; ajustar o volume do player; ou ter informações sobre o vídeo que está sendo reproduzido. Também é possível adicionar listeners de eventos que serão executados em resposta a determinados eventos do player, como uma mudança de estado.
Este guia explica como usar a API IFrame. Ela identifica os diferentes tipos de eventos que a API pode enviar e explica como escrever listeners de eventos para responder a esses eventos. Além disso, detalha as diferentes funções JavaScript que você pode chamar para controlar o player de vídeo, além dos parâmetros do player que você pode usar para personalizar ainda mais o player.
Requisitos
O navegador do usuário precisa oferecer suporte ao recurso postMessage do HTML5. A maioria dos navegadores modernos oferece suporte a postMessage.
É necessário que os players incorporados tenham uma Janela de visualização de pelo menos 200 px por 200 px. Se o player mostra controles, ele tem que ser grande o suficiente para exibir completamente os controles sem encolher a Janela visualização abaixo do tamanho mínimo. Recomendamos que players de 16:9 tenham pelo menos 480 pixels de largura e 270 pixels de altura.
Também será necessário implementar a seguinte função JavaScript em todas as páginas da Web que usarem API do IFrame:
-
onYouTubeIframeAPIReady: a API vai chamar essa função quando a página terminar de fazer o download do JavaScript da API do player, o que permite usar a API na página. Dessa forma, essa função cria os objetos do player que você deseja exibir quando a página for carregada.
Primeiros passos
O exemplo de página HTML abaixo cria um player incorporado que carregará um vídeo, irá reproduzi-lo por seis segundos e, em seguida, interromperá a reprodução. Os comentários numerados no HTML são explicados na lista abaixo do exemplo.
<!DOCTYPE html> <html> <body> <!-- 1. The <iframe> (and video player) will replace this <div> tag. --> <div id="player"></div> <script> // 2. This code loads the IFrame Player API code asynchronously. var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); // 3. This function creates an <iframe> (and YouTube player) // after the API code downloads. var player; function onYouTubeIframeAPIReady() { player = new YT.Player('player', { height: '390', width: '640', videoId: 'M7lc1UVf-VE', playerVars: { 'playsinline': 1 }, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); } // 4. The API will call this function when the video player is ready. function onPlayerReady(event) { event.target.playVideo(); } // 5. The API calls this function when the player's state changes. // The function indicates that when playing a video (state=1), // the player should play for six seconds and then stop. var done = false; function onPlayerStateChange(event) { if (event.data == YT.PlayerState.PLAYING && !done) { setTimeout(stopVideo, 6000); done = true; } } function stopVideo() { player.stopVideo(); } </script> </body> </html>
A lista a seguir fornece mais detalhes sobre o exemplo acima:
-
A tag
<div>nesta seção identifica o local na página em que a API IFrame vai colocar o player de vídeo. O construtor do objeto player, descrito na seção Carregando um player de vídeo, identifica a tag<div>peloidpara garantir que a API coloque o<iframe>no local adequado. Especificamente, a API IFrame vai substituir a tag<div>pela tag<iframe>.Como alternativa, você também pode colocar o elemento
<iframe>diretamente na página. A seção Como carregar um player de vídeo explica como fazer isso. -
O código dessa seção carrega o código JavaScript da API do player IFrame. O exemplo usa a modificação DOM para baixar o código API para garantir que ele seja recuperado de forma assíncrona. O atributo
asyncda tag<script>, que também permite downloads assíncronos, ainda não é compatível com todos os navegadores modernos, conforme discutido nesta resposta do Stack Overflow. -
A função
onYouTubeIframeAPIReadyserá executada assim que o código da API do player for transferido por download. Essa parte do código define uma variável global,player, que se refere ao player de vídeo que você está incorporando, e a função constrói o objeto do player de vídeo. -
A função
onPlayerReadyserá executada quando o eventoonReadyfor acionado. Nesse exemplo, a função indica que, quando o player de vídeo estiver pronto, ele começará a ser reproduzido. -
A API vai chamar a função
onPlayerStateChangequando o estado do player mudar, o que pode indicar que ele está sendo reproduzido, pausado, concluído e assim por diante. A função indica que, quando o estado do player é1(reprodução), ele deve ser reproduzido por seis segundos e, em seguida, chamar a funçãostopVideopara interromper o vídeo.
Carregar um player de vídeo
Depois que o código JavaScript da API for carregado, ela vai chamar a função onYouTubeIframeAPIReady. Nesse ponto, você poderá criar um objeto YT.Player para inserir um player de vídeo na página. O trecho de HTML abaixo mostra a função onYouTubeIframeAPIReady do exemplo acima:
var player; function onYouTubeIframeAPIReady() { player = new YT.Player('player', { height: '390', width: '640', videoId: 'M7lc1UVf-VE', playerVars: { 'playsinline': 1 }, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); }
O construtor do player de vídeo especifica os seguintes parâmetros:
-
O primeiro parâmetro especifica o elemento DOM ou o
iddo elemento HTML em que a API vai inserir a tag<iframe>que contém o player.A API IFrame vai substituir o elemento especificado pelo elemento
<iframe>que contém o player. Isso pode afetar o layout da página se o elemento substituído tiver um estilo de exibição diferente do elemento<iframe>inserido. Por padrão, um<iframe>é exibido como um elementoinline-block. - O segundo parâmetro é um objeto que especifica as opções do player. O objeto contém as seguintes propriedades:
width(número): a largura do player de vídeo. O valor padrão é640.height(número): a altura do player de vídeo. O valor padrão é390.videoId(string): o ID do vídeo do YouTube que identifica o vídeo que será carregado pelo player.playerVars(objeto): as propriedades do objeto identificam os parâmetros do player que podem ser usados para personalizar o player.events(objeto): as propriedades do objeto identificam os eventos que a API dispara e as funções (listeners de eventos) que a API vai chamar quando esses eventos ocorrerem. No exemplo, o construtor indica que a funçãoonPlayerReadyserá executada quando o eventoonReadyfor acionado e que a funçãoonPlayerStateChangeserá executada quando o eventoonStateChangefor acionado.
Como mencionado na seção Introdução, em vez de escrever um elemento <div> vazio na página, que o código JavaScript da API do player vai substituir por um elemento <iframe>, você pode criar a tag <iframe>. O primeiro exemplo na seção Exemplos mostra como fazer isso.
<iframe id="player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/M7lc1UVf-VE?enablejsapi=1&origin=http://example.com" frameborder="0"></iframe>
Se você escrever a tag <iframe>, não vai precisar especificar valores para width e height, que são especificados como atributos da tag <iframe>, ou para videoId e parâmetros do player, que são especificados no URL src.YT.Player Como medida de segurança extra, também é necessário incluir o parâmetro origin no URL, especificando o esquema de URL (http:// ou https://) e o domínio completo da página de destino como o valor do parâmetro. Embora origin seja opcional, incluí-lo protege contra a injeção de JavaScript de terceiros maliciosos na sua página e o controle do player do YouTube.
Para outros exemplos de construção de objetos de player de vídeo, consulte Exemplos.
Operações
Para chamar os métodos da API do player, primeiro, tenha uma referência do objeto do player que deseja controlar. Para conseguir a referência, crie um objeto YT.Player, conforme discutido nas seções Introdução e Carregando um player de vídeo deste documento.
Funções
Funções de enfileiramento
Com as funções de enfileiramento, é possível carregar e reproduzir um vídeo, uma playlist ou uma outra lista de vídeos. Se você estiver usando a sintaxe de objeto descrita abaixo para chamar essas funções, também poderá colocar em fila ou carregar uma lista de vídeos enviados por um usuário.
A API é compatível com duas sintaxes diferentes para chamar as funções de enfileiramento.
-
A sintaxe do argumento requer argumentos de função a serem listados em uma ordem prescrita.
-
A sintaxe do objeto permite passar um objeto como um parâmetro único e definir suas propriedades para os argumentos de função que você deseja definir. Além disso, a API pode ser compatível com outras funcionalidades que a sintaxe do argumento não suporta.
Por exemplo, a função loadVideoById pode ser chamada de uma das seguintes maneiras. A sintaxe do objeto é compatível com a propriedade endSeconds, que a sintaxe do argumento não é.
-
Sintaxe de argumentos
loadVideoById("bHQqvYy5KYo", 5, "large")
-
Sintaxe de objetos
loadVideoById({'videoId': 'bHQqvYy5KYo', 'startSeconds': 5, 'endSeconds': 60});
Funções de enfileiramento de vídeos
cueVideoById-
-
Sintaxe de argumentos
player.cueVideoById(videoId:String, startSeconds:Number):Void -
Sintaxe de objetos
player.cueVideoById({videoId:String, startSeconds:Number, endSeconds:Number}):Void
Esta função carrega a miniatura do vídeo especificado e prepara o player para reproduzir o vídeo. O player não solicita o FLV até que
playVideo()ouseekTo()seja chamado.- O parâmetro
videoIdobrigatório especifica o ID do vídeo do YouTube que será reproduzido. Na API Data do YouTube, a propriedadeidde um recursovideoespecifica o ID. - O parâmetro
startSecondsopcional aceita um número inteiro/float e especifica o tempo em que o vídeo vai começar a ser reproduzido quandoplayVideo()for chamado. Se você especificar um valorstartSecondse chamarseekTo(), o player vai ser reproduzido a partir do tempo especificado na chamadaseekTo(). Quando o vídeo estiver pronto para ser reproduzido, o player vai transmitir um eventovideo cued(5). - O parâmetro
endSecondsopcional, que só tem suporte na sintaxe de objetos, aceita um número/float e especifica o momento em que o vídeo deve parar de ser reproduzido quandoplayVideo()é chamado. Se você especificar um valorendSecondse chamarseekTo(), o valorendSecondsnão vai mais estar em vigor.
-
loadVideoById-
-
Sintaxe de argumentos
player.loadVideoById(videoId:String, startSeconds:Number):Void -
Sintaxe de objetos
player.loadVideoById({videoId:String, startSeconds:Number, endSeconds:Number}):Void
Esta função carrega e reproduz o vídeo especificado.
- O parâmetro
videoIdobrigatório especifica o ID do vídeo do YouTube que será reproduzido. Na API Data do YouTube, a propriedadeidde um recursovideoespecifica o ID. - O parâmetro
startSecondsopcional aceita um número flutuante/inteiro. Se ele for especificado, o vídeo será iniciado no frame principal mais próximo ao ponto especificado. - O parâmetro
endSecondsopcional aceita um número flutuante/inteiro. Se for especificado, o vídeo vai interromper a reprodução no ponto especificado.
-
cueVideoByUrl-
-
Sintaxe de argumentos
player.cueVideoByUrl(mediaContentUrl:String, startSeconds:Number):Void -
Sintaxe de objetos
player.cueVideoByUrl({mediaContentUrl:String, startSeconds:Number, endSeconds:Number}):Void
Esta função carrega a miniatura do vídeo especificado e prepara o player para reproduzir o vídeo. O player não solicita o FLV até que
playVideo()ouseekTo()seja chamado.- O parâmetro
mediaContentUrlobrigatório especifica um URL do player do YouTube totalmente qualificado no formatohttp://www.youtube.com/v/VIDEO_ID?version=3. - O parâmetro
startSecondsopcional aceita um número inteiro/float e especifica o tempo em que o vídeo vai começar a ser reproduzido quandoplayVideo()for chamado. Se você especificarstartSecondse chamarseekTo(), o player vai ser reproduzido a partir do tempo especificado na chamadaseekTo(). Quando o vídeo estiver pronto para ser reproduzido, o player vai transmitir um eventovideo cued(5). - O parâmetro
endSecondsopcional, que só tem suporte na sintaxe de objetos, aceita um número/float e especifica o momento em que o vídeo deve parar de ser reproduzido quandoplayVideo()é chamado. Se você especificar um valorendSecondse chamarseekTo(), o valorendSecondsnão vai mais estar em vigor.
-
loadVideoByUrl-
-
Sintaxe de argumentos
player.loadVideoByUrl(mediaContentUrl:String, startSeconds:Number):Void -
Sintaxe de objetos
player.loadVideoByUrl({mediaContentUrl:String, startSeconds:Number, endSeconds:Number}):Void
Esta função carrega e reproduz o vídeo especificado.
- O parâmetro
mediaContentUrlobrigatório especifica um URL do player do YouTube totalmente qualificado no formatohttp://www.youtube.com/v/VIDEO_ID?version=3. - O parâmetro
startSecondsopcional aceita um número inteiro/float e especifica o momento em que o vídeo deve começar a ser reproduzido. SestartSeconds(o número pode ser um número com ponto flutuante) for especificado, o vídeo vai começar no keyframe mais próximo do tempo especificado. - O parâmetro
endSecondsopcional, que só tem suporte na sintaxe de objetos, aceita um número inteiro/float e especifica o momento em que o vídeo deve parar de ser reproduzido.
-
Funções de enfileiramento para listas
As funções cuePlaylist e loadPlaylist permitem carregar e reproduzir uma playlist. Se você estiver usando a sintaxe de objeto para chamar essas funções, também poderá colocar em fila (ou carregar) uma lista de vídeos enviados por um usuário.
Como as funções operam de maneira diferente, dependendo se elas são chamadas usando a sintaxe do argumento ou a sintaxe do objeto, os dois métodos de chamada são documentados abaixo.
cuePlaylist-
-
Sintaxe de argumentos
Coloca a playlist especificada na fila. Quando a playlist estiver em fila e pronta para ser reproduzida, o player vai transmitir um eventoplayer.cuePlaylist(playlist:String|Array, index:Number, startSeconds:Number):Voidvideo cued(5).-
O parâmetro
playlistobrigatório especifica uma matriz de IDs de vídeos do YouTube. Na API Data do YouTube, a propriedadeiddo recursovideoidentifica o ID do vídeo. -
O parâmetro
indexopcional especifica o índice do primeiro vídeo da playlist que será reproduzido. O parâmetro usa um índice baseado em zero, e o valor padrão do parâmetro é0. Portanto, o comportamento padrão é carregar e reproduzir o primeiro vídeo da playlist. -
O parâmetro
startSecondsopcional aceita um número inteiro/float e especifica o tempo a partir do qual o primeiro vídeo da playlist vai começar a ser reproduzido quando a funçãoplayVideo()for chamada. Se você especificar um valorstartSecondse chamarseekTo(), o player vai ser reproduzido a partir do tempo especificado na chamadaseekTo(). Se você colocar uma playlist em fila e chamar a funçãoplayVideoAt(), o player vai começar a reproduzir o vídeo especificado.
-
-
Sintaxe de objetos
Coloca a lista de vídeos especificada na fila. A lista pode ser uma playlist ou o feed de vídeos enviados por um usuário. A capacidade de enfileirar uma lista de resultados de pesquisa foi descontinuada e não será mais compatível a partir deplayer.cuePlaylist({listType:String, list:String, index:Number, startSeconds:Number}):Void15 de novembro de 2020 .Quando a lista estiver em fila e pronta para ser reproduzida, o player vai transmitir um evento
video cued(5).-
A propriedade
listTypeopcional especifica o tipo de feed de resultados que você está recuperando. Os valores válidos sãoplaylisteuser_uploads. Um valor descontinuado,search, não terá mais suporte a partir de15 de novembro de 2020 . O valor padrão éplaylist. -
A propriedade
listobrigatória contém uma chave que identifica a lista específica de vídeos que o YouTube deve retornar.- Se o valor da propriedade
listTypeforplaylist, a propriedadelistvai especificar o ID da playlist ou uma matriz de IDs de vídeo. Na API Data do YouTube, a propriedadeiddo recursoplaylistidentifica o ID de uma playlist, e a propriedadeiddo recursovideoespecifica um ID de vídeo. - Se o valor da propriedade
listTypeforuser_uploads, a propriedadelistvai identificar o usuário cujos vídeos enviados serão retornados. - Se o valor da propriedade
listTypeforsearch, a propriedadelistvai especificar a consulta de pesquisa. Observação:essa funcionalidade foi descontinuada e não será mais compatível a partir de15 de novembro de 2020 .
- Se o valor da propriedade
-
A propriedade opcional
indexespecifica o índice do primeiro vídeo da lista que será reproduzido. O parâmetro usa um índice baseado em zero, e o valor padrão do parâmetro é0. Portanto, o comportamento padrão é carregar e reproduzir o primeiro vídeo da lista. -
A propriedade
startSecondsopcional aceita um número inteiro ou de ponto flutuante e especifica o tempo a partir do qual o primeiro vídeo da lista vai começar a ser reproduzido quando a funçãoplayVideo()for chamada. Se você especificar um valorstartSecondse chamarseekTo(), o player vai ser reproduzido a partir do tempo especificado na chamadaseekTo(). Se você colocar uma lista em fila e chamar a funçãoplayVideoAt(), o player vai começar a ser reproduzido no início do vídeo especificado.
-
-
loadPlaylist-
-
Sintaxe de argumentos
Essa função carrega e reproduz a playlist especificada.player.loadPlaylist(playlist:String|Array, index:Number, startSeconds:Number):Void-
O parâmetro
playlistobrigatório especifica uma matriz de IDs de vídeos do YouTube. Na API Data do YouTube, a propriedadeiddo recursovideoespecifica um ID de vídeo. -
O parâmetro
indexopcional especifica o índice do primeiro vídeo da playlist que será reproduzido. O parâmetro usa um índice baseado em zero, e o valor padrão do parâmetro é0. Portanto, o comportamento padrão é carregar e reproduzir o primeiro vídeo da playlist. -
O parâmetro
startSecondsopcional aceita um número inteiro/com ponto flutuante e especifica o momento em que o primeiro vídeo da playlist vai começar a ser reproduzido.
-
-
Sintaxe de objetos
Essa função carrega e reproduz a lista especificada. A lista pode ser uma playlist ou o feed de vídeos enviados por um usuário. A capacidade de carregar uma lista de resultados de pesquisa foi descontinuada e não terá mais suporte a partir deplayer.loadPlaylist({list:String, listType:String, index:Number, startSeconds:Number}):Void15 de novembro de 2020 .-
A propriedade
listTypeopcional especifica o tipo de feed de resultados que você está recuperando. Os valores válidos sãoplaylisteuser_uploads. Um valor descontinuado,search, não terá mais suporte a partir de15 de novembro de 2020 . O valor padrão éplaylist. -
A propriedade
listobrigatória contém uma chave que identifica a lista específica de vídeos que o YouTube deve retornar.- Se o valor da propriedade
listTypeforplaylist, a propriedadelistvai especificar um ID de playlist ou uma matriz de IDs de vídeo. Na API Data do YouTube, a propriedadeiddo recursoplaylistespecifica o ID de uma playlist, e a propriedadeiddo recursovideoespecifica o ID de um vídeo. - Se o valor da propriedade
listTypeforuser_uploads, a propriedadelistvai identificar o usuário cujos vídeos enviados serão retornados. - Se o valor da propriedade
listTypeforsearch, a propriedadelistvai especificar a consulta de pesquisa. Observação:essa funcionalidade foi descontinuada e não será mais compatível a partir de15 de novembro de 2020 .
- Se o valor da propriedade
-
A propriedade opcional
indexespecifica o índice do primeiro vídeo da lista que será reproduzido. O parâmetro usa um índice baseado em zero, e o valor padrão do parâmetro é0. Portanto, o comportamento padrão é carregar e reproduzir o primeiro vídeo da lista. -
A propriedade opcional
startSecondsaceita um número inteiro/float e especifica o tempo em que o primeiro vídeo da lista vai começar a ser reproduzido.
-
-
Controles da reprodução e configurações do player
Reproduzir um vídeo
player.playVideo():Void- Reproduz o vídeo carregado/selecionado. O estado final do player após a execução dessa função será
playing(1).
Observação:uma reprodução só conta para a contagem oficial de visualizações de um vídeo se for iniciada por um botão de reprodução nativo no player.
player.pauseVideo():Void- Pausa o vídeo que está sendo reproduzido. O estado final do player após a execução dessa função será
paused(2), a menos que o player esteja no estadoended(0) quando a função for chamada. Nesse caso, o estado do player não vai mudar.
player.stopVideo():Void- Pára e cancela o carregamento do vídeo atual. Esta função deve ser reservada para situações raras em que você sabe que o usuário não assistirá a vídeo adicional no player. Se a intenção é pausar o vídeo, chame a função
pauseVideo. Se você quiser mudar o vídeo que está sendo reproduzido, chame uma das funções de enfileiramento sem chamarstopVideoprimeiro.
Importante:ao contrário da funçãopauseVideo, que deixa o player no estadopaused(2), a funçãostopVideopode colocar o player em qualquer estado de não reprodução, incluindoended(0),paused(2),video cued(5) ouunstarted(-1).
player.seekTo(seconds:Number, allowSeekAhead:Boolean):Void- Procura uma marcação de tempo específica no vídeo. Se o player estiver em pausa quando a função for chamada, ele permanecerá em pausa. Se a função for chamada de outro estado (
playing,video cuedetc.), o player vai reproduzir o vídeo.-
O parâmetro
secondsidentifica o tempo para o qual o jogador precisa avançar.O player continuará a partir do frame principal mais próximo antes desse ponto, a menos que ele já tenha baixado a parte do vídeo que o usuário está buscando.
-
O parâmetro
allowSeekAheaddetermina se o player vai fazer uma nova solicitação para o servidor se o parâmetrosecondsespecificar um tempo fora dos dados de vídeo armazenados em buffer.Recomendamos que você defina esse parâmetro como
falseenquanto o usuário arrasta o mouse pela barra de progresso de um vídeo e, em seguida, defina comotruequando o usuário soltar o mouse. Essa abordagem permite que um usuário role para diferentes pontos de um vídeo sem solicitar novos fluxos de vídeo rolando por pontos sem buffer. Quando o usuário libera o botão do mouse, o player avança para o ponto desejado no vídeo e solicita um novo stream de vídeo, se necessário.
-
Como controlar a reprodução de vídeos em 360°
Observação:a experiência de reprodução de vídeo em 360° tem suporte limitado em dispositivos móveis. Em dispositivos sem suporte, os vídeos em 360° aparecem distorcidos, e não há como mudar a perspectiva de visualização, nem pela API, nem usando sensores de orientação ou respondendo a ações de toque/arrasto na tela do dispositivo.
player.getSphericalProperties():Object- Recupera propriedades que descrevem a perspectiva ou visualização atual do espectador para uma reprodução de vídeo. Além disso:
- Esse objeto só é preenchido para vídeos de 360°, também chamados de vídeos esféricos.
- Se o vídeo atual não for em 360° ou se a função for chamada de um dispositivo sem suporte, ela vai retornar um objeto vazio.
- Em dispositivos móveis compatíveis, se a propriedade
enableOrientationSensorestiver definida comotrue, essa função vai retornar um objeto em que a propriedadefovcontém o valor correto e as outras propriedades são definidas como0.
Propriedades yawUm número no intervalo [0, 360] que representa o ângulo horizontal da visualização em graus, o que reflete o quanto o usuário gira a visualização para a esquerda ou para a direita. A posição neutra, voltada para o centro do vídeo na projeção equiretangular, representa 0°, e esse valor aumenta à medida que o espectador vira para a esquerda. pitchUm número no intervalo [-90, 90] que representa o ângulo vertical da visualização em graus, o que reflete o quanto o usuário ajusta a visualização para olhar para cima ou para baixo. A posição neutra, voltada para o centro do vídeo na projeção equiretangular, representa 0°, e esse valor aumenta à medida que o espectador olha para cima. rollUm número no intervalo [-180, 180] que representa o ângulo de rotação no sentido horário ou anti-horário da visualização em graus. A posição neutra, com o eixo horizontal na projeção equiretangular paralela ao eixo horizontal da visualização, representa 0°. O valor aumenta à medida que a visualização gira no sentido horário e diminui à medida que a visualização gira no sentido anti-horário.
O player incorporado não apresenta uma interface do usuário para ajustar a rolagem da visualização. O rolo pode ser ajustado de duas maneiras mutuamente exclusivas:- Use o sensor de orientação em um navegador para dispositivos móveis para fornecer rolagem para a visualização. Se o sensor de orientação estiver ativado, a função
getSphericalPropertiessempre retornará0como o valor da propriedaderoll. - Se o sensor de orientação estiver desativado, defina o ângulo de inclinação como um valor diferente de zero usando essa API.
fovUm número no intervalo [30, 120] que representa o campo de visão da visualização em graus, medido ao longo da borda mais longa da janela de visualização. A borda menor é ajustada automaticamente para ser proporcional à proporção da visualização.
O valor padrão é 100 graus. Diminuir o valor é como aumentar o conteúdo do vídeo, e aumentar o valor é como diminuir. Esse valor pode ser ajustado usando a API ou a roda do mouse quando o vídeo está no modo de tela cheia.
player.setSphericalProperties(properties:Object):Void- Define a orientação do vídeo para a reprodução de um vídeo em 360°. Se o vídeo atual não for esférico, o método não vai fazer nada, independente da entrada.
A visualização do player responde às chamadas para esse método atualizando para refletir os valores de todas as propriedades conhecidas no objetoproperties. A visualização mantém os valores de todas as outras propriedades conhecidas que não estão incluídas nesse objeto.
Além disso:- Se o objeto tiver propriedades desconhecidas e/ou inesperadas, o player vai ignorá-las.
- Como mencionado no início desta seção, a experiência de reprodução de vídeos em 360° não é compatível com todos os dispositivos móveis.
- Por padrão, em dispositivos móveis compatíveis, essa função define apenas a propriedade
fove não afeta as propriedadesyaw,pitcherollpara reprodução de vídeos em 360°. Confira a propriedadeenableOrientationSensorabaixo para mais detalhes.
propertiestransmitido para a função contém as seguintes propriedades:Propriedades yawConsulte a definição acima. pitchConsulte a definição acima. rollConsulte a definição acima. fovConsulte a definição acima. enableOrientationSensorObservação:essa propriedade afeta a experiência de visualização em 360° apenas em dispositivos compatíveis.Um valor booleano que indica se a incorporação do IFrame precisa responder a eventos que sinalizam mudanças na orientação de um dispositivo compatível, como o DeviceOrientationEventde um navegador para dispositivos móveis. O valor padrão do parâmetro étrue.
Dispositivos móveis compatíveis- Quando o valor é
true, um player incorporado depende somente do movimento do dispositivo para ajustar as propriedadesyaw,pitcherollna reprodução de vídeos em 360°. No entanto, a propriedadefovainda pode ser alterada pela API, que é, na verdade, a única maneira de mudar a propriedadefovem um dispositivo móvel. Esse é o comportamento padrão. - Quando o valor é
false, o movimento do dispositivo não afeta a experiência de visualização em 360°, e as propriedadesyaw,pitch,rollefovprecisam ser definidas pela API.
Dispositivos móveis sem suporte
O valor da propriedadeenableOrientationSensornão tem efeito na experiência de reprodução.
Reproduzir um vídeo em uma playlist
player.nextVideo():Void- Essa função carrega e reproduz o próximo vídeo da playlist.
-
Se
player.nextVideo()for chamado enquanto o último vídeo da playlist estiver sendo assistido e a playlist estiver configurada para reprodução contínua (loop), o player vai carregar e reproduzir o primeiro vídeo da lista. -
Se
player.nextVideo()for chamado enquanto o último vídeo da playlist estiver sendo assistido e a playlist não estiver configurada para reprodução contínua, a reprodução será encerrada.
-
player.previousVideo():Void- Essa função carrega e exibe o vídeo anterior na playlist.
-
Se
player.previousVideo()for chamado enquanto o primeiro vídeo da playlist estiver sendo assistido e a playlist estiver configurada para reprodução contínua (loop), o player vai carregar e reproduzir o último vídeo da lista. -
Se
player.previousVideo()for chamado enquanto o primeiro vídeo da playlist estiver sendo assistido e a playlist não estiver configurada para reprodução contínua, o player vai reiniciar o primeiro vídeo da playlist do início.
-
player.playVideoAt(index:Number):Void- Essa função carrega e exibe o vídeo especificado na playlist.
-
O parâmetro
indexobrigatório especifica o índice do vídeo que você quer reproduzir na playlist. O parâmetro usa um índice com base em zero. Portanto, um valor de0identifica o primeiro vídeo da lista. Se você embaralhou a playlist, essa função vai tocar o vídeo na posição especificada na playlist em ordem aleatória.
-
Alterar o volume do player
player.mute():Void- Desativa o som do player.
player.unMute():Void- Ativa o som do player.
player.isMuted():Boolean- Retorna
truese o player estiver sem som,falsese não.
player.setVolume(volume:Number):Void- Define o volume. Aceita um número inteiro entre
0e100.
player.getVolume():Number- Retorna o volume atual do player, um número inteiro entre
0e100.getVolume()vai retornar o volume mesmo se o player estiver com o som desativado.
Definir o tamanho do player
player.setSize(width:Number, height:Number):Object- Define o tamanho em pixels da
<iframe>que contém o player.
Definir a velocidade do vídeo
player.getPlaybackRate():Number- Esta função recupera a velocidade do vídeo em reprodução. A velocidade do vídeo padrão é
1, o que indica que o vídeo está sendo reproduzido em velocidade normal. As taxas de reprodução podem incluir valores como0.25,0.5,1,1.5e2.
player.setPlaybackRate(suggestedRate:Number):Void- Esta função define a velocidade do vídeo sugerida para o vídeo atual. Se a velocidade do vídeo for alterada, essa alteração será aplicada somente ao vídeo que já estiver indicado ou sendo reproduzido. Se você definir a velocidade de um vídeo indicado, essa taxa ainda estará em vigor quando a função
playVideofor chamada ou quando o usuário iniciar a reprodução diretamente nos controles do player. Além disso, as funções de chamada para indicar ou carregar vídeos ou playlists (cueVideoById,loadVideoByIdetc.) redefinirão a velocidade do vídeo para1.
Chamar essa função não garante que a velocidade de reprodução vai mudar. No entanto, se a velocidade do vídeo for realmente alterada, o eventoonPlaybackRateChangeserá disparado e seu código vai responder ao evento, em vez de chamar a funçãosetPlaybackRate.
O métodogetAvailablePlaybackRatesretorna as velocidades de reprodução possíveis para o vídeo em reprodução. No entanto, se você definir o parâmetrosuggestedRatecomo um valor de ponto flutuante ou inteiro sem suporte, o player vai arredondar esse valor para o valor compatível mais próximo na direção de1.
player.getAvailablePlaybackRates():Array- Essa função retorna o conjunto de velocidades de reprodução em que o vídeo atual está disponível. O valor padrão é
1, o que indica que o vídeo está sendo reproduzido em velocidade normal.
A função retorna uma matriz de números ordenados da velocidade de reprodução mais lenta para a mais rápida. Mesmo que o player não ofereça suporte a velocidades de reprodução variáveis, a matriz sempre precisa conter pelo menos um valor (1).
Definir o comportamento da reprodução de listas
player.setLoop(loopPlaylists:Boolean):Void-
Esta função indica se o player de vídeo deve reproduzir uma lista continuamente ou se deve interromper a reprodução após a conclusão do último vídeo da lista. O comportamento padrão é que as playlists não sejam reproduzidas em loop.
Essa configuração vai persistir mesmo se você carregar ou indicar uma playlist diferente. Isso significa que, se você carregar uma playlist, chamar a função
setLoopcom um valor detruee carregar uma segunda playlist, a segunda playlist também vai ser reproduzida em loop.O parâmetro
loopPlaylistsobrigatório identifica o comportamento de looping.-
Se o valor do parâmetro for
true, o player de vídeo vai reproduzir playlists continuamente. Depois de reproduzir o último vídeo, o player voltará para o início da lista e reproduzirá novamente. -
Se o valor do parâmetro for
false, as exibições vão terminar depois que o player de vídeo exibir o último vídeo de uma playlist.
-
player.setShuffle(shufflePlaylist:Boolean):Void-
Esta função indica se os vídeos de uma lista devem ser misturados para que sejam reproduzidos em uma ordem diferente da designada pelo criador da lista. Se você misturar uma playlist depois de ela já ter começado a ser reproduzida, ela será reordenada enquanto o vídeo for reproduzido. O próximo vídeo a ser reproduzido será selecionados com base na lista reordenada.
Essa configuração não vai persistir se você carregar ou colocar uma playlist diferente em fila. Isso significa que, se você carregar uma playlist, chamar a função
setShufflee carregar uma segunda playlist, a segunda playlist não será embaralhada.O parâmetro
shufflePlaylistobrigatório indica se o YouTube deve embaralhar a playlist.-
Se o valor do parâmetro for
true, o YouTube vai embaralhar a ordem da playlist. Se você instruir a função para misturar uma lista de reprodução que já estiver em ordem aleatória, o YouTube misturará a ordem novamente. -
Se o valor do parâmetro for
false, o YouTube vai mudar a ordem da playlist para a original.
-
Status da reprodução
player.getVideoLoadedFraction():Float- Retorna um número entre
0e1que especifica a porcentagem do vídeo que o player mostra como bufferizado. Esse método retorna um número mais confiável do que os métodosgetVideoBytesLoadedegetVideoBytesTotal, que agora estão obsoletos.
player.getPlayerState():Number- Retorna o estado do jogador. Os valores possíveis são:
-1: não iniciado0– encerrado1– em reprodução2– em pausa3– armazenando em buffer5– vídeo indicado
player.getCurrentTime():Number- Retorna o tempo decorrido em segundos desde que o vídeo começou a ser reproduzido.
player.getVideoStartBytes():Number- Descontinuado em 31 de outubro de 2012. Retorna o número de bytes a partir do qual o arquivo do vídeo começou a ser carregado. Esse método agora sempre retorna um valor de
0. Cenário de exemplo: o usuário avança para um ponto que ainda não foi carregado, e o player faz uma nova solicitação para reproduzir um segmento do vídeo que ainda não foi carregado.
player.getVideoBytesLoaded():Number-
Descontinuado em 18 de julho de 2012. Em vez disso, use o método
getVideoLoadedFractionpara determinar a porcentagem do vídeo que foi armazenada em buffer.
Esse método retorna um valor entre0e1000que aproxima a quantidade de vídeo que foi carregada. Você pode calcular a fração do vídeo que foi carregado dividindo o valor degetVideoBytesLoadedpelo valor degetVideoBytesTotal.
player.getVideoBytesTotal():Number-
Descontinuado em 18 de julho de 2012. Em vez disso, use o método
getVideoLoadedFractionpara determinar a porcentagem do vídeo que foi armazenada em buffer.
Retorna o tamanho em bytes do vídeo carregado/reproduzido no momento ou uma aproximação do tamanho do vídeo.
Esse método sempre retorna um valor de1000. Você pode calcular a fração do vídeo que foi carregado dividindo o valor degetVideoBytesLoadedpelo valor degetVideoBytesTotal.
Recuperar informações do vídeo
player.getDuration():Number- Retorna a duração em segundos do vídeo em reprodução. O
getDuration()vai retornar0até que os metadados do vídeo sejam carregados, o que normalmente acontece logo após o início da reprodução.
Se o vídeo em reprodução for um evento ao vivo, a funçãogetDuration()vai retornar o tempo decorrido desde o início da transmissão de vídeo ao vivo. Especificamente, essa é a quantidade de tempo que o vídeo foi transmitido sem ser redefinido ou interrompido. Esta duração é geralmente maior do que a tempo real do evento, uma vez que o streaming pode começar antes da hora de início do evento.
player.getVideoUrl():String- Retorna o URL do YouTube.com para o vídeo carregado/reproduzido no momento.
player.getVideoEmbedCode():String- Retorna o código de incorporação do vídeo carregado/reproduzido no momento.
Recuperar informações da playlist
player.getPlaylist():Array- Essa função retorna uma matriz dos IDs de vídeo na playlist conforme o pedido atual. Por padrão, ela retornará IDs de vídeo na ordem designada pelo proprietário da playlist. No entanto, se você tiver chamado a função
setShufflepara embaralhar a ordem da playlist, o valor de retorno da funçãogetPlaylist()vai refletir a ordem embaralhada.
player.getPlaylistIndex():Number- Essa função retorna o índice do vídeo da playlist que está sendo reproduzido.
-
Se você não reproduziu a playlist aleatoriamente, o valor de retorno identificará a posição em que o criador de conteúdo da playlist colocou o vídeo. O valor de retorno usa um índice com base em zero, portanto, o valor
0identifica o primeiro vídeo da playlist. -
Se você misturou a playlist, o valor de retorno identificará a ordem do vídeo dentro da lista aleatória.
-
Adicionar ou remover um listener de evento
player.addEventListener(event:String, listener:String):Void- Adiciona uma função de listener para o
eventespecificado. A seção Eventos abaixo identifica os diferentes eventos que o jogador pode acionar. O listener é uma string que especifica a função que será executada quando o evento especificado for disparado.
player.removeEventListener(event:String, listener:String):Void- Remove uma função de listener para o
eventespecificado. Olisteneré uma string que identifica a função que não será mais executada quando o evento especificado for acionado.
Acessar e modificar nós DOM
player.getIframe():Object- Esse método retorna o nó DOM para o
<iframe>incorporado.
player.destroy():Void- Remove o
<iframe>que contém o player.
Eventos
A API dispara eventos para notificar seu aplicativo sobre mudanças no player integrado. Como observado na seção anterior, é possível assinar eventos adicionando um listener de eventos ao criar o objeto YT.Player e também usar a função addEventListener.
A API passará um objeto de evento como único argumento para cada uma dessas funções. O objeto de evento tem as seguintes propriedades:
- O
targetdo evento identifica o player de vídeo correspondente. - O
datado evento especifica um valor relevante para o evento. Os eventosonReadyeonAutoplayBlockednão especificam uma propriedadedata.
A lista a seguir define os eventos que a API dispara:
onReady- Esse evento é acionado sempre que um jogador termina de carregar e está pronto para começar a receber chamadas de API. O aplicativo precisa implementar essa função se você quiser executar automaticamente determinadas operações, como reproduzir o vídeo ou mostrar informações sobre ele, assim que o player estiver pronto.
O exemplo abaixo mostra uma função de exemplo para processar esse evento. O objeto de evento que a API transmite para a função tem uma propriedadetarget, que identifica o player. A função recupera o código de incorporação do vídeo carregado, começa a reproduzir o vídeo e exibe o código de incorporação no elemento da página que tem um valoriddeembed-code.function onPlayerReady(event) { var embedCode = event.target.getVideoEmbedCode(); event.target.playVideo(); if (document.getElementById('embed-code')) { document.getElementById('embed-code').innerHTML = embedCode; } }
onStateChange- Esse evento é acionado sempre que o estado do player muda.
A propriedade
datado objeto de evento que a API transmite para a função de listener de eventos especifica um número inteiro que corresponde ao novo estado do player. Os valores possíveis são:-1(não iniciado)0(encerrado)1(em reprodução)2(pausada)3(armazenando em buffer)5(vídeo indicado).
unstarted(-1). Quando um vídeo é preparado para ser reproduzido, o player transmite um eventovideo cued(5). Em seu código, você pode especificar valores de números inteiros ou pode usar uma das seguintes variáveis namespaced:YT.PlayerState.ENDEDYT.PlayerState.PLAYINGYT.PlayerState.PAUSEDYT.PlayerState.BUFFERINGYT.PlayerState.CUED
onPlaybackQualityChange- Esse evento é disparado sempre que a qualidade de reprodução do vídeo muda. Isso pode indicar uma mudança no ambiente de
reprodução do espectador. Consulte a Central de Ajuda do YouTube para mais
informações sobre fatores que afetam as condições de reprodução ou que podem causar o evento.
O valor da propriedadedatado objeto de evento que a API transmite para a função de listener do evento será uma string que identifica a nova qualidade de reprodução. Os valores possíveis são:smallmediumlargehd720hd1080highres
onPlaybackRateChange- Esse evento é acionado sempre que a velocidade de reprodução do vídeo muda. Por exemplo, se você chamar a função
setPlaybackRate(suggestedRate), esse evento será disparado se a velocidade de reprodução for realmente alterada. Seu aplicativo vai responder ao evento e não pode assumir que a velocidade do vídeo será automaticamente alterada quando a funçãosetPlaybackRate(suggestedRate)for chamada. Da mesma forma, seu código não pode assumir que a velocidade do vídeo será alterada somente como resultado de uma chamada explícita asetPlaybackRate.
O valor da propriedadedatado objeto de evento que a API passa para a função de listener do evento será um número que identifica a nova velocidade do vídeo. O métodogetAvailablePlaybackRatesretorna uma lista das velocidades de reprodução válidas para o vídeo indicado ou em reprodução.
onError- Esse evento é acionado se ocorrer um erro no player.
A API vai transmitir um objeto
eventpara a função do listener de eventos. A propriedadedatadesse objeto vai especificar um número inteiro que identifica o tipo de erro ocorrido. Os valores possíveis são:2– A solicitação contém um valor de parâmetro inválido. Por exemplo, este erro ocorre se você especificar um ID de vídeo que não tem 11 caracteres, ou se o ID de vídeo contém caracteres inválidos, como pontos de exclamação ou asteriscos.5– O conteúdo solicitado não pode ser reproduzido em um player5HTML ou outro erro relacionado ao player do HTML5ocorreu.100– O vídeo solicitado não foi encontrado. Esse erro ocorrerá quando um vídeo tiver sido removido (por qualquer motivo) ou marcado como privado.101- O proprietário do vídeo solicitado não permite que ele seja reproduzido em players incorporados.150– Esse erro é o mesmo que o101. É apenas um erro101disfarçado.
onApiChange- Esse evento é acionado para indicar que o player carregou (ou descarregou) um módulo com métodos de API expostos. Seu aplicativo pode ouvir esse evento e, em seguida, sondar o player para determinar quais opções estão expostas para o módulo recém-carregado. Seu aplicativo pode, então, recuperar ou atualizar as configurações existentes para essas opções.
O comando a seguir recupera uma matriz de nomes de módulos para os quais você pode definir opções de player:
No momento, o único módulo para o qual você pode definir opções é oplayer.getOptions();
captions, que lida com legendas no player. Ao receber um eventoonApiChange, o app pode usar o comando a seguir para determinar quais opções podem ser definidas para o módulocaptions:
Ao consultar o player com esse comando, você pode confirmar se as opções que você quer acessar estão realmente acessíveis. Os comandos a seguir extraem e atualizam as opções do módulo:player.getOptions('captions');
A tabela abaixo lista as opções compatíveis com a API:Retrieving an option: player.getOption(module, option); Setting an option player.setOption(module, option, value);
Módulo Opção Descrição legendas fontSize Essa opção ajusta o tamanho da fonte das legendas exibidas no player.
Os valores válidos são-1,0,1,2e3. O tamanho padrão é0, e o menor é-1. Definir essa opção como um número inteiro abaixo de-1fará com que o tamanho de legenda mais pequeno seja exibido, enquanto definir essa opção como um número inteiro acima de3fará com que o tamanho de legenda mais grande seja exibido.legendas reload Essa opção recarrega os dados de closed caption para o vídeo que está sendo reproduzido. O valor será nullse você recuperar o valor da opção. Defina o valor comotruepara recarregar os dados de legenda.
onAutoplayBlocked- Esse evento é acionado sempre que o navegador bloqueia a reprodução automática ou os recursos de reprodução de vídeo com script,
coletivamente chamados de "reprodução automática". Isso inclui a reprodução tentada com qualquer uma das
seguintes APIs do player:
- Parâmetro
autoplay - Função
loadPlaylist - Função
loadVideoById - Função
loadVideoByUrl - Função
playVideo
Para mais detalhes, consulte as políticas específicas do navegador (Apple Safari / Webkit, Google Chrome, Mozilla Firefox) e o guia de autoplay da Mozilla. - Parâmetro
Exemplos
Criação de objetos YT.Player
-
Exemplo 1: usar a API com o <iframe> atual
Neste exemplo, um elemento
<iframe>na página já define o player com que a API será usada. O URLsrcdo player precisa definir o parâmetroenablejsapicomo1ou o atributoenablejsapido elemento<iframe>comotrue.A função
onPlayerReadymuda a cor da borda ao redor do player para laranja quando ele está pronto. A funçãoonPlayerStateChangemuda a cor da borda ao redor do player com base no status atual dele. Por exemplo, a cor é verde quando o player está tocando, vermelha quando está pausado, azul quando está em buffer e assim por diante.Este exemplo usa o seguinte código:
<iframe id="existing-iframe-example" width="640" height="360" src="https://www.youtube.com/embed/M7lc1UVf-VE?enablejsapi=1" frameborder="0" style="border: solid 4px #37474F" ></iframe> <script type="text/javascript"> var tag = document.createElement('script'); tag.id = 'iframe-demo'; tag.src = 'https://www.youtube.com/iframe_api'; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubeIframeAPIReady() { player = new YT.Player('existing-iframe-example', { events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); } function onPlayerReady(event) { document.getElementById('existing-iframe-example').style.borderColor = '#FF6D00'; } function changeBorderColor(playerStatus) { var color; if (playerStatus == -1) { color = "#37474F"; // unstarted = gray } else if (playerStatus == 0) { color = "#FFFF00"; // ended = yellow } else if (playerStatus == 1) { color = "#33691E"; // playing = green } else if (playerStatus == 2) { color = "#DD2C00"; // paused = red } else if (playerStatus == 3) { color = "#AA00FF"; // buffering = purple } else if (playerStatus == 5) { color = "#FF6DOO"; // video cued = orange } if (color) { document.getElementById('existing-iframe-example').style.borderColor = color; } } function onPlayerStateChange(event) { changeBorderColor(event.data); } </script>
-
Exemplo 2: reprodução alta
Este exemplo cria um player de vídeo de 1.280 px por 720 px. O listener de eventos para o evento
onReadychama a funçãosetVolumepara ajustar o volume para a configuração mais alta.function onYouTubeIframeAPIReady() { var player; player = new YT.Player('player', { width: 1280, height: 720, videoId: 'M7lc1UVf-VE', events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange, 'onError': onPlayerError } }); } function onPlayerReady(event) { event.target.setVolume(100); event.target.playVideo(); }
-
Exemplo 3 : neste exemplo, os parâmetros do player são definidos para reproduzir o vídeo automaticamente quando ele for carregado e ocultar os controles do player de vídeo. Ele também adiciona listeners de eventos para vários eventos transmitidos pela API.
function onYouTubeIframeAPIReady() { var player; player = new YT.Player('player', { videoId: 'M7lc1UVf-VE', playerVars: { 'autoplay': 1, 'controls': 0 }, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange, 'onError': onPlayerError } }); }
Como controlar vídeos em 360°
Este exemplo usa o seguinte código:
<style> .current-values { color: #666; font-size: 12px; } </style> <!-- The player is inserted in the following div element --> <div id="spherical-video-player"></div> <!-- Display spherical property values and enable user to update them. --> <table style="border: 0; width: 640px;"> <tr style="background: #fff;"> <td> <label for="yaw-property">yaw: </label> <input type="text" id="yaw-property" style="width: 80px"><br> <div id="yaw-current-value" class="current-values"> </div> </td> <td> <label for="pitch-property">pitch: </label> <input type="text" id="pitch-property" style="width: 80px"><br> <div id="pitch-current-value" class="current-values"> </div> </td> <td> <label for="roll-property">roll: </label> <input type="text" id="roll-property" style="width: 80px"><br> <div id="roll-current-value" class="current-values"> </div> </td> <td> <label for="fov-property">fov: </label> <input type="text" id="fov-property" style="width: 80px"><br> <div id="fov-current-value" class="current-values"> </div> </td> <td style="vertical-align: bottom;"> <button id="spherical-properties-button">Update properties</button> </td> </tr> </table> <script type="text/javascript"> var tag = document.createElement('script'); tag.id = 'iframe-demo'; tag.src = 'https://www.youtube.com/iframe_api'; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var PROPERTIES = ['yaw', 'pitch', 'roll', 'fov']; var updateButton = document.getElementById('spherical-properties-button'); // Create the YouTube Player. var ytplayer; function onYouTubeIframeAPIReady() { ytplayer = new YT.Player('spherical-video-player', { height: '360', width: '640', videoId: 'FAtdv94yzp4', }); } // Don't display current spherical settings because there aren't any. function hideCurrentSettings() { for (var p = 0; p < PROPERTIES.length; p++) { document.getElementById(PROPERTIES[p] + '-current-value').innerHTML = ''; } } // Retrieve current spherical property values from the API and display them. function updateSetting() { if (!ytplayer || !ytplayer.getSphericalProperties) { hideCurrentSettings(); } else { let newSettings = ytplayer.getSphericalProperties(); if (Object.keys(newSettings).length === 0) { hideCurrentSettings(); } else { for (var p = 0; p < PROPERTIES.length; p++) { if (newSettings.hasOwnProperty(PROPERTIES[p])) { currentValueNode = document.getElementById(PROPERTIES[p] + '-current-value'); currentValueNode.innerHTML = ('current: ' + newSettings[PROPERTIES[p]].toFixed(4)); } } } } requestAnimationFrame(updateSetting); } updateSetting(); // Call the API to update spherical property values. updateButton.onclick = function() { var sphericalProperties = {}; for (var p = 0; p < PROPERTIES.length; p++) { var propertyInput = document.getElementById(PROPERTIES[p] + '-property'); sphericalProperties[PROPERTIES[p]] = parseFloat(propertyInput.value); } ytplayer.setSphericalProperties(sphericalProperties); } </script>
Integração da API Media Integrity da WebView do Android
O YouTube estendeu a API Android WebView Media Integrity para permitir que players de mídia incorporados, incluindo players do YouTube incorporados em aplicativos Android, verifiquem a autenticidade do app de incorporação. Com essa mudança, os apps incorporados enviam automaticamente um ID de app atestado para o YouTube. Os dados coletados pelo uso dessa API são os metadados do app (o nome do pacote, o número da versão e o certificado de assinatura) e um token de atestado do dispositivo gerado pelo Google Play Services.
Os dados são usados para verificar a integridade do aplicativo e do dispositivo. Ele é criptografado, não é compartilhado com terceiros e é excluído após um período de retenção fixo. Os desenvolvedores de apps podem configurar a identidade do app na API Media Integrity do WebView. A configuração aceita uma opção de desativação.
Histórico de revisões
June 24, 2024
The documentation has been updated to note that YouTube has extended the Android WebView Media Integrity API to enable embedded media players, including YouTube player embeds in Android applications, to verify the embedding app's authenticity. With this change, embedding apps automatically send an attested app ID to YouTube.
November 20, 2023
The new onAutoplayBlocked event API is now available.
This event notifies your application if the browser blocks autoplay or scripted playback.
Verification of autoplay success or failure is an
established paradigm
for HTMLMediaElements, and the onAutoplayBlocked event now provides similar
functionality for the IFrame Player API.
April 27, 2021
The Getting Started and Loading a Video Player sections have been updated to include examples of using a playerVars object to customize the player.
October 13, 2020
Note: This is a deprecation announcement for the embedded player
functionality that lets you configure the player to load search results. This announcement affects
the IFrame Player API's queueing functions for lists,
cuePlaylist and
loadPlaylist.
This change will become effective on or after cuePlaylist or loadPlaylist functions that set the listType
property to search will generate a 4xx response code, such as
404 (Not Found) or 410 (Gone). This change
also affects the list property for those functions as that property no longer
supports the ability to specify a search query.
As an alternative, you can use the YouTube Data API's
search.list method to retrieve search
results and then load selected videos in the player.
October 24, 2019
The documentation has been updated to reflect the fact that the API no longer supports functions for setting or retrieving playback quality. As explained in this YouTube Help Center article, to give you the best viewing experience, YouTube adjusts the quality of your video stream based on your viewing conditions.
The changes explained below have been in effect for more than one year. This update merely aligns the documentation with current functionality:
- The
getPlaybackQuality,setPlaybackQuality, andgetAvailableQualityLevelsfunctions are no longer supported. In particular, calls tosetPlaybackQualitywill be no-op functions, meaning they will not actually have any impact on the viewer's playback experience. - The queueing functions for videos and playlists --
cueVideoById,loadVideoById, etc. -- no longer support thesuggestedQualityargument. Similarly, if you call those functions using object syntax, thesuggestedQualityfield is no longer supported. IfsuggestedQualityis specified, it will be ignored when the request is handled. It will not generate any warnings or errors. - The
onPlaybackQualityChangeevent is still supported and might signal a change in the viewer's playback environment. See the Help Center article referenced above for more information about factors that affect playback conditions or that might cause the event to fire.
May 16, 2018
The API now supports features that allow users (or embedders) to control the viewing perspective for 360° videos:
- The
getSphericalPropertiesfunction retrieves the current orientation for the video playback. The orientation includes the following data:- yaw - represents the horizontal angle of the view in degrees, which reflects the extent to which the user turns the view to face further left or right
- pitch - represents the vertical angle of the view in degrees, which reflects the extent to which the user adjusts the view to look up or down
- roll - represents the rotational angle (clockwise or counterclockwise) of the view in degrees.
- fov - represents the field-of-view of the view in degrees, which reflects the extent to which the user zooms in or out on the video.
- The
setSphericalPropertiesfunction modifies the view to match the submitted property values. In addition to the orientation values described above, this function supports a Boolean field that indicates whether the IFrame embed should respond toDeviceOrientationEventson supported mobile devices.
This example demonstrates and lets you test these new features.
June 19, 2017
This update contains the following changes:
-
Documentation for the YouTube Flash Player API and YouTube JavaScript Player API has been removed and redirected to this document. The deprecation announcement for the Flash and JavaScript players was made on January 27, 2015. If you haven't done so already, please migrate your applications to use IFrame embeds and the IFrame Player API.
August 11, 2016
This update contains the following changes:
-
The newly published YouTube API Services Terms of Service ("the Updated Terms"), discussed in detail on the YouTube Engineering and Developers Blog, provides a rich set of updates to the current Terms of Service. In addition to the Updated Terms, which will go into effect as of February 10, 2017, this update includes several supporting documents to help explain the policies that developers must follow.
The full set of new documents is described in the revision history for the Updated Terms. In addition, future changes to the Updated Terms or to those supporting documents will also be explained in that revision history. You can subscribe to an RSS feed listing changes in that revision history from a link in that document.
June 29, 2016
This update contains the following changes:
-
The documentation has been corrected to note that the
onApiChangemethod provides access to thecaptionsmodule and not theccmodule.
June 24, 2016
The Examples section has been updated to include an example that demonstrates how to use the API with an existing <iframe> element.
January 6, 2016
The clearVideo function has been deprecated and removed from the documentation. The function no longer has any effect in the YouTube player.
December 18, 2015
European Union (EU) laws require that certain disclosures must be given to and consents obtained from end users in the EU. Therefore, for end users in the European Union, you must comply with the EU User Consent Policy. We have added a notice of this requirement in our YouTube API Terms of Service.
April 28, 2014
This update contains the following changes:
-
The new removeEventListener function lets you remove a listener for a specified event.
March 25, 2014
This update contains the following changes:
-
The Requirements section has been updated to note that embedded players must have a viewport that is at least 200px by 200px. If a player displays controls, it must be large enough to fully display the controls without shrinking the viewport below the minimum size. We recommend 16:9 players be at least 480 pixels wide and 270 pixels tall.
July 23, 2013
This update contains the following changes:
-
The Overview now includes a video of a 2011 Google I/O presentation that discusses the iframe player.
October 31, 2012
This update contains the following changes:
-
The Queueing functions section has been updated to explain that you can use either argument syntax or object syntax to call all of those functions. Note that the API may support additional functionality in object syntax that the argument syntax does not support.
In addition, the descriptions and examples for each of the video queueing functions have been updated to reflect the newly added support for object syntax. (The API's playlist queueing functions already supported object syntax.)
-
When called using object syntax, each of the video queueing functions supports an
endSecondsproperty, which accepts a float/integer and specifies the time when the video should stop playing whenplayVideo()is called. -
The
getVideoStartBytesmethod has been deprecated. The method now always returns a value of0.
August 22, 2012
This update contains the following changes:
-
The example in the Loading a video player section that demonstrates how to manually create the
<iframe>tag has been updated to include a closing</iframe>tag since theonYouTubeIframeAPIReadyfunction is only called if the closing</iframe>element is present.
August 6, 2012
This update contains the following changes:
-
The Operations section has been expanded to list all of the supported API functions rather than linking to the JavaScript Player API Reference for that list.
-
The API supports several new functions and one new event that can be used to control the video playback speed:
-
Functions
getAvailablePlaybackRates– Retrieve the supported playback rates for the cued or playing video. Note that variable playback rates are currently only supported in the HTML5 player.getPlaybackRate– Retrieve the playback rate for the cued or playing video.setPlaybackRate– Set the playback rate for the cued or playing video.
-
Events
onPlaybackRateChange– This event fires when the video's playback rate changes.
-
July 19, 2012
This update contains the following changes:
-
The new
getVideoLoadedFractionmethod replaces the now-deprecatedgetVideoBytesLoadedandgetVideoBytesTotalmethods. The new method returns the percentage of the video that the player shows as buffered. -
The
onErrorevent may now return an error code of5, which indicates that the requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred. -
The Requirements section has been updated to indicate that any web page using the IFrame API must also implement the
onYouTubeIframeAPIReadyfunction. Previously, the section indicated that the required function was namedonYouTubePlayerAPIReady. Code samples throughout the document have also been updated to use the new name.Note: To ensure that this change does not break existing implementations, both names will work. If, for some reason, your page has an onYouTubeIframeAPIReadyfunction and anonYouTubePlayerAPIReadyfunction, both functions will be called, and theonYouTubeIframeAPIReadyfunction will be called first. -
The code sample in the Getting started section has been updated to reflect that the URL for the IFrame Player API code has changed to
http://www.youtube.com/iframe_api. To ensure that this change does not affect existing implementations, the old URL (http://www.youtube.com/player_api) will continue to work.
July 16, 2012
This update contains the following changes:
-
The Operations section now explains that the API supports the
setSize()anddestroy()methods. ThesetSize()method sets the size in pixels of the<iframe>that contains the player and thedestroy()method removes the<iframe>.
June 6, 2012
This update contains the following changes:
-
We have removed the
experimentalstatus from the IFrame Player API. -
The Loading a video player section has been updated to point out that when inserting the
<iframe>element that will contain the YouTube player, the IFrame API replaces the element specified in the constructor for the YouTube player. This documentation change does not reflect a change in the API and is intended solely to clarify existing behavior.In addition, that section now notes that the insertion of the
<iframe>element could affect the layout of your page if the element being replaced has a different display style than the inserted<iframe>element. By default, an<iframe>displays as aninline-blockelement.
March 30, 2012
This update contains the following changes:
-
The Operations section has been updated to explain that the IFrame API supports a new method,
getIframe(), which returns the DOM node for the IFrame embed.
March 26, 2012
This update contains the following changes:
-
The Requirements section has been updated to note the minimum player size.