부드러운 둥영상 탐색, 버전 2

!
경고: 이 글이 작성된 지 365일이 넘었습니다. 글의 정보가 오래되어 부정확할 수 있습니다.

이 글은 원글에 대한 업데이트입니다. 부드러운 탐색이 되는 둥영상을 재인코딩하는데 사용할 수 있는 새로운 정보와 방식을 찾았기 때문에 작성합니다.

ProRes?

애플의 ProRes 코덱은 둥영상 프레임을 압축하지 않은 상태로 저장하는데, 컴퓨터들은 이를 디코딩하는데 많은 시간을 들일 필요가 없습니다. (H264처럼 압축된 코덱에 비하면 말이죠.)

그럼 빨리 사용하실 수 있는 예시 명령문을 적어보겠습니다:

ffmpeg -i input.mp4 \   # 입력 파일
  -c:v prores_ks    \   # 사용할 ProRes 인코더 (prores와 prores_aw도 존재합니다, 다만)
  -profile:v 3      \   # 사용할 ProRes 프로파일 (밑을 참고하세요)
  -qscale:v 11      \   # 출력물의 "품질" (9-11 사이가 좋습니다; 낮을수록 좋습니다)
  -vendor apl0      \   # 애플 프로그램을 속이는 값
  output.mov            # ProRes를 지원하는 컨테이너여야 합니다 (나머지 두 개는 mkv와 mxf)

인코더

proresprores_aw는 사용하지 마세요. 위에 적어두긴 했지만, 속도도 느리고 결과물도 그렇게 좋지 않습니다. 그냥 prores_ks를 사용하세요.

프로파일

ffmpeg ProRes 프로파일들은 다음 정수값으로 매핑되어 있습니다:

  • proxy - 0
  • lt - 1
  • standard - 2
  • hq - 3
  • 4444 - 4
  • 4444xq - 5

3을 사용하시면 되는데, 만약 4:2:2 크로마 서브샘플링 (chroma subsampling) 대신 4:4:4를 쓰셔야 될 경우 상위 옵션을 사용하시면 됩니다. 그렇다면 -pix_fmpt yuva444p101e 명령문도 추가하셔야 됩니다. (이게 무슨 뜻인지 모르시겠다면 그냥 3 이하로 사용하세요.)

qscale

밑에 링크해둔 설명서에 잘 나열되어 있는데, 빠르게 읽으실 수 있도록 한번 더 설명해보겠습니다:

  • 0이 최고 품질, 32가 최악
  • 권장값: 9-13
  • 지나친 설정값 (공간 제약이 없을 때): 5 이하
  • 경고: 0에 가까워지면 둥영상 파일이 너무 커져 읽을 수 있는 기기가 없기에 재생이 불가능해집니다!

이 명령문과 설명은 공식 ffmpeg 설명서에서 가져왔는데, 더 많은 정보가 필요하시다면 링크를 참조해주세요.

그리고 아쉽게도, 밑에 적혀있는 H264 방법처럼 하드웨어 가속이 적용된 인코더를 ProRes에서 사용할 수 없었습니다. 매번 재인코딩할 때마다 계속 이상하고 이해가 되지 않는 오류를 내놓는데, 이걸 어떻게 고치는지 아신다면 이 부분을 수정할 수 있도록 댓글을 남겨주세요!

H264

부드러운 탐색이 가능한 H264 파일을 만드는데 잠시 수정할 부분이 있어서 짚고 넘어가겠습니다.

ffmpeg의 공식 설명서를 바탕으로, 가장 부드러운 탐색이 가능한 둥영상을 만드려면, B프레임에 추가로 P프레임도 없애셔야 합니다. 그리고 이 명령이 그걸 가능하게 하죠:

ffmpeg -i input.mp4 \   # 입력 파일
  -c:v libx264      \   # H264 인코더
  -profile:v main   \   # H264 프로파일
  -g 1              \   # P프레임 없애기
  -crf 9            \   # 출력물의 "품질" (7-11 사이가 좋습니다; 낮을수록 좋습니다)
  -bf 0             \   # B프레임 없애기
  -vendor apl0      \   # 애플 프로그램을 속이는 값
  output.mp4

그리고 마지막 팁을 드리자면, 만약 애플 실리콘 맥을 사용하고 계실 경우, 하드웨어 가속을 사용하여 둥영상 인코딩을 빠르게 하실 수 있습니다! 그냥 -c:v libx264-c:v h264_videotoolbox로 대체하고, -crf 9 명령문을 -b:v 8000k로 바꿉니다 (이 인코더는 crf는 지원하지 않고 고정 비트레이트 설정만 지원하기 때문입니다). 필요에 따라 값을 수정하는데, 원본 파일을 참고하세요.

그리고 마지막-마지막 팁: ffpb를 한번 확인해보세요! ffmpeg 작업에 진행 상태바를 추가합니다.

비슷한 게시물

댓글