C++ 调节PCM音频音量大小
2014-06-26 18:24
996 查看
在用解码器解码音频数据得到PCM音频数据块之后,可以在将数据送给声卡播放之前调节其音量大小,PCM格式本身就是以一定的数据位记录音量的高低(如16位,便是以2个byte的长度记录采样时间点音量的大小),因此音频音量大小的调节原理就是调节这个值而已,非常的简单。需要注意的就是越界问题,在调节完后要做处理。
具体的实现函数如下:
另外,有了上面的知识,也可以很容易判断音频中是否有长时间没有声音的情况,以便后面做语言识别的时候可以直接截取有声音的部分做识别。
#include <stdio.h>
#include <Windows.h>
FILE* ipcmfile; //音频文件
FILE* opcmfile; //音频文件
char data[2];
void main()
{
fopen_s(&ipcmfile, "录音测试.pcm", "rb");
fopen_s(&opcmfile, "录音测试转换.pcm", "wb");
while (fread(data, 1, 2, ipcmfile) == 2)
{
short wData;
wData = MAKEWORD(data[0], data[1]);
long dwData = wData;
if (abs(dwData)>50)
{
fwrite(&data[0], 1, 2, opcmfile);
}
}
fclose(ipcmfile);
fclose(opcmfile);
}
具体的实现函数如下:
void RaiseVolume(char* buf, UINT32 size, UINT32 uRepeat, double vol)//buf为需要调节音量的音频数据块首地址指针,size为长度,uRepeat为重复次数,通常设为1,vol为增益倍数,可以小于1 { if (!size) { return; } for (int i = 0; i < size; i += 2) { short wData; wData = MAKEWORD(buf[i], buf[i + 1]); long dwData = wData; for (int j = 0; j < uRepeat; j++) { dwData = dwData * vol; if (dwData < -0x8000) { dwData = -0x8000; } else if (dwData > 0x7FFF) { dwData = 0x7FFF; } } wData = LOWORD(dwData); buf[i] = LOBYTE(wData); buf[i + 1] = HIBYTE(wData); } }
另外,有了上面的知识,也可以很容易判断音频中是否有长时间没有声音的情况,以便后面做语言识别的时候可以直接截取有声音的部分做识别。
#include <stdio.h>
#include <Windows.h>
FILE* ipcmfile; //音频文件
FILE* opcmfile; //音频文件
char data[2];
void main()
{
fopen_s(&ipcmfile, "录音测试.pcm", "rb");
fopen_s(&opcmfile, "录音测试转换.pcm", "wb");
while (fread(data, 1, 2, ipcmfile) == 2)
{
short wData;
wData = MAKEWORD(data[0], data[1]);
long dwData = wData;
if (abs(dwData)>50)
{
fwrite(&data[0], 1, 2, opcmfile);
}
}
fclose(ipcmfile);
fclose(opcmfile);
}
相关文章推荐
- C++ 调节PCM音频音量大小
- C++ 调节PCM音频音量大小
- PCM音频数据音量大小调节
- PCM音频数据音量大小调节
- FFMPEG调节音频的音量大小,混音
- 音频技术之调节音量及设置静音
- VC++音频技术之调节音量及设置静音
- 【VC++技术杂谈001】音频技术之调节音量及设置静音
- Win8如何设置调节单个程序的音量大小
- 红米音量大小调节教程
- android音量键调节听筒音量的大小
- cocos2d-x 控制android硬件音量大小调节按钮
- 【C语言】PCM音频数据处理---音量增大或减小
- 小弟需要一个能显示播放音频的各频率音量大小(不知道叫什么东东)的控件~!
- 使用C语言实现pcm格式音频音量的调整
- iOS开发 调节音频音量,音频混合
- 【乐畅】工作积累 ---- 调节音量大小 (滑动条调节音量大小并保存起来 )
- Cocos2D-x 用CCControlSlider设置调节音量的大小
- 调节音量大小
- ffplay调节音量大小