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 de 30000/1001, mas não use 29.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 (a ffmpeg 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ágina man 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í …

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *