7FPS로 촬영 한 이미지에서 30FPS로 비디오를 인코딩하는 방법


21

비디오 인코딩에 대해 전혀 알지 못하며 OpenGL로 작성된 응용 프로그램이 있으며 생성 된 프레임을 png이미지에 저장하고 있습니다. 내 앱의 프레임이 7 FPS이며 프레임에서 비디오를 만들려고합니다.

그 목적으로 나는 이런 식으로 ffmpeg를 사용합니다.

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

이 사이트에서 가져온 것이지만 30 FPS에서 애니메이션을 보여주는 비디오를 사용할 수 있는지 궁금합니다.



-framerate원하는 결과를 얻으려면 매개 변수를 조정하십시오 .
nullptr

답변:


21

아래 코드를 사용하여 동일한 작업을 수행하고 있습니다.

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -pix_fmt yuv420p -crf 23 output.mp4

명령을 세분화 :

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

30fps ( -framerate 30옵션) 에서 입력을 읽고 일정한 속도 계수 23 ( 옵션)을 libx264가진 코덱을 사용하여 입력을 인코딩합니다 .-crf 23


26

고려해야 할 두 가지 프레임 속도가 있습니다 : 입력과 출력.

기본적으로 입력 프레임 속도는 25이며 달리 지정하지 않는 한 출력은 입력과 동일한 프레임 속도를 사용합니다.

입력 및 출력에 대해 동일한 프레임 속도

동일한 프레임 속도를 갖도록 입력 출력하려면 입력 프레임 속도를 제공하십시오. 이 예는 30000/1001 (NTSC 비디오)의 프레임 속도를 설정합니다.

ffmpeg -framerate 30000/1001 -i input output.mp4
  • 또는이 예에서는 ntsc대신 대신 사용할 수 30000/1001있지만 29.97정확하거나 정확 하지 않으므로 사용하지 마십시오 . 다른 프레임 속도 별칭을 참조하십시오 .

  • 기본 입력 프레임 속도는 25이므로 출력 프레임 속도 만 설정하면 보정을 위해 프레임이 삭제되거나 복제됩니다. 이런 상황에서 입력 프레임 속도가 설정되는 이유입니다.

입출력을위한 다른 프레임 속도

때로는 입력 프레임 속도와 출력 프레임 속도가 다를 수 있습니다. 예를 들어, 특정 속도로 프레임을 입력 한 다음 프레임을 복제 또는 삭제하여 출력이 다른 프레임 속도를 갖도록 할 수 있습니다. 출력 형식 컨테이너, 플레이어 및 / 또는 장치와의 호환성 문제로 인해이 작업을 수행 할 수 있습니다.

ffmpeg -framerate 10 -i input -r 25 output.mp4
  • 이 예제에서 프레임은 10에서 25로 이동하기 위해 복제됩니다. 콘솔 출력은 프레임이 삭제 또는 복제되는지를 알려줍니다.

  • 이미지 파일 디멀티플렉서의 사용 -framerate, 출력 프레임 레이트를 사용하여 설정된다 -r.

  • -pix_fmt yuv420pH.264 비디오를 출력하는 경우 경우에 따라 옵션 을 추가해야 할 수도 있습니다 ( ffmpeg필요한 경우 콘솔 출력이 경고 함). 모든 플레이어와 호환되는 크로마 서브 샘플링 체계를 사용합니다.


2
ffmpeg 버전 3.2.2는 다음과 같이 알려줍니다. Option framerate not found.:-(
erik

그래 네가 맞아. 그러나 그럼에도 불구하고 옵션 -framerate은 더 이상 존재하지 않습니다. 일련의 이미지를 특정 프레임 속도의 비디오로 변환하는 것과는 아무런 관련이 없으므로 내 의견을 삭제합니다.
erik

4
@erik -framerate은 존재합니다. 이미지 및 rawvideo 디 먹서 및 x11grab 및 v4l2와 같은 일부 입력 장치에서 사용됩니다.
llogan

1
옵션은 어디에 -framerate기록되어 있습니까? man ffmpeg페이지를 읽었 지만 찾을 수 없습니다. 어쩌면 포인터?
Atcold

1
OK, 그것을 발견 ... FFMPEG-DEVICES(1).
Atcold

1
ffmpeg -framerate 30 -i img%03d.png output.mp4  

최신 버전의 ffmpeg에서는 충분합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.