ffmpeg - 如何使用 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
解决方案
您需要使用 -vf scale=out_color_matrix=bt709 转换为 BT.709 矩阵,而不仅仅是使用 -colorspace bt709 标记输出。
因此,在您的命令中只需更改为 -vf scale=1280:720:out_color_matrix=bt709:flags=lanczos
推荐阅读
- swiftui - 在 SwiftUI 中使用图层自定义 Mapbox 样式
- python - 如何将字符串基数 2 作为整数?
- spring-io - 无法访问 repo.spring.io - 未经授权
- vue.js - 在heroku中部署vue应用程序的问题
- python - CSS Selector 没有提取出我想要的数据
- java - 在java中实现一个JSON对象
- node.js - npm 错误!在 myfrontend@3.3.0 构建脚本中失败
- mysql - 将数据插入和更新到由外键链接的表中
- python - 查找具有 Null 值的列并将它们写入 Pyspark 中每条记录的新列中
- oracle - 在 oracle 中编译的过程不起作用