Javascript Swift 3获取音频流

Javascript Swift 3获取音频流,javascript,swift3,blob,html5-audio,Javascript,Swift3,Blob,Html5 Audio,我对Swift编程非常陌生,请原谅。 我正在尝试做的是我正在尝试做一个语音记录,下面是从iPhone的麦克风获取流的方法。通过使用此方法,我成功地将流存储到设备内部的WAV文件中。我确认文件正常,录音后播放正常 osErr=ExtAudioFileWrite(destinationFile!,frameCount,inputDataList) 我不成功的做法是捕获音频流,将流作为base64编码的数据传递给WKWebview,将数据转换为Blob,然后使用 URL.createObjectURL

我对Swift编程非常陌生,请原谅。 我正在尝试做的是我正在尝试做一个语音记录,下面是从iPhone的麦克风获取流的方法。通过使用此方法,我成功地将流存储到设备内部的WAV文件中。我确认文件正常,录音后播放正常

osErr=ExtAudioFileWrite(destinationFile!,frameCount,inputDataList)

我不成功的做法是捕获音频流,将流作为base64编码的数据传递给WKWebview,将数据转换为Blob,然后使用

URL.createObjectURL(new Blob( [blob], { type:{"audio/wav"} })
音频元素只是抛出一个错误,不播放blob。我不知道我在代码的sendAudioBuffer部分得到的是不是应该传递的正确数据

我真的非常感谢你提供的任何信息。我从这里得到这个方法的原始代码

func processMicrophoneBuffer(inputDataList:UnsafeMutablePointer,帧数:UInt32){
让inputDataPtr=UnsafemtableAudioBufferListPointer(inputDataList)
let mbuffer:AudioBuffer=inputDataPtr[0]
let count=Int(帧计数)
让bufferPointer=unsafemeutablerawpointer(mBuffers.mData)
如果让bptr=bufferPointer{
让dataArray=bptr.AssumingMemoryBind(to:Float.self)
var总和:浮动=0.0
var j=自循环
设m=self.size
对于0..=m{j=0}//中的i,将其放入循环缓冲区
总和+=x*x+y*y
}
self.circInIdx=j//循环索引将始终小于大小
如果总和>0.0&&count>0{
设tmp=5.0*(logf(和/浮(计数))+20.0)
设r:Float=0.2
音频电平=r*tmp+(1.0-r)*音频电平
}
}
//这将写入一个文件
osErr=ExtAudioFileWrite(destinationFile!、帧数、inputDataList)
//这将获取音频流并发送到WKWebview以转换为Blob
sendAudioBuffer(缓冲区:数据(字节:bufferPointer!,计数:计数))
}
。。。转换 数据进入一个Blob,然后在HTML5音频标签中将该Blob作为源传递 使用

URL.createObjectURL(新Blob([Blob],{type:{“audio/wav”}})

上一行中的语法错误。正确的语法是:

URL.createObjectURL(new Blob([blob], {type:"audio/wav"}))
另外,如果您的
blob
实际上是一个
base64
字符串,您可以去掉
createObjectURL
,并将HTML5音频标签中
src
属性设置为
数据uri
,例如:

document.querySelector('#my_audio source').src = 'data:audio/wav;base64,' + blob;

希望有帮助。

JavaScript中的
blob
是什么?
音频元素刚刚抛出了一个错误
…请将错误文本添加到您的问题中好吗?
document.querySelector('#my_audio source').src = 'data:audio/wav;base64,' + blob;