libx264 monochome:伽玛校正问题

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

我正在编写一个需要压缩单色视频的嵌入式应用程序。我正在使用 libx264,将 CSP 设置为 X264_CSP_I400(单色)。相关代码:

    x264_param_default_preset(&params, "medium", NULL);
    params.i_csp = X264_CSP_I400;
    params.i_bitdepth = 8;
    params.i_width = CAMCONTROL_BINNED_WIDTH;
    params.i_height = CAMCONTROL_BINNED_HEIGHT;
    params.b_vfr_input = 0;  // Use FPS for rate control, ignore time stamps
    params.b_repeat_headers = 0;  // No need to put headers before each keyframe
    params.b_annexb = 1;  // 0=AVCC, 1=Annex B for frame encoding
    params.i_fps_num = (int)(CAMCONTROL_BINNED_FPS * 10);
    params.i_fps_den = 10;
    params.rc.i_rc_method = X264_RC_CRF;
    params.rc.i_qp_constant = 20;
    x264_picture_alloc(&mpegContext.picture, params.i_csp,
                       params.i_width, params.i_height);

编码发生时没有错误或警告。使用 ffplay 解码显示我的输入视频......除了颜色似乎“关闭”。当我检查像素值时,很明显,事情被解释为好像输入是伽马校正的,输出被替换为线性格式。这让我在低端失去了很多色彩准确性,这对这个应用程序很重要。另一个奇怪的事情是 ffprobe 将颜色模型报告为 yuv420p,而不是它应该是的 I400。我尝试使用 imageio(将在生产中使用)在 python 中进行解码,它还看到了伽玛校正的发生,这并不奇怪,因为 imageio 使用 ffmpeg 进行视频解码。知道为什么会发生这些吗?我想得到与我输入的相同的颜色值(除了你总是从有损视频压缩中得到的伪像)。我需要在 x264 参数块中设置其他选项吗?

libx264 来自 Ubuntu,“libx264-dev:amd64 2:0.163.3060+git5db6aa6-2build1”

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