如何在Electron中录制Aux-in接口的音频?
如何在Electron中指定录制3.5mm Aux-in接口的音频
你的问题在于代码直接请求了默认音频输入设备(通常是内置麦克风),没有指定要使用Aux-in接口对应的设备。要实现指定录制Aux-in音频,需要先枚举系统中的音频输入设备,定位到Aux-in对应的设备,再基于该设备创建媒体流。
解决步骤及修改后代码:
- 枚举所有媒体设备,筛选出Aux-in/Line-in类型的音频输入设备(通过设备名称关键词匹配)
- 使用目标设备的ID调用
getUserMedia,替代默认设备配置
修改后的完整代码:
const fs = require("fs"); async function fiveSecondAudioRecorder() { try { // 枚举所有系统媒体设备 const devices = await navigator.mediaDevices.enumerateDevices(); // 筛选音频输入设备,并匹配Aux-in/Line-in设备(关键词需根据实际设备名称调整) const auxInDevice = devices.find(device => device.kind === "audioinput" && (device.label.includes("Aux-in") || device.label.includes("Line-in") || device.label.includes("线路输入")) ); if (!auxInDevice) { console.error("未找到Aux-in/Line-in音频输入设备,请检查设备连接或系统识别状态"); return; } // 指定目标设备创建媒体流 const stream = await navigator.mediaDevices.getUserMedia({ audio: { deviceId: auxInDevice.deviceId } }); const mediaRecorder = new MediaRecorder(stream); const chunks = []; mediaRecorder.addEventListener("dataavailable", event => { chunks.push(event.data); }); mediaRecorder.addEventListener("stop", async () => { const blob = new Blob(chunks, { type: "audio/ogg" }); const arrayBuffer = await blob.arrayBuffer(); const buffer = Buffer.from(arrayBuffer); fs.writeFile("recorded-audio.ogg", buffer, error => { if (error) { console.error("保存录制音频失败", error); } else { console.log("录制音频已保存到本地"); } }); }); mediaRecorder.start(); setTimeout(() => mediaRecorder.stop(), 5000); } catch (error) { console.error("访问音频设备失败", error); } } fiveSecondAudioRecorder();
注意事项:
- 设备名称的关键词可能因操作系统、硬件品牌不同而变化,比如部分设备可能显示为"Line In"、"线路输入",需根据系统识别的实际名称调整筛选条件
- 确保Aux-in设备已被系统正确识别(可在系统声音设置的输入设备列表中确认)
- Electron项目需配置好音频权限,可在主进程中通过
app.requestSingleInstanceLock()或权限声明确保应用能访问音频设备
内容的提问来源于stack exchange,提问作者bartinmader
相关产品推荐
相关产品推荐

