111,126
社区成员
发帖
与我相关
我的任务
分享
public struct WAVE_Header
{
public string RIFF_ID; //4 byte , 'RIFF'
public long File_Size; //4 byte , 文件长度
public string RIFF_Type; //4 byte , 'WAVE'
public string FMT_ID; //4 byte , 'fmt'
public long FMT_Size; //4 byte , 数值为16或18,18则最后又附加信息
public short FMT_Tag; //2 byte , 编码方式,一般为0x0001
public ushort FMT_Channel; //2 byte , 声道数目,1--单声道;2--双声道
public ulong FMT_SamplesPerSec;//4 byte , 采样频率
public ulong AvgBytesPerSec; //4 byte , 每秒所需字节数,记录每秒的数据量
public ushort BlockAlign; //2 byte , 数据块对齐单位(每个采样需要的字节数)
public ushort BitsPerSample; //2 byte , 每个采样需要的bit数
public string DATA_ID; //4 byte , 'data'
public long DATA_Size; //4 byte ,
}
WAVE_Header wav_Header = new WAVE_Header();
public void Ini_wav_Header(long data_len)
{
wav_Header.RIFF_ID = "RIFF";
wav_Header.File_Size = data_len + 36;
wav_Header.RIFF_Type = "WAVE";
wav_Header.FMT_ID = "fmt";
wav_Header.FMT_Size = 16;
wav_Header.FMT_Tag = 0x0001;
wav_Header.FMT_Channel = 1; //单声道
wav_Header.FMT_SamplesPerSec = 32000; //采样频率
wav_Header.AvgBytesPerSec = 32000; //每秒所需字节数
wav_Header.BlockAlign = 1; //每个采样1个字节
wav_Header.BitsPerSample = 8; //每个采样8bit
wav_Header.DATA_ID = "data";
wav_Header.DATA_Size = data_len;
}