Junte-se a áudio e imagem - saída como vídeo usando FFmpeg

8

Eu tenho 1 imagem (jpg) e 1 arquivo de áudio (MP3) e gostaria de produzir isso como um arquivo de vídeo (por exemplo, AVI).

Alguém sabe como usar o FFMPEG para juntar os dois? Gostaria de mostrar a imagem pela duração do áudio.

Alguma ideia é de alguém?

    
por user41559 13.09.2010 / 10:07

5 respostas

5

Se você estiver no Windows, também poderá fazê-lo no Windows Movie Maker ... se precisar de instruções, por favor, deixe um comentário

Para o FFmpeg use este

ffmpeg -loop_input -vframes 14490 -i imagine.jpg -i audio.mp3 -y -r 30 
    -b 2500k -acodec ac3 -ab 384k -vcodec mpeg4 result.mp4
  • vframes 14490 é o número de quadros que devem ser em loop, a fim de ter uma imagem contínua para todo o arquivo audio.mp3

    Ex: por 8 minutos e 3 segundos ((8m x 60s + 3s) x 30fps = 14490 vf)

Recurso de aqui

    
por 13.09.2010 / 10:17
7

Existe uma maneira muito mais simples do que as sugeridas aqui, que não requer o cálculo do número de quadros ou a inserção do tamanho de arquivos individuais (especialmente melhor para o processamento em lote). Com uma versão recente do ffmpeg, você pode usar a opção -shortest , que interrompe a codificação quando o fluxo mais curto termina - neste caso, input.mp3 (já que a imagem será repetida para sempre, tem comprimento infinito):

ffmpeg -i input.mp3 -f image2 -loop 1 -r 2 -i input.jpg \
-shortest -c:a copy -c:v libx264 -crf 23 -preset veryfast output.mp4

Isso usa 2 quadros por segundo para a imagem / vídeo, o que deve ser bom, mas você pode configurá-lo para um padrão mais 25, se quiser.

    
por 18.01.2013 / 11:58
5

subanki quase acertou. A linha de comando de trabalho é a seguinte:

ffmpeg -y -loop 1 -i image.jpg -i audio.mp3 -r 30 -b:v 2500k -vframes 14490 -acodec libvo_aacenc -ab 160k result.mp4
-y

sobrescreve os arquivos de saída sem avisar

-loop 1

A opção '-loop_input' está obsoleta. use -loop 1. Consulte a documentação do ffmpeg .

-i

arquivo (s) de entrada

-r

Quadros por segundo
Também pode ser expresso como: -r 30000/1001 fornecendo um fps de 29.97nnn

-b: v

taxa de bits de vídeo; quanto maior o número, melhor a qualidade e maior o tamanho do arquivo.

-vframes

Como explicado acima; tome o tempo total do seu arquivo de áudio em segundos (por exemplo, 00:02:41 (2 minutos e 41 segundos) é igual a 161 segundos no total (2 x 60) + 41). Em seguida, multiplique o total de segundos pelos quadros por segundo que você especificou com -r (por exemplo, 161 x 30 = 4830).

-vframes podem ser substituídos por -t 161 (-t registro de duração ou transcodificação “duração” segundos de áudio / vídeo)

-acodec

Use o codec de áudio correto para o tipo de arquivo que você está criando. Para .mp4, deve ser um formato AAC. O codec libvo_aacenc foi o codec de codificação correto para o meu sistema Windows 7.

-ab

taxa de bits de áudio

result.mp4

Este é o nome do arquivo de saída. Pode ser qualquer nome de arquivo legal para o seu sistema. A extensão ajudará o ffmpeg a determinar o codec de vídeo apropriado se você não especificar um usando -vcodec.

por 29.03.2012 / 09:13
1

Esse simples script bash / cygwin que AUTOMÁGICAMENTE codificará todos os arquivos da extensão $ AUDIO no diretório para o arquivo de vídeo 10FPS mp4 no diretório com folder.jpg image embedded,

útil para uploads do youtube;)

AUDIO=m4a; 
$'\n'; for a in 'ls -1 *.$AUDIO '; do ffmpeg -i $a &2> $a.info ; done;
cat '' > do.sh
IFS=$'\n'; 
for a in 'ls -1 *.$AUDIO'; do D='grep Duration $a.info | cut -d',' -f1 | cut -d' ' -f4 | cut -d'.' -f1 | head -n1 '; S=$(( $( echo $D | cut -d':' -f2 ) * 60 + 1 + ' echo $D | cut -d':' -f3  ' )) ; echo ffmpeg -loop_input -vframes $(( $S * 10 )) -i folder.jpg -i \"$a\" -y  -r 10 -b 2500k -ab 384k -vcodec mpeg4 \"$a.mp4\" >> do.sh;  done;
split -l5 do.sh
xa* &
    
por 12.01.2012 / 18:07
0

Faça o download do VirtualDub e faça o seguinte:

  1. Abra a imagem como se fosse abrir um arquivo de vídeo normal.

  2. Calcule a duração do áudio em segundos e arredonde para o segundo inteiro mais próximo (por exemplo, 78,34 segundos passa a 79 segundos). Este valor é chamado x a partir de agora.

  3. Vá para "video > taxa de quadros" selecione "alterar para taxa de quadros (fps)" e insira "1 / x" como valor. Além disso, se você quiser ter uma taxa de quadros normal no arquivo resultante, como 25 fps, selecione "Converter em fps" e insira a taxa de quadros desejada.

  4. Selecione "video > compression" e escolha seu sabor favorito. Pode ser que você precise ajustar o tamanho da imagem com o filtro de redimensionamento.

  5. Vá para "áudio > áudio de outro arquivo" e selecione seu áudio lá. Se necessário, selecione uma compactação para o áudio.

  6. Salve o arquivo.

Fonte: stephanV

    
por 13.09.2010 / 10:54