C# 判断一个文件是不是媒体文件不通过后缀名也不通过文件头信息
时间: 2023-08-09 14:08:52 浏览: 131
用c语言根据文件后缀名判断文件类型
如果不通过后缀名和文件头信息来判断一个文件是否是媒体文件,那么就需要根据媒体文件的特征来进行判断。媒体文件的特征可以包括文件的大小、比特率、采样率、声道数等等。
以下是一个示例代码,通过判断文件的比特率和采样率来判断文件是否是MP3音频文件:
```csharp
public static bool IsMP3File(string filePath)
{
bool isMP3File = false;
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[128];
fs.Read(buffer, 0, 128);
string header = Encoding.Default.GetString(buffer);
if (header.StartsWith("ID3")) //判断是否是MP3文件
{
int bitRateIndex = header.IndexOf("bitrate");
int sampleRateIndex = header.IndexOf("samplerate");
if (bitRateIndex > -1 && sampleRateIndex > -1) //判断是否包含比特率和采样率信息
{
string bitRateStr = header.Substring(bitRateIndex + 7, 4).Trim();
string sampleRateStr = header.Substring(sampleRateIndex + 11, 4).Trim();
int bitRate = 0;
int sampleRate = 0;
if (int.TryParse(bitRateStr, out bitRate) && int.TryParse(sampleRateStr, out sampleRate))
{
if (bitRate > 0 && sampleRate > 0) //判断比特率和采样率是否合法
{
isMP3File = true;
}
}
}
}
}
return isMP3File;
}
```
该方法会读取MP3文件的前128个字节,然后判断文件是否包含比特率和采样率信息,如果包含并且比特率和采样率都是合法的,则认为该文件是MP3音频文件。需要注意的是,不同媒体文件的特征可能不同,需要根据具体的需求添加相应的判断。
阅读全文