Que bando de scripts ffmpeg eu preciso para obter o "Video for everyone" compatível com HTML5?

12

Que lista de comandos devo fazer em ffmpeg / mencoder / some_other_CLI_app para obter um vídeo em todos os formatos corretos para usar Video for Everybody ?

i.e. Existe uma sutileza que impede que haja um tutorial mecânico que diz

VIDEO=video.mp4
TYPE=$(ffmpeg --find-information-about-the-video ... )
ffmpeg ... > video.mov
ffmpeg ... > video.flv
ffmpeg ... > video.webm
ffmpeg ... > video.h.264
...

Copie e cole o código do Video for Everybody na sua página?

Meu objetivo é ter um vídeo incorporado na minha página pessoal hospedada por mim. HTML5 com fallback flash é o preferido, então a maneira mais simples parece ser Video for Everybody. Mas essa página deixa a parte mais complicada, codificando o vídeo em todos os formatos diferentes, para o leitor descobrir um artigo completo e extenso sobre formatos de vídeo . Certamente isso não é necessário. Eu poderia fornecer uma lista de comandos para um usuário converter cegamente um arquivo de áudio em vários formatos diferentes. Espero que um guru ffmpeg possa fazer o mesmo para o vídeo.

    
por John Baber-Lucero 13.05.2012 / 17:01

1 resposta

21

Observação: essa resposta foi bastante editada desde a postagem original. É 2017 agora; o streaming funciona de maneira diferente do que costumava ser. Este guia pressupõe o download progressivo simples de um fluxo de vídeo em uma determinada resolução - sem transmissão adaptativa.

Requisitos

Em primeiro lugar, certifique-se de fazer o download de uma versão ffmpeg recente (faça o download de uma versão estática; não ligue para apt-get install ffmpeg ou similar). Idealmente, compile você mesmo . Não demora muito tempo.

Para gerar vídeos suportados pela maioria dos navegadores, verifique sempre a mais recente tabela de compatibilidade . Não há codec / formato único que funcione em todos os navegadores, mas se você gerar H.264 em MP4 e VP9 no WebM, com o respectivo codec de áudio, terá suporte para o Chrome, Firefox, Safari e algumas versões do IE.

WebM (VP9 / Vorbis)

Siga as recomendações do Guia do FFmpeg VP9 e use uma abordagem de codificação de duas passagens com restrições de taxa:

ffmpeg -y -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libvorbis -pass 1 -f webm /dev/null && \
ffmpeg -i input-c:v libvpx-vp9 -b:v 2000k -minrate 500k -maxrate 2500k -c:a libvorbis -pass 2 output.webm

A taxa de bits de destino depende da sua resolução, taxa de quadros, tipo de conteúdo e qualidade desejada. 2,5 MBit / s deve ser um bom compromisso para vídeo HD a 30 fps. Consulte este guia do Google para obter algumas recomendações.

MP4 (H.264 / AAC)

Siga as recomendações no Guia FFmpeg H.264 e use uma abordagem de codificação de duas passagens com restrições de taxa:

ffmpeg -y -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 1 -c:a aac -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -b:v 5000k -minrate 1000k -maxrate 8000k -pass 2 -c:a aac -movflags faststart output.mp4

Aqui, a taxa de bits de destino deve ser cerca de 50% maior que a do vídeo VP9, já que o H.264 não é tão eficiente. Adicione a opção -movflags faststart ao segundo passe para acelerar o carregamento inicial do vídeo.

Para definir opções de áudio, consulte o Guia de codificação AAC .

    
por 13.05.2012 / 17:54