developer tip

ffmpeg를 사용하여 고품질 비디오 인코딩

optionbox 2020. 9. 8. 07:53
반응형

ffmpeg를 사용하여 고품질 비디오 인코딩


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

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

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

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

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


몇 가지 :

  • 비디오 비트 전송률을 설정해야합니다. 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 만큼은 아닙니다.

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


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

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

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


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

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

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

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


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

참고 URL : https://stackoverflow.com/questions/3561715/using-ffmpeg-to-encode-a-high-quality-video

반응형