C#混音同时录制采集声卡和麦克风话筒

news/2024/11/23 3:50:56/

在项目中,我们可能需要同时录制声卡的声音和麦克风的声音,比如直播间,在线教学。那么如何实现呢?当然是采用SharpCapture!下面开始演示关键代码,您也可以在文末下载全部源码:

设置授权

第一步:在引用了SharpCapture.dll之后,调用SharpCapture方法之前,一定要先通过下面代码来设置授权信息,如果是试用版,直接输入Test即可。

KeyMgr.SetKey("Test");

获取IMixer的示例

从之前的一篇博文中,我们介绍了一张图看懂SharpCapture,从那篇文章我们可以看出,SharpCapture通过IMixer进行混音,混音就是指将声卡的声音和麦克风的声音录制为一路声音,方便后续处理。那么如何获取该接口的示例,从而使用该接口提供的各个方法呢?请看下面的代码:

//麦克风采集,默认采集第一个麦克风
microphone = CaptureFactory.GetMicrophoneCapture(0);//声卡数据采集
soundcard = CaptureFactory.GetSoundcardCapture();//创建混音器
mixer = CaptureFactory.GetAudioMixter(microphone, soundcard, SoundcardMixMode.DoubleChannel, true);

混音器需要您传入声卡采集器和麦克风采集器,同时设置混音的方式,比如这里是左右声道都参与混音,同时输出时保留双声道.如果您不知道该如何设置,可以使用该设置即可.

绑定事件

获取到了IMixer的示例后,为其绑定事件MixedAudioDataCaptured。每当引擎采集到声音数据并混音之后,就会将数据上交给该事件的响应函数上,您就可以进行下一步的处理,比如保存为音频文件。

 //注册采集到声音数据的事件,每当采集到声音数据,就通过该事件上报
mixer.AudioMixed += new SGDelegate<byte[]>(MixedAudioDataCaptured);

处理数据

可以在获取到声音字节流后进行后续处理。

/// <summary>
/// 采集到声音数据
/// </summary>
/// <param name="audioData">声音数据</param>
public void MixedAudioDataCaptured(byte[] audioData)
{if (this.InvokeRequired){this.BeginInvoke(new SGDelegate<byte[]>(MixedAudioDataCaptured), audioData);}else{//写入wav文件中if (mixWav != null){mixWav.WriteAudioData(audioData);}}
}

开始采集

处理完上述步骤后,就可以开始采集了。如下:

//开始采集和混音
microphone.Start();
soundcard.Start();

停止采集

您可以通过下面的代码停止采集:

//停止采集和混音
microphone.Stop();
soundcard.Stop();

demo源码下载

点击下载源码


http://www.ppmy.cn/news/252524.html

相关文章

C#采集麦克风话筒声音

在项目中,我们会需要录制麦克风的声音。比如录制QQ聊天时自己说的话。那么如何采集呢&#xff1f;当然是采用SharpCapture&#xff01;下面开始演示关键代码&#xff0c;您也可以在文末下载全部源码: 设置授权 第一步&#xff1a;在引用了SharpCapture.dll之后&#xff0c;调…

LLMs:自然语言处理领域—大语言模型的涉及四大技术领域(TL/USL/PT+Fine/Seq2Seq)、十大核心组件之详细攻略

LLMs:自然语言处理领域—大语言模型的涉及四大技术领域(TL/USL/PT+Fine/Seq2Seq)、十大核心组件之详细攻略 目录 LLMs涉及技术领域的简介 1、迁移学习:特征提取、微调 2、无监督学习技术

6/5~6/6总结

创建存储过程 DELIMITER // CREATE PROCEDURE usingid() BEGIN SELECT AVG(id) FROM user; END // DELIMITER ; 要用DELIMITER //指定结束符为 "//", 要调用该存储过程&#xff1a; CAll usingid; 创建成功后在navicat里面的函数界面可以看见刚刚创建的存储过程…

搭建mysql主从服务

一.环境 基于docker搭建环境。 使用mysql版本5.7.4 二.搭建mysql主 docker run \ --name mysqlmaster \ -e MYSQL_ROOT_PASSWORD123456 \ -v /docker/mysql/data:/var/lib/mysql \ -v /docker/mysql/config:/etc/mysql/conf.d \ -p 5132:3306 \ -d mysql:5.7.4 2.在主服务…

AIGC资源整理

这几个月我深入研究了AIGC&#xff0c;同时业翻阅和搜集了大量的资料&#xff0c;累计也花了1000去买了各种信息源 为了方便我的好朋友们学习&#xff0c;我将那些优质的免费信息源和工具&#xff0c;都进行了整理。 如果你也想学习AIGC、ChatGPT相关的内容&#xff0c;那么我很…

工控系统概述

工业控制系统安全-工控系统概述 简短介绍工控系统架构、组成部分、功能以及术语等方面&#xff0c;掌握基本工控系统知识。工控系统指的是工业自动化控制系统&#xff0c;主要利用电子电气、机械、软件组合实现。主要是使用计算机技术&#xff0c;微电子技术&#xff0c;电气手…

工控机专业知识解析

工控机专业知识解答 什么是工控机&#xff1f; 工控机是一种特定类型的计算系统&#xff0c;用于管理机器自动化、制造设备和新时代自主机器人的各种工厂和工业工作负荷。 工控机在工业4.0的核心推动了效率和洞察力的提高。工控机的设计和制造能够承受各种工业环境的挑战性物…

基于stm32的超声波测距

文章目录 一、HC-SR04超声波测距模块说明1、产品特点2、电气参数3、HC-SR04超声波测距模块4、超声波时序图 二、 CUBEMX配置三、keil配置代码 模块选择&#xff1a; stm32f103c8芯片 HC-SR04超声波测距模块 一、HC-SR04超声波测距模块说明 1、产品特点 HC-SR04 超声波测距模块…