ajax里的rtn,外部音频输入

Web SDK 从 v1.0.0 版本增加了外部音频输入的功能,用户可以自定义音频的输入数据,不必依赖麦克风采集。

音频输入格式

在 Web 标准中,我们一般把需要操作的音频数据存放在 AudioBuffer 中, 实际这里存放的也就是 PCM 数据,下面我们介绍在不同情况下如何构建一个 AudioBuffer。

通过 PCM 数据构建

假设目前有一组单声道的 PCM 数据,下面的代码将会通过这个 PCM 创建相应的 AudioBuffer。

const PCM = [....] // 一组 PCM 数据

const audioCtx = new AudioContext();

const audioBuffer = audioCtx.createBuffer(1, PCM.length, 44100); // 其中 44100 为采样率

const channelData = audioBuffer.getChannelData(0);

for (let i = 0; i < PCM.length; i++) {

channelData[i] = PCM[i]; // 填入 PCM 数据

}

通过音乐文件(.mp3 .ogg)构建

音乐文件可以来源于用户本地上传,也可以来源于网络 ajax 获取,这里的前提是获取到了音乐文件的二进制数据,一般为一个 FloatArray

import { decodeAudioData } from "pili-rtc-web";

const audioData = [...] // 通过 ajax 或者 fileReader 拿到的文件数据

decodeAudioData(audioData).then(audioBuffer => {

console.log("audioBuffer", audioBuffer);

}).catch(e => { throw e; })

配置外部音频输入

如果需要打开外部音频输入,需要在 getLocalStream 时声明

const stream = deviceManager.getLocalStream({

audio: {

enabled: true,

buffer: ture, // 声明使用外部音频输入

},

})

当上文中的 audioBuffer 准备好时,通过如下代码输入外部音频

const audioBuffer = ...

const stream = deviceManger.getLocalStream({...}) // 见上

stream.setAudioBufferData(audioBuffer);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值