Reproduzindo videos

Godot suporta a reprodução de vídeo com o nó VideoPlayer.

Formatos de reprodução suportados

O único formato suportado no núcleo é Ogg Theora (não confundir com áudio Ogg Vorbis). É possível que as extensões tragam suporte para formatos adicionais, mas essas extensões ainda não existem em julho de 2022.

H.264 e H.265 não podem ser suportados no núcleo do Godot, pois ambos estão protegidos por patentes de software. O AV1 é isento de royalties, mas permanece lento para decodificar na CPU e o suporte de decodificação de hardware ainda não está disponível em todas as GPUs em uso.

O WebM é suportado no núcleo no Godot 3.x, mas o suporte para ele será removido no 4.0, pois provou ser muito bugado e difícil de manter. Portanto, o uso do WebM não é recomendado.

Nota

Você pode encontrar vídeos com extensões .ogg ou .ogx, que são extensões genéricas para dados dentro de um contêiner Ogg.

Renomear essas extensões de arquivo para .ogv talvez possa permitir que os vídeos sejam importados no Godot. No entanto, nem todos os arquivos com extensões .ogg ou .ogx são vídeos - alguns deles podem conter apenas áudio.

Configurando o VideoPlayer

  1. Crie um nó VideoPlayer usando a caixa de diálogo Adicionar/Criar Novo Nó.

  2. Selecione o nó VideoPlayer no painel da árvore de cena, vá para o inspetor e carregue um arquivo .ogv na propriedade Stream.

  3. Se quiser que o vídeo seja reproduzido assim que a cena for carregada, marque Autoplay no inspetor. Caso contrário, deixe Autoplay desativado e chame play() no nó VideoPlayer em um script para iniciar a reprodução quando desejado.

Lidando com redimensionamento e diferentes proporções

Por padrão no Godot 4.0, o VideoPlayer será redimensionado automaticamente para corresponder à resolução do vídeo. Você pode fazê-lo seguir o dimensionamento normal Control habilitando Expand no nó VideoPlayer.

Para ajustar como o nó VideoPlayer é redimensionado dependendo do tamanho da janela, ajuste as âncoras usando o menu Layout na parte superior da janela de visualização do editor 2D. No entanto, essa configuração pode não ser poderosa o suficiente para lidar com todos os casos de uso, como reproduzir vídeos em tela cheia sem distorcer o vídeo (mas com espaço vazio nas bordas). Para obter mais controle, você pode usar um nó AspectRatioContainer, que é projetado para lidar com esse tipo de caso de uso:

Adicione um nó AspectRatioContainer. Certifique-se de que não seja filho de nenhum outro nó de contêiner. Selecione o nó AspectRatioContainer e defina seu Layout na parte superior do editor 2D como Full Rect. Defina Ratio no nó AspectRatioContainer para corresponder à proporção do seu vídeo. Você pode usar fórmulas matemáticas no inspetor para se ajudar. Lembre-se de transformar um dos operandos em float. Caso contrário, o resultado da divisão será sempre um número inteiro.

A propriedade Ratio de AspectRatioContainer sendo modificada no inspetor do editor

Isso avaliará para (aproximadamente) 1,777778

Depois de configurar o AspectRatioContainer, repare seu nó VideoPlayer para ser um filho do nó AspectRatioContainer. Certifique-se de que Expand esteja desativado no VideoPlayer. Seu vídeo agora deve ser dimensionado automaticamente para caber na tela inteira, evitando distorções.

Ver também

Veja Internacionalizando jogos para mais dicas sobre como suportar múltiplas proporções em seu projeto.

Exibindo um vídeo em uma superfície 3D

Usando um nó VideoPlayer como filho de um nó Viewport, é possível exibir qualquer nó 2D em uma superfície 3D. Por exemplo, isso pode ser usado para exibir outdoors animados quando a animação quadro a quadro exigir muita memória.

Isto pode ser feito com as seguintes etapas:

  1. Crie um nó Viewport. Defina seu tamanho para corresponder ao tamanho do seu vídeo em pixels.

  2. Crie um nó VideoPlayer como um filho do nó Viewport e especifique um caminho de vídeo nele. Certifique-se de Expand está desativado e habilite Autoplay* se necessário.

  3. Crie um nó MeshInstance com um recurso PlaneMesh ou QuadMesh em sua propriedade Mesh. Redimensione a malha para corresponder à proporção do vídeo (caso contrário, ela aparecerá distorcida).

  4. Crie um novo recurso SpatialMaterial na propriedade Material Override* na seção GeometryInstance.

  5. Habilite Local To Scene na seção Resource (Recurso) do SpatialMaterial (na parte inferior). Isso é necessário antes que você possa usar uma ViewportTexture em sua propriedade Albedo Texture.

  6. No SpatialMaterial, defina a propriedade Albedo > Texture como New ViewportTexture. Edite o novo recurso clicando nele e especifique o caminho para o nó Viewport na propriedade Viewport Path.

  7. Habilite Albedo Tex Force sRGB no SpatialMaterial para evitar que as cores fiquem desbotadas.

  8. Se o outdoor deve emitir sua própria luz, ative Flags > Unshaded para melhorar o desempenho de renderização.

Veja Usando Viewports e o GUI em demonstração 3D para mais informações sobre a configuração desta instalação.

Limitações de reprodução

Existem várias limitações com a implementação atual da reprodução de vídeo no Godot:

  • Não há suporte para a busca até a um determinado ponto do vídeo.

  • A alteração da velocidade de reprodução não é suportada. O VideoPlayer também não seguirá Engine.time_scale.

  • Looping não é suportado, mas você pode conectar o sinal finished de um VideoPlayer a uma função que reproduz o vídeo novamente. No entanto, isso fará com que um quadro preto fique visível quando o vídeo for reiniciado. Isso pode ser resolvido adicionando um fade para preto no arquivo de vídeo antes que o vídeo termine, ou ocultando o vídeo por um quadro e exibindo um TextureRect com uma captura de tela do primeiro quadro do vídeo até que o vídeo seja reiniciado.

  • A transmissão de um vídeo de um URL não é suportada.