Eu tenho um conjunto de quadros de vídeo salvos como imagens em um diretório e estou tentando codificá-los em um vídeo de boa qualidade, porém cada configuração e cada formato que tento produz artefatos muito perceptíveis.
O comando básico é este:
ffmpeg -r 25 -i %4d.png myvideo.mpg
e eu tentei os sinalizadores minrate e maxrate. Qualquer um dos formatos {mpg, avi, mov, flv} serve.
Alguma sugestão de configurações? O tamanho final do arquivo não é um problema.
video
ffmpeg
video-encoding
CakeMaster
fonte
fonte
ffmpeg -r 20 -f image2 -i myImage%04d.png -f mp4 -q:v 0 -vcodec mpeg4 -r 20 myVideo.mp4
. Descobri que, para forçar a taxa de quadros, tive que especificá-la para os arquivos de entrada e saída. Este codec parece funcionar para mim - talvez você não precise especificá-lo. Eu só queria incluir o que fiz porque passei muito tempo trabalhando nisso. A única desvantagem é que minhas imagens de entrada são de alto contraste (bolas azuis e vermelhas contra um fundo branco) e, mais tarde no filme, as bolas começam a ficar todas da mesma cor escura - um efeito de contraste indesejado.Respostas:
Um par de coisas:
Você precisa definir a taxa de bits do vídeo. Nunca usei minrate e maxrate, então não sei exatamente como eles funcionam, mas ao definir a taxa de bits usando o
-b
switch, consigo obter vídeo de alta qualidade. Você precisa encontrar uma taxa de bits que ofereça um bom equilíbrio entre compactação e qualidade de vídeo. Você pode ter que experimentar isso porque tudo depende do tamanho do quadro, da taxa de quadros e da quantidade de movimento no conteúdo do seu vídeo. Tenha em mente que o DVD tende a ser em torno de 4-5 Mbit / s em média para 720x480, então eu geralmente começo daí e decido se preciso de mais ou menos e então apenas experimento. Por exemplo, você pode adicionar-b 5000k
à linha de comando para obter mais ou menos taxa de bits de vídeo DVD.Você precisa especificar um codec de vídeo. Se você não fizer isso, o ffmpeg assumirá como padrão MPEG-1, que é bastante antigo e não fornece a quantidade de compactação do MPEG-4 ou H.264. Se sua versão do ffmpeg for construída com suporte para libx264, você pode especificar
-vcodec libx264
como parte da linha de comando. Caso contrário-vcodec mpeg4
, também fará um trabalho melhor do que o MPEG-1, mas não tão bem quanto o x264.Existem muitas outras opções avançadas que o ajudarão a obter a melhor qualidade com as taxas de bits mais baixas. Dê uma olhada aqui para alguns exemplos.
fonte
ffmpeg -i … -c:a copy -c:v libx264 -crf 18 -preset veryslow …
. 18 é o CRF com perda de qualidade muito marginal, mas a taxa de bits provavelmente será baixa. E você pode tentar valores maiores de CRF se precisar de um tamanho de arquivo menor. E como você vê, isso é muito simples.Você precisa especificar a opção -vb para aumentar a taxa de bits do vídeo, caso contrário, você obtém o padrão que produz vídeos menores, mas com mais artefatos.
Experimente algo assim:
ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg
fonte
Certifique-se de que os PNGs estão totalmente opacos antes de criar o vídeo
por exemplo, com imagemagick, dê a eles um fundo preto:
Em meus testes, nenhuma taxa de bits ou codec é suficiente para fazer o vídeo parecer bom se você alimentar PNGs do ffmpeg com transparência
fonte
A menos que você faça algum tipo de trabalho de pós-processamento, o vídeo nunca será melhor do que os quadros originais. Também como um flip-book, se você tiver um grande "salto" entre os quadros-chave, ficará engraçado. Geralmente, você precisa de "interpolações" suficientes entre os quadros-chave para fornecer uma animação suave. HTH
fonte