Como converter vídeo .avi que tem 1 imagem estática no vídeo (com som) para o vídeo mp4 com ffmpeg para o menor tamanho possível?

7

Eu tenho um vídeo .avi (divx) que está em 25fps e tem áudio mp3 a 64kbit / s. Este vídeo tem apenas uma imagem em todo o vídeo.

Estou tentando converter este vídeo para mp4, mas para torná-lo o menor possível (já que há apenas 1 quadro realmente!)

Atualmente estou tentando isso:

ffmpeg -i video.avi -vcodec libx264 -acodec aac \
-ar 32000 -ab 64k -ac 2 -strict -2 -y video.mp4

Mas isso faz com que um vídeo mp4 tenha tamanho semelhante ao .avi.

Em seguida, tentei alterar a taxa de quadros para 1 fps:

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

Isso tornou o arquivo de vídeo muito menor (10x menor), mas o problema é que o quadro-chave não aparece no primeiro quadro do vídeo. Então, o único quadro no vídeo aparece como 8 ou 10 segundos no vídeo (!).

Parece que o problema aqui é que o ffmpeg continua removendo quadros do video.avi e não os grava no video.mp4 como quadros-chave. Quando ele escreve um quadro-chave, é tarde no vídeo.

Ele tentou usar o argumento -force_key_frames , mas isso também não ajudou. Eu fiz -force_key_frames 0 e -force_key_frames 1 .

Alguém sabe como eu poderia criar um vídeo mp4 realmente pequeno com apenas 1 quadro estático?

    
por bodacydo 03.10.2012 / 20:25

3 respostas

1

Você deve verificar se a parte de vídeo é realmente um fator separando os componentes A / V

com ffmpeg isso funciona com

#retrieve audio-only
ffmpeg -i <<VideoName>> -vn -acodec copy -f <<AudioCodec>> output.audio
#retrieve video-only
ffmpeg -i <<VideoName>> -an -vcodec copy -f <<VideoCodec>> output.video

Se o vídeo for realmente significativo em tamanho, uma possibilidade seria criar uma captura de tela e usar a imagem como entrada para o codificador de vídeo, em vez de recodificar o videostream

veja ffmpeg.org/wiki para referência

#create screenshot from video
ffmpeg -i <<VideoName>> -ss 00:00:01.0 -f image2 -vframes 1 output.screen.png

Você pode ver neste post do stackoverflow como fazer um vídeo a partir de um still

    
por 29.10.2013 / 01:15
1

Tente o seguinte comando, que está removendo a imagem e o áudio separadamente e depois remontar:

ffmpeg -loop 1 -shortest -y -i image.jpg -i audio.amr -acodec copy \
-vcodec video.avi video.mp4
    
por 03.09.2014 / 11:42
-1

Se você quiser convertê-lo, use um programa chamado Format factory (link aqui: link ) Ele pode converter o arquivo diretamente para mp4 para você, e você pode configurá-lo para tamanho pequeno

    
por 01.07.2014 / 08:39