Eu gero 200 arquivos de vídeo baseados em arquivos de áudio gerados usando sox
, combinados com arquivos de imagem. A maioria dos clipes tem menos de um segundo, nenhum tem mais que 6. Em seguida, concateno esses arquivos e há um atraso geral de cerca de 2 segundos no resultado final.
Acredito que isso pode ser devido ao fato de as faixas de áudio e vídeo serem concatenadas de forma independente.
Posso descobrir a duração exata da trilha de vídeo e áudio (stream) usando ffprobe. Somente em um dos arquivos curtos, posso ver que as durações diferem:
ffprobe file001.webm
Input #0, matroska,webm, from 'file001.webm':
Metadata:
ENCODER : Lavf58.20.100
Duration: 00:00:00.92, start: 0.000000, bitrate: 211 kb/s
Stream #0:0: Video: vp8, yuv420p, 1100x140, SAR 1:1 DAR 55:7, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
Metadata:
ENCODER : Lavc58.35.100 libvpx
DURATION : 00:00:00.923000000
Stream #0:1: Audio: vorbis, 48000 Hz, stereo, fltp (default)
Metadata:
ENCODER : Lavc58.35.100 libvorbis
DURATION : 00:00:00.908000000
Como posso fazer com que as faixas de vídeo e áudio em um arquivo de vídeo tenham exatamente a mesma duração?
Estou usando vpx/vorbix/webm (depois de não conseguir entender a causa dos problemas com mpeg2ts), mas usarei qualquer formato para fazer isso.
Também posso adicionar preenchimento de silêncio ao áudio para que correspondam à duração.
Responder1
Basicamente não vale a pena o esforço. Os quadros de áudio têm duração fixa, dependendo do codec e da taxa de amostragem. Por exemplo, aac é 1024/taxa de amostragem. Por exemplo, 1024/48000 ~ 21,333 ms. Portanto, se você reamostrar seu vídeo para um múltiplo perfeito disso, teoricamente seria exato. Supondo que o contêiner não o modifique de forma alguma. Caso contrário, você pode modificar o codificador de áudio para controlar o número de amostras de preparação usadas, o que permitiria obter um primeiro quadro de áudio parcial. Mas, novamente, cada codec é diferente. Caso contrário, você pode usar VFR e definir manualmente a duração final do quadro se o contêiner suportar. Por fim, você pode alterar a lista de edição no mp4 e usar um player que garanta suporte.
Não sei se há alguma ferramenta que possa fazer alguma dessas coisas pronta para uso.