ffmpeg : 명시 적으로 지정하지 않고 h.264를 bt.601로 명시 적으로 태그 하시겠습니까?


12

비디오를 "지정되지 않은"것이 아니라 명시 적으로 bt.601로 태그하고 싶습니다. 플레이어가 일반적으로 너비가 1280 픽셀 미만인 비디오의 기본값으로 bt.601을 선택한다는 것을 알고 있지만 bt.601이 비디오의 올바른 색상 매트릭스임을 명시하고 싶습니다.

고집 포인트는 bt601ffmpeg 또는 libx264에 대한 옵션 이 없으며 bt709 및 기타 옵션 만 있다는 것입니다.

HD에서 다운 스케일 된 동영상이 있으며 여전히 bt.709이지만 올바르게 태그가 지정되지 않았습니다. 따라서 비디오를 볼 때 때때로 플레이어를 수동으로 bt.709로 전환 해야합니다 . bt.601로 명시 적으로 태그하면 앞으로 시청자 (예 : 나 자신)에게 bt.601이라는 태그를 붙일 수 있습니다 mediainfo.

이것의 또 다른 사용 사례는 컬러 매트릭스 변환 ()을 사용하지 않고 bt.601 비디오를 1280 이상으로 업 스케일 한 -vf colormatrix경우 색상 정보를 지정하지 않으면 플레이어가 bt.709로 잘못 가정 한 것입니다.

FFMpeg의 colormatrix비디오 필터는 bt601입력 또는 출력 색상 매트릭스로 지원 하지만 태그도 설정하지 않습니다. (ffmpeg의 색상 옵션을 설정하면 부작용이 없으므로 src로 작동하지 않고 같은 것을 거부합니다 -vf colormatrix=bt601:bt601.)


ffmpg in  -color_primaries bt709 -color_trc bt709 -colorspace bt709  out

yuv <-> rgb에 bt.709를 사용하여 출력 비디오에 태그를 지정합니다. 태그는 컨테이너뿐만 아니라 비디오 비트 스트림 자체 내부로 끝납니다 (mp4 및 mkv 컨테이너의 경우 컨테이너가 아닌 코덱 관련 것으로 보이므로).

예 : mediainfo출력 :

Complete name             : out.mkv
...
Writing application                      : Lavf57.14.100
Writing library                          : Lavf57.14.100


Video
ID                                       : 1
Format                                   : AVC
...
Writing library                          : x264 core 148 r2638+4 afcf21c
Encoding settings                        : cabac=1 / ref=8 / ...
Language                                 : English
Default                                  : Yes
Forced                                   : No
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.709

bt.709는 태그하기 쉽습니다. 문제는 bt.601이 어디에도 보이지 않는다는 것입니다. 다른 이름 중 하나가 별명입니까, 아니면 명시 적으로 지정할 방법이 없습니까?

x264 --fullhelp output:

  --colorprim <string>    Specify color primaries ["undef"]
                              - undef, bt709, bt470m, bt470bg, smpte170m,
                                smpte240m, film, bt2020
  --transfer <string>     Specify transfer characteristics ["undef"]
                              - undef, bt709, bt470m, bt470bg, smpte170m,
                                smpte240m, linear, log100, log316,
                                iec61966-2-4, bt1361e, iec61966-2-1,
                                bt2020-10, bt2020-12
  --colormatrix <string>  Specify color matrix setting ["???"]
                              - undef, bt709, fcc, bt470bg, smpte170m,
                                smpte240m, GBR, YCgCo, bt2020nc, bt2020c

ffmpeg -h full ffmpeg의 -c:v libx264비디오 코덱이 x264로 전달 되는 색상 옵션에 대해 동일한 옵션 세트를 보여줍니다 . 이 중 bt.601의 별칭이거나 수치 적으로 동등한 색상 매트릭스가 있습니까?


나는 똑같은 문제가 있습니다. h264 HD 푸티 지에 BT.601 태그를 지정하는 데 사용할 명령 줄을 알고 있습니까?
Casper

@ Casper : 예, Mulvya의 대답을 받아 들였습니다. 올바른 옵션을 찾는 데 많은 정보가 있었기 때문입니다. 올바른 옵션을 명시 적으로 포함하도록 편집했습니다 (예 : NTSC is -color_primaries smpte170m -color_trc smpte170m -colorspace smpte170m).
Peter Cordes

답변:


12

PAL과 NTSC는 다른 색상 기본을 가지므로

NTSC = SMPTE 170M = BT 601525

PAL = BT 470 BG = BT 601 625

활성 H.264 표준의 387 페이지에있는 표에서 값 5 및 6에 대한 행을 참조하십시오 .


ffmpeg에 대한 올바른 인수는 다음과 같습니다.

NTSC :

# NTSC
ffmpeg -i input  \
 -colorspace smpte170m -color_primaries smpte170m -color_trc smpte170m

mediainfo:
Color primaries                          : BT.601 NTSC
Transfer characteristics                 : BT.601
Matrix coefficients                      : BT.601

단짝:

-color_trc동의하지 않습니다 bt470bg만, ffmpeg -h full쇼가 gamma28해당 옵션 수단 "BT.470 BG를".

# PAL
ffmpeg -i input  \
 -colorspace bt470bg -color_primaries bt470bg -color_trc gamma28

mediainfo:
Color primaries                          : BT.601 PAL
Transfer characteristics                 : BT.470 System B, BT.470 System G
Matrix coefficients                      : BT.601

-colorspace가장 중요한 옵션입니다. 나머지는 mpvLinux 와 같은 소프트웨어 플레이어에게는 눈에 띄는 차이를 만들지 않습니다 .


아 물론 이죠 나는 심지어 bt601 wikipedia 페이지를보고 있었고 두 행이있는 테이블에서 단서가 없었습니다. Derp.
Peter Cordes

HandBrake를 사용하여 동일한 설정을 수행하려는 경우 비디오 탭의 추가 옵션 편집 상자에 "colorprim = smpte170m : transfer = smpte170m : colormatrix = smpte170m"
pcunite
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.