C++ 多路音频pcm混音算法

1、均值化混音算法

不适合商用,声音的损失比较大,不建议用,建议用第二种声音混音

short remix(short pcm1,short pcm2){

int value = pcm1+ pcm2;

return (short)(value/2)

}

2、归一化混音算法

输入数据为48Khz-2-16bit音频数据

方法:为避免发生溢出,使用一个可变的衰减因子对语音进行衰减。这个衰减因子也就代表语音的权重,衰减因子随着音频数据的变化而变化,所以称为自适应加权混音。当溢出时,衰减因子较小,使得溢出的数据在衰减后能够处于临界值以内,而在没有溢出时,又让衰减因子慢慢增大,使数据较为平缓的变化。(PCM音频混合的方法_pcm混音算法-CSDN博客

//归一化混音

void mix(char **src_data, char *mix_data, int channels, int buffer_size)

{

int const MAX = 32767;

int const MIN = -32768;

double f = 1;

int output;

int i = 0, j = 0;

for (i = 0; i < buffer_size / channels; i++)

{

int temp = 0;

for (j = 0; j < channels; j++)

{

temp += *(short*)(src_data[j] + i * channels);

}

output = (int)(temp*f);

if (output > MAX)

{

f = (double)MAX / (double)(output);

output = MAX;

}

if (output < MIN)

{

f = (double)MIN / (double)(output);

output = MIN;

}

if (f < 1)

{

f += ((double)1 - f) / (double)32;

}

*(short*)(mix_data + i * 2) = (short)output;

}

}

调用方法:

char *testSrcData[2] = { NULL };

testSrcData[0] = 声音通道1数据

testSrcData[1] = 声音通道2数据

mix(testSrcData, mix_data, 2, buffer_size);

3、其他方法本人没用过,不好评价,不过感觉第二种够用了,至少目前没什么特别大的反馈
4、混音的思路

采集多路pcm数据-》统一重采样成48Khz-2通道-16bit-》归一化混音

相关推荐
张张说点啥5 小时前
能做影视级可商业视频的AI工具,Seedance 2.0 全球首发实测
人工智能·音视频
qq_433502185 小时前
收集了一些免费视频背景映月素材网站分享记录
经验分享·学习·音视频·生活
Android系统攻城狮17 小时前
Android tinyalsa深度解析之pcm_state调用流程与实战(一百一十七)
android·pcm·tinyalsa·音频进阶·音频性能实战
上海合宙LuatOS1 天前
LuatOS核心库API——【hmeta 】硬件元数据
单片机·嵌入式硬件·物联网·算法·音视频·硬件工程·哈希算法
一个人旅程~1 天前
QQ音乐、potplayer、VLC等对音乐格式的支持和加密文件格式的转换有哪些方法?potplayer的音质相对于VLC有哪些特点?
windows·经验分享·电脑·音视频
音视频牛哥1 天前
从协议栈到工程落地:SmartMediaKit全链路模块化架构深度解析
音视频·rtsp播放器·rtmp播放器·安卓rtsp服务器·安卓轻量级rtsp服务·安卓rtsp摄像头推流·安卓摄像头rtmp推流
奔跑吧 android1 天前
【车载Audio】【AudioHal 04】【高通音频架构】【从 AHAL adev_open 到 PAL XML 解析:30微秒内的调用链深度追踪】
音视频·audiohal·车载audio·高通音频架构·ahal·audiofinger
Android系统攻城狮1 天前
Android tinyalsa深度解析之pcm_get_available_min调用流程与实战(一百一十六)
android·pcm·tinyalsa·音频进阶·音频性能实战
REDcker1 天前
FFmpeg完整文档
linux·服务器·c++·ffmpeg·音视频·c·后端开发
linux_cfan1 天前
WordPress 视频播放痛点解决方案:支持 RTSP/WebRTC 与字幕检索的 ZWPlayer 插件实测
php·音视频·webrtc