Fuji .mov 文件在 MP 和电影电视中使用 ffmpeg -pix_fmt yuv420p“过度曝光”转换为 .mp4

Fuji .mov 文件在 MP 和电影电视中使用 ffmpeg -pix_fmt yuv420p“过度曝光”转换为 .mp4

我希望这是针对此问题的正确论坛;StackOverflow 将我引导到这里。

我的 Fuji X-T3 生成了一部 FHD 电影,其格式为 .mov,包含 HEVC 视频和 PPM 音频(以及 QuickTime TC 流)。Windows 和 Movies & TV 上的新媒体播放器无法播放此视频(不购买编解码器),因此我使用 ffmpeg CLI(ffmpeg -i in.mov out.mp4)将其转换为 .mp4。生成的 .mp4 文件使用 AVC 视频和 AAC LC 音频。这在 VLC 和 MPC 中播放正常,但无法在 Windows Media Player、Media Player 或 Movies & TV 中播放。查看 MediaInfo,AVC 编解码器保留了 HEVC 流的 10 位深度 - Windows 播放器似乎无法播放。我添加了“-pix_fmt yuv420p”以将位深度固定为 8 位。现在 WMP 可以完美播放它。但在 MP 和 M&TV 中,它看起来曝光过度,并且一些颜色不准确。输入文件的 MediaInfo 显示

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main [email protected]@High
Codec ID                                 : hvc1
Codec ID/Info                            : High Efficiency Video Coding
Duration                                 : 13 s 13 ms
Bit rate                                 : 201 Mb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 29.970 (30000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 10 bits
Bits/(Pixel*Frame)                       : 3.236
Stream size                              : 312 MiB (97%)
Language                                 : English
Encoded date                             : 2023-08-14 16:16:08 UTC
Tagged date                              : 2023-08-14 16:16:08 UTC
Color range                              : Full
Color primaries                          : BT.2020
Transfer characteristics                 : HLG
Matrix coefficients                      : BT.2020 non-constant
Codec configuration box                  : hvcC

Audio
ID                                       : 2
Format                                   : PCM
Format settings                          : Little / Signed
Codec ID                                 : lpcm
Duration                                 : 13 s 13 ms
Bit rate mode                            : Constant
Bit rate                                 : 2 304 kb/s
Channel(s)                               : 2 channels
Channel layout                           : L R
Sampling rate                            : 48.0 kHz
Bit depth                                : 24 bits
Stream size                              : 3.57 MiB (1%)
Language                                 : English
Encoded date                             : 2023-08-14 16:16:08 UTC
Tagged date                              : 2023-08-14 16:16:08 UTC

Other
ID                                       : 3
Type                                     : Time code
Format                                   : QuickTime TC
Duration                                 : 13 s 13 ms
Bit rate mode                            : Constant
Frame rate                               : 29.970 (30000/1001) FPS
Time code of first frame                 : 00:15:55;05
Time code of last frame                  : 00:16:08;06
Time code, stripped                      : No
Language                                 : English
Encoded date                             : 2023-08-14 16:16:08 UTC
Tagged date                              : 2023-08-14 16:16:08 UTC

输出文件的媒体显示

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4
Format settings                          : CABAC / 4 Ref Frames
Format settings, CABAC                   : Yes
Format settings, Reference frames        : 4 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 13 s 13 ms
Bit rate                                 : 3 166 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 29.970 (30000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.051
Stream size                              : 4.91 MiB (96%)
Writing library                          : x264 core 164 r3107 a8b68eb
Encoding settings                        : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Language                                 : English
Color range                              : Limited
Color primaries                          : BT.2020
Transfer characteristics                 : HLG
Matrix coefficients                      : BT.2020 non-constant
Codec configuration box                  : avcC

Audio
ID                                       : 2
Format                                   : AAC LC
Format/Info                              : Advanced Audio Codec Low Complexity
Codec ID                                 : mp4a-40-2
Duration                                 : 13 s 13 ms
Source duration                          : 13 s 34 ms
Bit rate mode                            : Constant
Bit rate                                 : 132 kb/s
Channel(s)                               : 2 channels
Channel layout                           : L R
Sampling rate                            : 48.0 kHz
Frame rate                               : 46.875 FPS (1024 SPF)
Compression mode                         : Lossy
Stream size                              : 208 KiB (4%)
Source stream size                       : 208 KiB (4%)
Language                                 : English
Default                                  : Yes
Alternate group                          : 1

Other
ID                                       : 3
Type                                     : Time code
Format                                   : QuickTime TC
Duration                                 : 13 s 13 ms
Frame rate                               : 29.970 (30000/1001) FPS
Time code of first frame                 : 00:15:55;05
Time code of last frame                  : 00:16:08;06
Time code, stripped                      : Yes
Language                                 : English
Default                                  : No

“色彩范围:有限”看起来很可疑;但视频在 VLC、MPC 和现在的 WMP 中播放正常(看起来正确)。MP 和 M&TV 播放正常,但视频看起来曝光过度(一切都太亮)。在使用 -pix_fmt 选项之前,我尝试了不同的比特率、删除 QuickTime TC 通道、将元数据移到前面等 - 但直到使用 -pix_fmt,输出视频才在 WMP、MP 或 M&TV 中播放(在所有情况下,它都可以在 VLC 和 MPC 中播放)。

另一件有趣的事情是输出仍然有一个 QuickTime TC 流,但 MediaInfo 说“时间码,剥离:是” - 我不确定这是什么意思。

还有人见过并解决过这个问题吗?任何帮助都将不胜感激。

答案1

我们可能会使用z比例从 BT.2020 HDR 标准转换为 BT.709 SDR 标准的过滤器:

ffmpeg -y -i DSCF0541.MOV -vf "zscale=out_range=limited:primaries=bt709:transfer=bt709:matrix=bt709" -c:v libx264 -pix_fmt yuv420p -c:a aac -bsf:v h264_metadata=video_full_range_flag=0:colour_primaries=1:transfer_characteristics=1:matrix_coefficients=1 output.mp4

请注意HDR 转 SDR假设视频旨在显示在非 HDR 显示器上(并假设视频播放器 HDR 到 SDR 的转换不是最佳的或播放器不支持 HDR)。


原始视频每分量有 10 位、BT.2020 原色和矩阵系数以及适用于 HDR 内容的 HLG“伽马”传输函数。
我们希望输出视频每分量有 8 位、BT.709 原色、矩阵系数和适用于 SDR 内容的伽马(建议对 SDR 1080p 内容使用 BT.709)。
我们还希望从“全范围”标准转换为“有限范围”标准,因为某些视频播放器在“全范围”YUV 分量方面存在问题。

  • zscale=out_range=limited:primaries=bt709:transfer=bt709:matrix=bt709- 将 HDR 输入视频转换为“Limited Rane”,BT.709 标准输出视频。
  • -pix_fmt yuv420p- 选择每个组件 8 位的 YUV420。
  • -bsf:v h264_metadata=video_full_range_flag=0:colour_primaries=1:transfer_characteristics=1:matrix_coefficients=1- 将 H.264 视频流标记为“有限范围”,BT.709。

关于“时间码,剥离:是”,我也不确定这意味着什么(我认为 FFmpeg 不支持时间码,并且以错误的方式将时间码从输入复制到输出)。

相关内容