首页 > 解决方案 > 如何使用 FFmpeg libx264 避免颜色偏移

问题描述

我想使用 ffmpeg 将一些素材转换为代理 H.264。使用以下命令,我得到了轻微的色移:

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

我怎样才能摆脱轻微的洋红色偏移?

mediainfo打印有关源文件的以下内容:

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

标签: ffmpeglibx264

解决方案


您需要使用 -vf scale=out_color_matrix=bt709 转换为 BT.709 矩阵,而不仅仅是使用 -colorspace bt709 标记输出。

因此,在您的命令中只需更改为 -vf scale=1280:720:out_color_matrix=bt709:flags=lanczos


推荐阅读