ffmpeg를 사용하여 고품질 비디오 인코딩 [닫기]


92

디렉토리에 이미지로 저장된 비디오 프레임 세트가 있고이를 양질의 비디오로 인코딩하려고하지만 시도하는 모든 설정과 모든 형식은 매우 눈에 띄는 아티팩트를 생성합니다.

기본 명령은 다음과 같습니다.

ffmpeg -r 25 -i %4d.png myvideo.mpg

minrate 및 maxrate 플래그를 시도했습니다. {mpg, avi, mov, flv} 형식 모두 가능합니다.

설정에 대한 제안 사항이 있습니까? 최종 파일 크기는 문제가되지 않습니다.


7
내 Mac에서는 다음 명령을 사용합니다 ffmpeg -r 20 -f image2 -i myImage%04d.png -f mp4 -q:v 0 -vcodec mpeg4 -r 20 myVideo.mp4.. 프레임 속도를 강제하려면 입력 파일과 출력 파일 모두에 대해 지정해야했습니다. 이 코덱은 저에게 맞는 것 같습니다. 지정하지 않아도됩니다. 작업에 많은 시간을 보냈기 때문에 제가 한 일을 포함하고 싶었습니다. 유일한 단점은 내 입력 이미지가 고 대비 (흰색 배경에 파란색과 빨간색 공)이고 영화 후반에 공이 모두 동일한 어두운 색이되기 시작한다는 것입니다. 원치 않는 대비 효과입니다.
jvriesem

감사합니다 @jvriesem! 이것은 나를 위해 잘 작동했습니다.
Dan Loewenherz 2015

나는이 질문에 문의하는 것이 좋습니다 멀티미디어 시스템에 대한 StackOverflow의를
하메드

c ++ 버전 stackoverflow.com/a/43464269/6180077 FFMPEG c ++ mp4 형식 스크린 레코더 응용 프로그램을 작동하려면이 링크를 방문하십시오.
Abdullah Farweez

프로그래밍 방식 FFMPEG를 사용하여 쓰기 비디오 파일을 보여줍니다이 링크를 LIBS 확인 : stackoverflow.com/a/43464269/6180077
압둘라 Farweez

답변:


64

몇 가지 :

  • 비디오 비트 전송률을 설정해야합니다. minrate와 maxrate를 사용한 적이 없어서 정확히 어떻게 작동하는지 모르겠지만 -b스위치를 사용하여 비트 레이트를 설정하면 고화질 영상을 얻을 수 있습니다. 압축과 비디오 품질 사이에 좋은 균형을 제공하는 비트 전송률을 찾아야합니다. 모든 것이 비디오 콘텐츠의 프레임 크기, 프레임 속도 및 움직임의 양에 따라 다르기 때문에 이것을 실험해야 할 수도 있습니다. DVD는 720x480의 경우 평균 4 ~ 5Mbit / s 정도 인 경향이 있으므로 일반적으로 거기에서 시작하여 필요한지 여부를 결정한 다음 실험 만합니다. 예를 들어, -b 5000k명령 줄에 추가 하여 DVD 비디오 비트 전송률을 늘리거나 줄일 수 있습니다.

  • 비디오 코덱을 지정해야합니다. 그렇지 않은 경우 ffmpeg는 기본적으로 상당히 오래된 MPEG-1로 설정되며 MPEG-4 또는 H.264와 같은 압축 량을 거의 제공하지 않습니다. ffmpeg 버전이 libx264 지원으로 빌드 된 -vcodec libx264경우 명령 줄의 일부로 지정할 수 있습니다 . 그렇지 않으면 -vcodec mpeg4MPEG-1보다 더 나은 일을 할 수 있지만 x264 만큼은 아닙니다.

  • 가장 낮은 비트 전송률에서 최상의 품질을 얻는 데 도움이되는 다른 고급 옵션이 많이 있습니다. 여기 에서 몇 가지 예를 살펴보십시오 .


6
일정한 비트 전송률은 품질에 좋지 않습니다. 일정한 속도 계수를 사용하는 것이 우수합니다 (x264 작동 모드 중 하나임). 예 : ffmpeg -i … -c:a copy -c:v libx264 -crf 18 -preset veryslow …. 18은 품질 손실이 매우 미미한 CRF이지만 비트 전송률은 아마도 낮을 것입니다. 더 작은 파일 크기가 필요한 경우 더 큰 CRF 값을 시도 할 수 있습니다. 보시다시피 이것은 매우 간단합니다.
표시 이름

-b 비디오 전에 만 입력 -i 후이어야합니다
mateuszb

45

비디오 비트 전송률을 높이려면 -vb 옵션을 지정해야합니다. 그렇지 않으면 더 작은 비디오를 생성하지만 더 많은 아티팩트가있는 기본값을 얻습니다.

다음과 같이 시도하십시오.

ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg


1
이 나를 위해 일 괜찮지의 감사)
thiago.adriano26

15

비디오를 만들기 전에 PNG가 완전히 불투명한지 확인하십시오

예를 들어 imagemagick을 사용하여 검정색 배경을 제공합니다.

convert 0.png -background black -flatten +matte 0_opaque.png

내 테스트에서 ffmpeg PNG에 투명도를 제공하면 비디오를보기 좋게 만드는 데 비트 전송률이나 코덱이 충분하지 않습니다.


이것은 나를 위해 문제를 해결했습니다.
Matěj Kripner 19

0

어떤 종류의 후 처리 작업을 수행하지 않는 한 비디오는 원래 프레임보다 더 나을 수 없습니다. 또한 플립 북처럼 키 프레임 사이에 큰 "점프"가 있으면 재미있게 보일 것입니다. 일반적으로 부드러운 애니메이션을 제공하려면 키 프레임 사이에 충분한 "트윈"이 필요합니다. HTH


이미지는 원래 비디오 시퀀스에서 가져온 것입니다. 그들은 약간의 자르기, 크기 조정 및 imagemagick으로 수행되지 않은 작업을 수행했습니다. 효과는 확실히 압축 인공물입니다. 나는 이제 답이있는 것 같은이 포스트를 보았다 : stackoverflow.com/questions/3158235/…
CakeMaster

@CakeMaster 예제에 ".png"이미지가 있기 때문에 손실 압축에 대해서는 언급하지 않았습니다. .png는 손실이있을 수 있지만 일반적으로 그렇지 않습니다. .jpg는 거의 항상 손실이 있으므로 사용할 때 아티팩트가 발생합니다. 가능하다면 무손실 압축으로 .png를 다시 저장할 수 있습니다.
JustBoo 2010 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.