程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#獲取WAVE文件文件頭信息

C#獲取WAVE文件文件頭信息

編輯:關於C#

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

    }

}

}

}

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved