如何使TagLib#在扩展名错误的文件上工作?

问题描述:

我使用TagLib#从我的MP4文件中检索元数据。到目前为止,这么好,一切正常,直到我发现了一个带有“错误的”扩展名的文件,使得LagLib#puke。我发现这个文件保存了一个jpg扩展名,并且它使得TagLib抛出异常期望的SOI标记在启动该文件。some googling后,我发现,这与读取JPEG文件做。如何使TagLib#在扩展名错误的文件上工作?

如果我看看神奇的数字为它返回的00 00 00 20 66 74 79 70的文件,用正确的signature for mp4对应。

我已经得到以下问题:

  1. 如何在不重命名文件的情况下读取元数据。
  2. TagLib#如何确定元数据?

任何想法?

Ps。我使用的代码是这样的:

string file = @"D:\vs2008\Inetpub\wwwroot\Test\data\AA028578_7_2.jpg"; 
TagLib.File tag = TagLib.File.Create(file); 
Console.WriteLine(tag.MimeType); 

您可以指定MIME类型(强制):

string file = @"D:\vs2008\Inetpub\wwwroot\Test\data\AA028578_7_2.jpg"; 
TagLib.File tag = TagLib.File.Create(file, "video/mp4", TagLib.ReadStyle.Average); 
Console.WriteLine(tag.MimeType); 

我不知道它是如何在TagLibSharp加载。

+0

嗯,我随时可以使用我的幻数嗅探器,但我想的TagLib做这样的事情。 –

+0

你也可以使用'TagLib.Mpeg4.File.Create(file);'。 –

TagLib.File.Create(file, "audio/mp3", ReadStyle.None) 

工作对我来说