首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >手动将pcm数据放入AudioBuffer

手动将pcm数据放入AudioBuffer
EN

Stack Overflow用户
提问于 2014-02-22 17:34:03
回答 4查看 3.8K关注 0票数 5

因此,我已经从一个AudioBuffer中提取了通道数据,并通过可传输对象发送给了一个网络工作者,对其进行了一些处理,现在我想把它放回去。我真的要像这样把它复制回来吗?

代码语言:javascript
复制
var myData = new Float32Array(audioBuf.length);
var chanData = audioBuf.getChannelData(0);

for ( var n = 0; n < chanData.length; n++ ) {
    chanData[n] = myData[n];
}

我真的希望有一些方法来改变ArrayBuffer,每个AudioBuffer通道引用。就像..。

代码语言:javascript
复制
audioBuf.channel[0].buffer = myData.buffer;

...would是非常简单和有效的,但似乎并不存在。是否有任何方式像这样改变引用和避免复制数据?

编辑:通过对的进一步研究,我发现将web音频API与可传输对象一起使用的问题更加恼人。当您将数组缓冲区传输给工作人员时,AudioBuffer的底层数组缓冲区将被清除,我认为甚至不可能通过getChannelData返回的Float32Array进行复制操作。我现在看到完成我想要的事情的唯一方法是放弃原始的AudioBuffer,创建一个全新的AudioBuffer,然后将我的数据复制到其中。真的??

EN

回答 4

Stack Overflow用户

发布于 2014-02-24 08:34:00

我们最近在AudioBuffer上添加了两个新方法,使用copyFromChannel可能对您有用。它按照它在tin上说的做(将一个ArrayBuffer放在一个AudioBuffer的通道中),可能在过程中保存一个副本(避免复制的原因和条件被解释为这里)。

我相信它目前只在Firefox中实现,但我还没有检查。

票数 4
EN

Stack Overflow用户

发布于 2015-09-17 23:35:57

我一整天都在为这个而挣扎,所以我想我应该分享我的解决方案。

代码语言:javascript
复制
var PCM = [0,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1];


var room = new window.AudioContext();
var sampleRate = 44100;
var channels = 1;

var audioBuffer = room.createBuffer(channels, 0, sampleRate);

var channelObject = audioBuffer.getChannelData(0);

var audioBufferDataArray = channelObject.data;


// actual code to set the data

audioBuffer.length = PCM.length; // optional

for(var i=0; i<PCM.length; i++){
    audioBufferDataArray[i] = PCM[i];
}
票数 4
EN

Stack Overflow用户

发布于 2018-04-26 03:44:06

你离我太近了!您想要的方法是AudioBuffer.copyToChannel()

这将将您的Float32Array复制到音频缓冲区节点,如下所示:

代码语言:javascript
复制
var myData = new Float32Array(audioBuf.length);

//copy mydata to first channel

audioBuf.copyToChannel( myData , 0 , 0 );

在文档的深处:

https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer/copyToChannel

希望这能帮助

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21957824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档