Não tenho nenhum conhecimento sobre codificação de vídeo, tenho um aplicativo escrito em OpenGL e eu estou salvando os quadros gerados em imagens png
. Os frames do meu aplicativo estão a 7 FPS e estou tentando criar um vídeo a partir deles.
Para esse propósito, uso o ffmpeg assim
ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
que foi tirado deste site , no entanto, gostaria de saber se é possível ter um vídeo que mostra a animação a 30 FPS?
Comentários
Resposta
Estou usando o código abaixo para fazer a mesma coisa.
ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -pix_fmt yuv420p -crf 23 output.mp4
Dividindo o comando:
ffmpeg <- call ffmpeg -framerate 30 <- set the input framerate to 30 -i img%03d.png <- read PNG images with filename img001, img002, img003, etc.. img can be changed to another prefix %03d can be changed to %04d for 0001, %05d for 00001 formats, etc... -c:v libx264 <- Set the codec to libx264 -pix_fmt yuv420p <- Set the pixel format to planar YUV 4:2:0, 12bpp -crf 23 <- set the Constant Rate Factor to 23 (default value) -output.mp4 <- the output filename
Isso lê a entrada a 30 fps (o -framerate 30
opção) e o codifica usando o codec libx264
com fator de taxa constante de 23 (o -crf 23
opção).
Resposta
Existem duas taxas de quadros a serem consideradas: a entrada e a saída.
Por padrão, a taxa de quadros de entrada é 25 , e a saída usará a mesma taxa de quadros da entrada, a menos que você diga o contrário.
Mesma taxa de quadros para entrada e saída
Se você deseja inserir e saída para ter a mesma taxa de quadros, em seguida, basta fornecer a taxa de quadros de entrada. Este exemplo definirá uma taxa de quadros de 30000/1001 (vídeo NTSC):
ffmpeg -framerate 30000/1001 -i input output.mp4
-
Como alternativa, neste exemplo, você pode usar
ntsc
em vez de30000/1001
, mas não use29.97
porque não é preciso ou correto. Veja outros aliases de taxa de quadros . -
Porque a taxa de quadros de entrada padrão é 25, e se você defina apenas uma taxa de quadros de saída, então os quadros serão descartados ou duplicados para compensar. É por isso que a taxa de quadros de entrada é definida nesta situação.
Taxa de quadros diferente para entrada e saída
Às vezes, você pode querer que a taxa de quadros de entrada e a taxa de quadros de saída sejam diferentes. Por exemplo, você pode querer inserir os quadros em uma determinada taxa e, em seguida, duplicar ou eliminar os quadros para que a saída tenha taxa de quadros diferente. Você pode querer fazer isso devido a problemas de compatibilidade com seu contêiner de formato de saída, seu player e / ou dispositivo:
-
Neste exemplo, os quadros serão duplicados para ir de 10 a 25. A saída do console dirá se os quadros estão sendo descartados ou duplicados.
-
O demuxer do arquivo de imagem usa
-framerate
, enquanto a taxa de quadros de saída é definido usando-r
. -
Você pode ter que adicionar a opção
-pix_fmt yuv420p
em em algumas circunstâncias, se você estiver enviando vídeo H.264 (affmpeg
saída do console irá avisá-lo se for necessário). Isso usará um esquema de subamostragem de croma compatível com todos os jogadores.
Comentários
- ffmpeg versão 3.2.2 me diz:
Option framerate not found.
🙁 - Sim, você está certo. Mas a opção
-framerate
não existe Vou deletar meu comentário, pois ele realmente não tem nada a ver com a conversão de uma série de imagens em um vídeo com uma determinada taxa de quadros. - @erik
-framerate
existe. Ele ' é usado pelos demuxers de imagem e rawvideo e alguns dispositivos de entrada, como x11grab e v4l2. - Onde está a opção
-framerate
documentado? Eu ' li a páginaman ffmpeg
, mas não consegui ' para encontrar. Qualquer indicador, talvez? - OK, encontrei …
FFMPEG-DEVICES(1)
.
Resposta
ffmpeg -framerate 30 -i img%03d.png output.mp4
será suficiente nos últimos tempos versão t do ffmpeg.
Comentários
- Não se esqueça do
-pix_fmt yuv420p
ou você pode acabar com arquivos tantas ferramentas de software não ' t como: trac.ffmpeg.org/ticket/8856
Resposta
Você está falando sobre interpolação de vídeo. Não há como 7 fps se tornar 30 fps sem interpolação de vídeo … Basicamente você deseja obter 30 fps desde o início, no processo de fazer vídeos … Como a interpolação de vídeo vai consumir muitos recursos e tempo, e pode ser preenchido com artefatos.Ouvi dizer que você pode transformar uma única imagem em curtas-metragens, com adobe, mas muito trabalho manual aí …
-framerate
para obter os resultados desejados.