写.wav文件的三个关键函数
来源:互联网 发布:大富豪5.2全套源码 编辑:程序博客网 时间:2024/06/06 14:15
int WriteBackupFileAudio(char *pData)
{
int len = 0;
if(g_waveFile)
{
len = fwrite(pData, 1, 320, g_waveFile);
if(len != 320)
{
printf("WriteBackupFileAudio fail! len = %d\n",len);
return -1;
}
}
return 0;
}
int ConstruncWavHead(void)
{
int len = 0;
unsigned char wavHeadData[] =
{
// RIFF WAVE Chunk
0x52, 0x49,0x46,0x46,// "RIFF"
0x30,0x00,0x00,0x00,//总长度整个wav文件大小减去ID和Size所占用的字节数
0x57, 0x41,0x56,0x45,// "WAVE"
// Format Chunk
0x66, 0x6D,0x74,0x20,// "fmt "
0x10, 0x00,0x00,0x00,//块长度
0x01, 0x00,//编码方式
0x01, 0x00,//声道数目
0x40,0x1f,0x00,0x00,//采样频率 16000=3e80; [8k= 0x40 0x1f 0 0 ]
0x80,0x3e,0x00,0x00,//每秒所需字节数=采样频率*块对齐字节
0x02,0x00,//数据对齐字节=每个样本字节数*声道数目
0x10, 0x00,//样本宽度
// Fact Chunk
0x66, 0x61,0x63,0x74,// "fact"
0x04, 0x00,0x00,0x00,//块长度
0x00, 0xBE,0x00,0x00,
// Data Chunk
0x64, 0x61,0x74,0x61,// "data"
0x00, 0x00,0x00,0x00,//块长度
};
if(g_waveFile)
{
len = fwrite(wavHeadData,1,56,g_waveFile);
if(len != 56)
{
return -1;
}
}
return 0;
}
int ChangeWavHeadInfo()
{
if(NULL == g_waveFile)
return 0;
int len;
char buf[4];
memset(buf,0,sizeof(buf));
fseek(g_fpPcm,0,SEEK_END);
len = ftell(g_fpPcm);
((unsigned int *)buf)[0] = len;// toltal size
fseek(g_waveFile,4,SEEK_SET);
fwrite(buf,1,4,g_waveFile);//5~8字节,保存文件总长度
fseek(g_waveFile,52,SEEK_SET);
((unsigned int *)buf)[0] = len-56;// 53~56字节,保存数据长度
fwrite(buf,1,4,g_waveFile);
fflush(g_waveFile);
return 0;
}
此代码纯属自己备份,里面一些变量都写死了,不同的情况可能需要变通
amr文件的6字节文件头
BYTE buffer[6] = {0x23, 0x21, 0x41, 0x4D, 0x52, 0x0A};
- 写.wav文件的三个关键函数
- 关闭用playsound函数的WAV文件
- 关闭用playsound函数的WAV文件
- wav文件的读取
- WAV文件的读写
- InnoDB的三个关键特性
- 方法的三个关键参数
- wav文件的文件头
- wav文件的文件头
- 文件, 文件流对象ofstream, 缓冲区, 三个不同的概念,关键 理解outfile.clear()作用的关键
- asp删除文件的函数(三个)
- 画WAV的图形函数
- Linux环境下用c语言写的播放wav文件的小程序
- Linux环境下用c语言写的播放wav文件的小程序
- Linux环境下用c语言写的播放wav文件的小程序
- 大型WAV文件的播放
- 大型WAV文件的播放
- 大型WAV文件的播放
- C++刷题——2306: 字符串操作一(串)
- Android三款实用的自定义开关控件
- windows下安装nginx
- 第九周 项目一 复数类中的运算符重载(续)
- ]浅谈几种服务器端模型——多线程并发式(线程池)
- 写.wav文件的三个关键函数
- SQL Server 系统表 sysobjects 中 xtype 和 type 的区别
- PL/SQL美化规则文件详解
- Android开发:shape和selector和layer-list的(详细说明) .
- jar包中读取文件及其内容
- wps如何打开文档的目录
- Android优化学习篇一:NDK的那些事儿
- 批处理人脸检测区域的保存和下采样
- JDBC连接数据库操作含连接前后台