2

I’d like to convert some footage to proxy H.264 using ffmpeg. I got a slight colorshift using the following command:

ffmpeg -i /path/to/045_0054.MXF -map 0 -dn -c:v libx264 -preset slow -profile:v main -level:v 4.1 -coder 1 -pix_fmt yuv420p -crf 25 -vf "scale=1280:720:flags=lanczos" -movflags +faststart -colorspace 1 -color_primaries 1 -color_trc 1 -color_range 1 -brand mp42 -refs 1 -x264-params b-pyramid=0 -bf 2 -g 5 -y /path/to/045_0054.mp4

How can I get rid of the slight magenta shift?

mediainfo prints the following about the source file:

General
Complete name                            : /path/to/045_0054.MXF
Format                                   : MXF
Format version                           : 1.3
Format profile                           : OP-1a
Format settings                          : Closed / Complete
File size                                : 180 MiB
Duration                                 : 14 s 720 ms
Overall bit rate mode                    : Variable
Overall bit rate                         : 102 Mb/s
Encoded date                             : 2021-02-19 13:13:15.000
Writing application                      : Sony Mem 2.00

Video
ID                                       : 2
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L5.1
Format settings                          : CABAC / 2 Ref Frames
Format settings, CABAC                   : Yes
Format settings, Reference frames        : 2 frames
Format settings, GOP                     : M=3, N=6
Format settings, wrapping mode           : Frame
Codec ID                                 : 0D01030102106001-0401020201314001
Duration                                 : 14 s 720 ms
Bit rate mode                            : Variable
Bit rate                                 : 97.8 Mb/s
Maximum bit rate                         : 100.0 Mb/s
Width                                    : 3 840 pixels
Height                                   : 2 160 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 25.000 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.472
Stream size                              : 172 MiB (95%)
Color range                              : Limited
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.709
florit
  • 325
  • 2
  • 13
  • 1
    Try adding video [Bitstream Filter](https://ffmpeg.org/ffmpeg-bitstream-filters.html#h264_005fmetadata): `-bsf:v h264_metadata=video_full_range_flag=0:colour_primaries=1:transfer_characteristics=1:matrix_coefficients=1`. Use `mediainfo` to verify that destination Color range, Color primaries, Transfer characteristics, Matrix coefficients are same as the input. Please let me no if it solves the problem. – Rotem Apr 13 '21 at 15:52
  • Show the **complete** log from the ffmpeg command. – llogan Apr 13 '21 at 16:36
  • 1
    It did not help @Rotem It’s a very very slight shift towards magenta. I’m sure this is not occuring with Adobe Media Encoder. I tried to post the ffmpeg log but stackoverflow won’t let me as my question seems like too much code … – florit Apr 13 '21 at 17:46
  • Try reproducing the problem using synthetic pattern. You may use the following command to build a synthetic video (that may be used as your input): `ffmpeg -y -r 25 -f lavfi -i testsrc=duration=10:size=3840x2160:rate=1 -vf setpts=N/25/TB -c:v libx264 -crf 17 -pix_fmt yuv420p -color_primaries bt709 -color_trc bt709 -colorspace bt709 -color_range 1 -bsf:v h264_metadata=video_full_range_flag=0:colour_primaries=1:transfer_characteristics=1:matrix_coefficients=1 vid.mxf` – Rotem Apr 13 '21 at 18:38

1 Answers1

2

You need to convert to BT.709 matrix using -vf scale=out_color_matrix=bt709 not just tag output using -colorspace bt709.

So in your command just change to -vf scale=1280:720:out_color_matrix=bt709:flags=lanczos