欢迎光临
我们一直在努力

C#获取WAVE文件文件头信息-.NET教程,C#语言

建站超值云服务器,限时71元/月

c#获取wave文件文件头信息

前些日子在论坛里问了,没人回答,今天有空自己写了一下

文件格式依据网站

http://www.moon-soft.com/program/format/

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);

}

}

}

}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » C#获取WAVE文件文件头信息-.NET教程,C#语言
分享到: 更多 (0)

相关推荐

  • 暂无文章