| C#获取WAVE文件文件头信息 |
|
| |
|
using System;
using System.IO;
using System.Text;
namespace WAV
{
/// <summary>
/// Summary description for Wav.
/// </summary>
public class Wav
{public Wav()
{ //
// TODO: Add constructor logic here
//
}
[STAThread]
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
string strpath=@"C:\Documents and Settings\Administrator\桌面\trojan\怀念战友.wav";//=@"F:\Music";
if(args.Length>0)
{ strpath=args[0].Trim();
}
if(File.Exists(strpath))
{ GetWavInfo(strpath);
Console.WriteLine("GetWavInfo Successfully!");
//Console.WriteLine("");
}
else
{ Console.Write("Please Enter the write filepath!\n");
Console.Write("用法: WAV [Full Path Of Your WAV filepath]");
}
}
public struct WavInfo
{ public string groupid;
public string rifftype;
public long filesize;
public string chunkid;
public long chunksize;
public short wformattag; //记录着此声音的格式代号,例如WAVE_FORMAT_PCM,WAVE_F0RAM_ADPCM等等。
public ushort wchannels; //记录声音的频道数。
public ulong dwsamplespersec;//记录每秒取样数。
public ulong dwavgbytespersec;//记录每秒的数据量。
public ushort wblockalign;//记录区块的对齐单位。
public ushort wbitspersample;//记录每个取样所需的位元数。
public string datachunkid;
public long datasize;
}
public static void GetWavInfo(string strpath)
{
WavInfo wavInfo = new WavInfo();
FileInfo fi = new FileInfo(strpath);
System.IO.FileStream fs=fi.OpenRead();
if(fs.Length>=44)
{
byte[] bInfo=new byte[44];
fs.Read(bInfo,0,44);
System.Text.Encoding.Default.GetString(bInfo,0,4);
if(System.Text.Encoding.Default.GetString(bInfo,0,4)=="RIFF"&&System.Text.Encoding.Default.GetString(bInfo,8,4)=="WAVE"&&System.Text.Encoding.Default.GetString(bInfo,12,4)=="fmt ")
{
wavInfo.groupid = System.Text.Encoding.Default.GetString(bInfo,0,4);
System.BitConverter.ToInt32(bInfo,4);
wavInfo.filesize = System.BitConverter.ToInt32(bInfo,4);
//wavInfo.filesize = Convert.ToInt64(System.Text.Encoding.Default.GetString(bInfo,4,4));
wavInfo.rifftype = System.Text.Encoding.Default.GetString(bInfo,8,4);
wavInfo.chunkid = System.Text.Encoding.Default.GetString(bInfo,12,4);
wavInfo.chunksize = System.BitConverter.ToInt32(bInfo,16);
wavInfo.wformattag = System.BitConverter.ToInt16(bInfo,20);
wavInfo.wchannels = System.BitConverter.ToUInt16(bInfo,22);
wavInfo.dwsamplespersec = System.BitConverter.ToUInt32(bInfo,24);
wavInfo.dwavgbytespersec = System.BitConverter.ToUInt32(bInfo,28);
wavInfo.wblockalign = System.BitConverter.ToUInt16(bInfo,32);
wavInfo.wbitspersample = System.BitConverter.ToUInt16(bInfo,34);
wavInfo.datachunkid = System.Text.Encoding.Default.GetString(bInfo,36,4);
wavInfo.datasize = System.BitConverter.ToInt32(bInfo,40);
System.Console.WriteLine("groupid:"+wavInfo.groupid);
System.Console.WriteLine("filesize:"+wavInfo.filesize);
System.Console.WriteLine("rifftype:"+wavInfo.rifftype);
System.Console.WriteLine("chunkid:"+wavInfo.chunkid);
System.Console.WriteLine("chunksize:"+wavInfo.chunksize);
System.Console.WriteLine("wformattag:"+wavInfo.wformattag);
System.Console.WriteLine("wchannels:"+wavInfo.wchannels);
System.Console.WriteLine("dwsamplespersec:"+wavInfo.dwsamplespersec);
System.Console.WriteLine("dwavgbytespersec:"+wavInfo.dwavgbytespersec);
System.Console.WriteLine("wblockalign:"+wavInfo.wblockalign);
System.Console.WriteLine("wbitspersample:"+wavInfo.wbitspersample);
System.Console.WriteLine("datachunkid:"+wavInfo.datachunkid);
System.Console.WriteLine("datasize:"+wavInfo.datasize);
}
}
}
}
}
 |
频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。
| 原始作者:佚名 |
录入时间:2006-10-26 |
| 信息来源:不详 |
投稿信箱:itqoo@126.com |
|
|
 |
|
|
|
| 教程录入:admin 责任编辑:admin |
|
上一个教程: ASP.NET 2.0 缓存翻译草稿
下一个教程: 通过事例学习.net的WebForms技术(二) |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |