【问题标题】:C# AviFile: fccHandler -> codec name?C# AviFile: fccHandler -> 编解码器名称?
【发布时间】:2013-04-11 03:21:53
【问题描述】:

希望避免使用任何第三方实用程序。正在寻找一种方法将 Avi.AVICOMPRESSOPTIONS 中包含的“fccHandler”代码转换或以某种方式转换为人类可读的编解码器名称以供显示。

通过大量的头疼和盯着数字,我开始玩弄它,直到我记得读过一些关于它是 uint 代表十六进制的东西。

这可以正确转换。 :)

    public string MakeFourCC(uint fccHandler)
        {
        string inputHex = fccHandler.ToString("X");
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i <= inputHex.Length - 2; i += 2)
            {
            sb.Append(Convert.ToString(Convert.ToChar(Int32.Parse(inputHex.Substring(i, 2),
            System.Globalization.NumberStyles.HexNumber))));
            }
        char[] array = sb.ToString().ToCharArray();
        Array.Reverse(array);
        return new string(array);
        }

【问题讨论】:

    标签: c# .net codec


    【解决方案1】:

    以下代码可用于获取 FOURCC 的字符串表示:

    uint fourcc = ...;
    var fourccString = new string
        (
            new[]
            {
                (char)(fourcc & 0xFF),
                (char)((fourcc & 0xFF00) >> 8),
                (char)((fourcc & 0xFF0000) >> 16),
                (char)((fourcc & 0xFF000000U) >> 24)
            }
        );
    

    要获得更用户友好的名称,您可以使用已知 FOURCC 列表http://www.fourcc.org/codecs.php

    【讨论】:

      猜你喜欢
      • 2021-09-18
      • 2023-03-26
      • 1970-01-01
      • 2011-05-27
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多