Processamento de vídeo para suportar diferentes web players e qualidades

0

Estou tentando realizar algo semelhante ao player do YouTube. O maior problema que estou enfrentando agora é como processar arquivos de vídeo enviados por usuários.

Por exemplo, como quero alternar entre 240p, 360p, 480p e 720p, preciso converter cada arquivo de vídeo carregado em 4 arquivos diferentes para cada resolução e, porque nem todos os navegadores podem reproduzir .mp4, preciso .ogg,. mp4, .webm, o que faz 12 arquivos de vídeo. Se levar 10 minutos para processar um arquivo de vídeo, levaria cerca de 2 horas para processar o arquivo que é insano. Eu sei que o YouTube usa servidores em nuvem para processar cada arquivo de vídeo e tem muito poder de processamento, mas acho que deve haver algum truque para isso.

Então, minha pergunta é o que posso fazer sobre isso e como o YouTube lida com isso?

A minha segunda pergunta é: o FFmpeg é adequado para este tipo de trabalho e, em caso afirmativo, porque é que este comando demora muito para terminar? Eu executei este comando em um arquivo de vídeo 720p com duração de 3 minutos e depois de 15 minutos de processamento cancelei o processo.

ffmpeg -i hd.webm a.mp4

Este, por outro lado, demorou cerca de 7 minutos para terminar, mas gerou um arquivo de vídeo de 200MB com um arquivo de 25MB:

ffmpeg -i hd.webm -c:v libx264 -preset ultrafast a.mp4
    
por Linas 16.05.2013 / 00:35

1 resposta

3

Você precisará de apenas 4 arquivos de vídeo para os diferentes tamanhos de vídeo. Mas na verdade você não quer esses três contêineres de mídia diferentes, onde você quer apenas um contêiner que pode ser manipulado pelo seu player de vídeo. Codifique o vídeo usando apenas um codec, como o H.264.

Agora você está apenas processando os vídeos sem saber o que está realmente fazendo. As configurações padrão do FFmpeg são usadas, por isso você experimenta esses resultados. A configuração ultrafast para libx264 codifica relativamente rápido, mas causa um tamanho de arquivo maior. Leia o guia de codificação x264 para obter mais informações sobre as configurações mais importantes da libx264.

Se você deseja codificar um vídeo para, por exemplo, 480p aqui é um exemplo de uma linha de comando:

ffmpeg -i hd.webm -s 854x480 -b:v 15M -b:a 128k -c:v libx264 -c:a libfdk_aac -preset veryfast output.mp4

Além disso, esta página de suporte do YouTube

    
por 16.05.2013 / 11:51