如何确定某个特定文件(可能有或没有“.mp3”文件扩展名)实际上是一个MP3文件?我希望在C#中做到这一点。我怎样才能确定一个特定的文件实际上是一个MP3文件?
7
A
回答
5
- 使用的文件扩展名是不可靠的。
- 你可以使用的最好的库是https://github.com/mono/taglib-sharp它检测大多数常见的文件类型。也许你只是想mp3,所以你可以提取任何MP3相关的类。
- 你可以使用一个简单的库https://github.com/judwhite/IdSharp
5
文件通常以“幻数”开头以标识数据格式。根据格式的不同,文件以特定的字节序列开始,该序列对于该格式是唯一的。没有标准可以遵循,所以它不是100%可靠的。
作为FVU说,mp3的幻数是0x49 0x44 0x33
14
根据http://www.garykessler.net/library/file_sigs.html一个mp3文件将始终与ID3(十六进制49 44 33)开始。然而,这些字节的存在仅意味着该文件被标记有ID3 information 。如果未找到此签名,则可能是未加标签的mp3文件。要确定这一点,请查看the mp3 file structure,您将看到一个mp3帧以签名ff fb(hex)开头。
所以:
- 如果文件开始用十六进制
49 44 33
或
- 如果文件用十六进制开始
ff fb
它是安全的假设,它是一个MP3。
1
string[] filePath = Directory.GetFiles(fbdialog.SelectedPath.ToString(),".mp3",
SearchOption.AllDirectories);
foreach (string str in filePath)
{
MessageBox.Show("It's mp3 file");
}
+3
这没有错,但它不可靠。 –
-2
C#代码:
bool isMP3(byte[] buf)
{
if (buf[0] == 0xFF && (buf[1] & 0xF6) > 0xF0 && (buf[2] & 0xF0) != 0xF0)
{
return true;
}
return false;
}
相关问题
- 1. 我怎样才能从一个特定的配置文件
- 2. 我怎样才能得到一个mp3文件的封面?
- 3. 我怎样才能锁定一个文件,同时写入它
- 4. 我怎样才能复制一个具有特定日期的文件在c#
- 5. 我怎样才能模拟一个“锁定”文件(一个有写锁)
- 6. 我怎样才能得到一个文件名的一部分?
- 7. 我怎样才能找出*网页上的文字是哪一个文件?
- 8. 我怎样才能看到一个文件,因为它是在一个特定的git提交?
- 9. 我怎样才能找到一个exe文件是installtion excludable文件或不是?
- 10. 我们怎样才能引用文件的特定行?
- 11. 我怎样才能写一个文件我arraylist?
- 12. XAML:我怎样才能改变一个特定的ResourceDictionary
- 13. 我怎样才能fscanf()一个特定的类型?
- 14. 我怎样才能得到一个特定的边缘oracle
- 15. 我怎样才能抛出一个特定的HResult异常?
- 16. 我怎样才能让一个孩子的XML文件
- 17. 我怎样才能确定是否
- 18. 我怎样才能改变路径到特定文件夹
- 19. 我怎样才能在Android中定位一个可绘制的资源文件
- 20. 我怎样才能jQuery的倒计时重定向到一个复位文件
- 21. 我怎样才能在android中的mediaPlayer播放2个或更多的MP3文件一个接一个?
- 22. 我怎样才能使用HTML文件到另一个
- 23. 我怎样才能隔离数据块从一个文件
- 24. 我怎样才能用python选择一个文件?
- 25. 我怎样才能拦截Express.js一个多文件流?
- 26. 我怎样才能从另一个调用JS函数文件
- 27. 我怎样才能改变plugin_dir_url到另一个文件夹?
- 28. Lua Love2D - 我怎样才能让它下载一个文件?
- 29. 我怎样才能把文件内容到一个JList
- 30. 我怎么能选择一个特定的文件加载loadStrings
C#和文件类型幻数;可能是http://stackoverflow.com/questions/1654846/in-c-how-can-i-know-the-file-type-from-a-byte –
的副本如果您使用提供的解决方案成功加载它http://stackoverflow.com/questions/184683/,你可能会认为它是一个有效的MP3 –