You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#结合MediaInfo检测视频HDR格式的取值问题咨询

解决方案

1. HDR format字段读取为空的修复

你使用的是MediaInfo界面显示的友好字段名,不是接口查询用的内部键名,该字段对应的内部查询键为HDR_Format,将对应代码修改为如下内容即可正常读取:

var HDRformat = mw1.Get(StreamKind.Video, 0, "HDR_Format");

如果后续遇到其他显示字段读不到的情况,可以通过输出mw1.Option("Info_Parameters")查看所有支持的内部参数名,或者直接遍历所有参数键值对匹配目标字段。

2. 无需硬编码的动态属性读取方案

MediaInfo Wrapper提供了直接获取当前流所有可用参数名的能力,你可以通过遍历参数名列表,将所有属性存入字典实现动态读取,不需要提前硬编码任何字段:

// 视频流动态读取示例
if (videostreamcount > 0)
{
    Dictionary<string, string> videoProps = new Dictionary<string, string>();
    // 获取当前视频流所有可用的参数键名
    var allParamKeys = mw1.Get(StreamKind.Video, 0, "*").Split(new[] {'\n'}, StringSplitOptions.RemoveEmptyEntries);
    foreach (var key in allParamKeys)
    {
        var cleanKey = key.Trim();
        if (!string.IsNullOrEmpty(cleanKey))
        {
            videoProps[cleanKey] = mw1.Get(StreamKind.Video, 0, cleanKey).Trim();
        }
    }

    // 取值使用示例
    if (videoProps.TryGetValue("Height", out string height)) Console.WriteLine($"Height: {height}");
    if (videoProps.TryGetValue("HDR_Format", out string hdrFormat)) Console.WriteLine($"HDR Format: {hdrFormat}");

    // 打印所有属性方便调试
    foreach (var kvp in videoProps)
    {
        Console.WriteLine($"{kvp.Key}: {kvp.Value}");
    }
}

音频流、字幕流等其他类型的流都可以用同样的逻辑实现动态读取,只需要把StreamKind.Video替换为对应流类型即可。

内容的提问来源于stack exchange,提问作者Holly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:48:03