当颜色元数据“未知”时如何保留颜色

问题描述 投票:0回答:1

我经常需要使用

unknown
颜色元数据放大许多文件(可能是因为 FFmpeg 本身直到最近才删除该元数据):

$ ffprobe -v error -show_streams "input.mp4" | grep color color_range=tv color_space=unknown color_transfer=unknown color_primaries=unknown
无论我做什么来尝试保留这些文件中的颜色,都无法阻止颜色发生变化,通常会比输入的颜色更暗。

我已经尝试过:

  1. 将所有四个颜色元数据选项(

    -colorspace

    -color_trc
    -color_primaries
    -color_range
    )设置为 PAL、NTSC 和 HD 输入(
    bt470bg
    smpte170m
    bt709
    )的所有可能值分别)

  2. 通过添加

    in_color_matrix=auto:out_color_matrix=<COLORSPACE>

     自动将色彩空间转换为比例的一部分,其中 
    bt470
    smpte170m
    bt709
    
    

  3. 通过添加

    in_color_matrix=<COLORSPACE>:out_color_matrix=bt709

     将色彩空间显式转换为比例的一部分,其中 是 
    bt470
    smpte170m
    bt709
    
    

在经历了这一切之后,我仍然不知道到底颜色在 FFmpeg 中是如何工作的,以及我应该做什么

只是让我的颜色看起来像在原始输入中一样。

这是我作为较大脚本的一部分运行的(简化的)FFmpeg 命令,其中大部分“可能”与问题无关,但我已将其包含在内,以防它“不是”:

ffmpeg -y -hide_banner \ -i "input.webm" -i "outro.mp4" -loop 1 -i "watermark.png" \ -movflags +faststart+write_colr \ -filter_complex \ "color=black:16x16:d=780[base]; [0:v]scale=1922:'max(1080,ih)':flags=lanczos:in_color_matrix=auto:out_color_matrix=bt709[v0]; [1:v]scale=1922:'max(1080,ih)':flags=lanczos,fade=in:st=0:d=2:alpha=1[v1]; [2:v]lut=a=val*0.7,fade=in:st=15:d=3:alpha=1,fade=out:st=775:d=3:alpha=1[v2]; [base][v0]scale2ref[base][v0]; [base][v0]overlay[tmp]; [tmp][v1]overlay,setsar=1[tmp2]; [v2][tmp2]scale2ref=w=oh*mdar:h=ih*0.07[watermark_scaled][video] [video][watermark_scaled]overlay=80:50:shortest=1:format=rgb[outv]; [0:a]afade=out:st=778:d=2[0a]; [0a][1:a]concat=n=2:v=0:a=1[outa]" \ -map "[outv]" -map "[outa]" -c:v libx264 -crf 15 -c:a libopus \ -pix_fmt yuv420p -colorspace bt709 -color_trc bt709 -color_primaries bt709 -color_range tv "output.mp4"

您是否尝试过在输入之前
标记色彩空间/传输/原色?这设置了 ffmpeg 使用的 AVFrame“标签”。
bash ffmpeg automation video-encoding color-space
1个回答
0
投票

或者,如果唯一的问题是您的输入文件缺少颜色元数据,并且当您标记了视频时,这种类型的过滤器链可以正常工作...只需重新混合它们并将其添加进去? ffmpeg -i in.mp4 -c copy -color_primaries bt709 -color_trc bt709 -colorspace bt709 -color_range tv -movflags faststart+write_colr out.mp4

© www.soinside.com 2019 - 2024. All rights reserved.