c# AviFile: fccHandler ->编解码器的名字

本文关键字:编解码器 AviFile fccHandler | 更新日期: 2023-09-27 18:08:29

希望避免使用任何第三方工具。寻找一种将Avi.AVICOMPRESSOPTIONS中包含的' fccHandler '代码转换或以某种方式翻译成人类可读的编解码器名称以用于显示目的的方法。

通过大量的挠头和盯着数字,我开始摆弄它,直到我记得读到过关于它是int表示十六进制的东西。

正确转换。:)

    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# AviFile: fccHandler ->编解码器的名字

以下代码可用于获取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