Como forçar o ffmpeg a inserir o quadro-chave no primeiro quadro ao reduzir a amostragem da taxa de quadros de um vídeo com x264 vcodec

7

Eu tenho um vídeo mpeg4 a 25fps. Este vídeo contém apenas um quadro estático. Estou tentando reduzir a taxa de quadros para 1fps e converter o vídeo em x246 (mp4).

Eu executei o seguinte comando ffmpeg:

ffmpeg -i vid.avi -acodec aac -ar 32000 -ab 64k -ac 2 \
-vcodec libx264 -strict -2 -y -r 1 -force_key_frames 0 vid.mp4

O FFmpeg descarta muitos quadros até inserir o primeiro quadro-chave. Às vezes, a imagem aparece apenas após 16 ou 20 segundos.

Acho que o ffmpeg não insere um quadro-chave no começo.

Alguém sabe como eu poderia pegar o primeiro quadro do vid.avi e usá-lo como o quadro principal do vid.mp4?

bodacydo
fonte
você já tentou isso sem -force_key_frames 0? Também pode querer tentar mudar o 0 a 1 para tê-lo começar no primeiro quadro em vez-force_key_frames 1
Travis Crum
sim, tentei sem -force_key_frames 0 e com -force_key_frames 1, mas isso não ajudou. Eu estou bem preso.
bodacydo
está fazendo exatamente dessa maneira necessária? Vou adivinhar e assumir o seguinte: o áudio é o foco do vídeo. A imagem não é uma grande preocupação. Então, você não conseguiu extrair um mp3 do vídeo (é claro, com qualidade sem perdas) e, em seguida, adquirir a imagem, talvez até uma captura de tela se estiver desesperado, e criar um novo vídeo no ffmpeg usando o mp3 e a imagem extraídos com o fps definido como 1?
Travis Crum
11
A sintaxe force_key_frames para usar o número do quadro é-force_key_frames "expr:eq(n,0)"
robd
Tenho certeza de que o problema raiz aqui era outra coisa. Os codificadores sempre começam com um quadro-chave.
Gyan

Respostas:

6

Para forçar um quadro-chave no código de tempo 00: 00: 00.000, tente usar o seguinte sinalizador:

-force_key_frames 00:00:00.000
Máxima
fonte
O que isso faz exatamente?
Warrior Bob
forçará a posição do quadro-chave em 00: 00: 00.000 código de tempo, que foi solicitado com a solicitação original.
Maxim
Você poderia elaborar: Isso é aplicável apenas ao x264 ou a qualquer codec? A que hora se refere - a hora do arquivo de saída? Ou seja, para sobreposições, como eu poderia colocar um quadro-chave no início de qualquer vídeo sobreposto? Obrigado
Ondra Žižka