Criando vídeo com áudio e imagem parada para o YouTube

22

Estou executando o seguinte comando:

ffmpeg -i audio.mp3 -ar 44100 -f image2 -i logo.jpg -r 15 -b 1800 -s 640x480 foo.mov

Que produz um vídeo com sucesso com meu áudio gravado e uma imagem nele.

Quando eu tento fazer o upload para o YouTube, ele não consegue processar, independentemente dos formatos que eu tentei: .mov, .avi, .flv, .mp4

Existe alguma configuração que eu estou perdendo acima que geraria um formato que o Youtube aceitaria? Eu tentei olhar através da documentação do ffmpeg, mas estou na minha cabeça.

Eu fiz um experimento colocando um vídeo de 2 segundos com um mp3 de 30 segundos. Quando fiz o upload para o youtube, o vídeo resultante durou apenas 2 segundos. Assim, pode ser que o YouTube olhe apenas para a trilha de vídeo durante o tempo todo, e como uma imagem é apenas um quadro ou qualquer outra coisa, talvez isso a obstrua.

    
por scottlabs 22.01.2010 / 00:21

5 respostas

12

Veja o que funcionou:

ffmpeg -i audio.mp3 -f image2 -loop 1 -i logo.jpg 
-r 15 -s 640x480 \
-c:v libx264 -crf 18 -tune stillimage -preset medium \
-shortest foo.mov

Especificamente, a opção loop , que duplicará a imagem como quadros. Ele também precisará da opção shortest para evitar que o arquivo cresça e cresça (dessa forma, ele é truncado para o tamanho do fluxo mais curto - aqui, o arquivo de áudio).

A opção r altera a taxa de quadros e crf 18 define a qualidade (use aqui um valor mais alto para obter uma qualidade de vídeo menor). Veja aqui para mais detalhes: FFmpeg: The ultimate Video e ferramenta de manipulação de áudio

    
por 22.01.2010 / 04:24
4

Um código que funciona para mim, de outro fórum:

ffmpeg -loop 1 -r ntsc -i image.jpg -i song.mp3 -c:a copy -c:v libx264 -preset fast -threads 0 -shortest output.mkv 
    
por 24.08.2011 / 01:06
2

Eu peguei o código do Pavel, que funcionou para mim também, e o encurtou cortando opções desnecessárias:

ffmpeg -loop 1 -shortest -i <audio file> -i <image file> <output video file>

esta é uma forma geral que funciona com qualquer imagem e arquivo de áudio como entrada e produz um arquivo de vídeo como saída.

Dito isto, uma vez que o seu fluxo de vídeo será composto por uma única imagem repetida indefinidamente, pode definir uma taxa de fotogramas baixa (ou seja, o número de imagens que aparece num segundo) com -r . Observe que nem todos os contêineres de saída permitem baixas taxas de quadros. Um que faz é avi , então você pode fazer:

ffmpeg -loop 1 -shortest -r 0.1 -i <audio file> -i <image file> output.avi

isso criaria um arquivo de vídeo com uma taxa de quadros de 0,1 (ou seja, uma imagem a cada 10 segundos) em vez do padrão de 25. Isso afetará o tamanho do arquivo, mas não a qualidade do vídeo. Eventualmente, você pode definir a taxa de bits de áudio para obter uma melhor qualidade de áudio com -ab . Este é o comando que eu realmente uso para fazer este tipo de vídeos para o youtube:

ffmpeg -loop 1 -shortest -r 0.1 -i <audio file> -i <image file> -ab 128k output.avi
    
por 07.09.2011 / 15:06
2

com avconv:

avconv -i input.mp3 -loop 1 -f image2 -i logo.png -r 30 -s 640x480 -ab 128k -ar 44100 -ac 1 -ss 00:00:00.000 -t 01:02:03.123 foo.ogv
    
por 20.03.2013 / 15:46
0

Eu trabalhei com isso depois de muita experimentação: link

  1. Converter imagem (s) em vídeo de acordo com o link :

    ffmpeg -framerate 1/20 -i png/img-%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" png.mp4

    Aqui eu uso várias imagens e as faço mudar a cada 20 anos.

  2. Concatene cópias suficientes do vídeo acima para aumentar a duração do seu áudio de acordo com o link . Outras soluções, como esperar que o ffmpeg -i wav.wav -i png.mp4 youtube.mp4 fizesse a coisa certa, acabaram sendo rejeitadas pelo YouTube (também jogadores como o VLC estão confusos e não podem buscar corretamente). Meu palpite é que as posições de tempo precisam ser ajustadas nas cópias, o que ffmpeg não faz, a menos que elas sejam concatenadas:

    ffmpeg -f concat -i pngs.txt -c copy pngs.mp4

    (onde o arquivo pngs.txt é feito à mão para conter quantas cópias forem necessárias: cópias = comprimento do áudio / duração do vídeo)

  3. Misture seu áudio com o vídeo obtido em 2, de acordo com o link :

    ffmpeg -i pngs.mp4 -i wav.wav -shortest -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart youtube.mp4

Agora, o arquivo youtube.mp4 deve ser aceito pelo YT.

    
por 22.08.2016 / 01:05