【问题标题】:How to parse out information of WMV file in C#如何在 C# 中解析出 WMV 文件的信息
【发布时间】:2011-07-21 10:03:44
【问题描述】:

我想获取 ASF 文件的比特率、元数据、语言等信息...我已阅读 ASF 规范并知道 ASF 文件包含以下部分:标题对象、数据对象、索引对象。首先,我认为 ASF 文件的二进制文件,我尝试通过 C# 中的 CLASS 和 FUNCTION 解决:FileStream,BinaryReader:

String path = @"E:\KhoaLuanTN\Streaming video server\video\encoder_ad.wmv";
        FileStream filer = File.OpenRead(path);
        BinaryReader br = new BinaryReader(filer);         
        byte [] file = br.ReadBytes(100);

然后,我尝试转换成字符串:

 textBox1.Text = Encoding.ASCII.GetString ( file );

但它没有按我的预期显示。它显示一个无意义的字符串:0&?u?f? ???。 所以请教我如何将 ASF 文件中的信息转换为字符串。

【问题讨论】:

标签: c# binary streaming wmv asf


【解决方案1】:

您可以在 codeplex 上查看 AsfMojo。它提供了一个简单的 API 来提取您感兴趣的所有信息:

示例代码

using (AsfFile asfFile = new AsfFile(sampleFileName))
{
    //Get bitrate
    uint asfBitRate = asfFile.PacketConfiguration.AsfBitRate;
    Console.WriteLine("Bitrate: " + asfBitRate);

    //Get language
    var languageObject = (AsfLanguageListObject)asfFile.GetAsfObjectByType(AsfGuid.ASF_Language_List_Object).FirstOrDefault();
    if (languageObject != null)
    {
        foreach (string language in languageObject.Languages)
            Console.WriteLine("Language: " + language);
    }

    //Get Metadata
    var metadataObject = (AsfMetadataObject)asfFile.GetAsfObjectByType(AsfGuid.ASF_Metadata_Object).FirstOrDefault();
    if (metadataObject != null)
    {
        foreach (var item in metadataObject.DescriptionRecords)
            Console.WriteLine(string.Format("{0}: {1} (stream #{2})", item.Name, item.Value, item.StreamNumber));
    }
}


样本输出

这将为我的示例文件创建以下输出:

Bitrate: 455932
Language: en-us
IsVBR: False (stream #1)
DeviceConformanceTemplate: L2 (stream #1)
IsVBR: False (stream #2)
DeviceConformanceTemplate: MP@ML (stream #2)

【讨论】:

  • @BorkenGlass :感谢您的帮助。我将尝试阅读 AFSMojo 的源代码。据我所知,您是 ASFMojo 项目的一个构建者?你能给我你的电子邮件或Skype或雅虎吗?我想问你一些事情
  • @PenguinSh:如果这个问题对更广泛的受众感兴趣,请在 SO 上提问 - 如果它与 AsfMojo 有关,请在 asfmojo/codepex 上启动讨论线程,否则您可以通过联系方式与我联系也在那里形成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 2022-11-18
  • 2018-02-08
  • 1970-01-01
相关资源
最近更新 更多