我正在从事一个需要使用Web Audio处理音频流的项目。我发现的唯一方法是使用AudioContext.createMediaStreamDestination()和stream属性。
但是,在iOS 11 Safari上,以我尝试过的任何方式都无法播放MediaElementAudioDestinationNode的流。
我已经检查了 流和嵌入轨道的属性,一切看起来都很正常。
我知道问题可能出在苹果方面,但我想检查是否有解决方法。
初始化:
var context = new AudioContext()
// call context.resume() on touch event
function augmentStream(stream){
var src= context.createMediaStreamSource(stream)
var gain=context.createGain()
gain.gain=1
var dst= context.createMediaStreamDestination() <------- !!!
src.connect(gain)
gain.connect(dst)
return dst.stream <------- !!!
}
var rtcOrGumStream=......// rtc Or Gum
var dstStream = augmentStream(rtcOrGumStream)
初始化后:
以下所有情况均适用于android / chrome-on-pc,但不适用于IOS 11野生动物园。
示例1:
var src=context.createMediaStreamSource(dstStream )
src.connect(context.destination)// no sound
示例2:
var audioEl= document.querySelector('audio')
audioEl.srcObject=dstStream
audioEl.play() // no sound
示例3:
var audioEl = document.querySelector('audio')
var ana = context.createAnalyser()
var src=context.createMediaStreamSource(dstStream )
src.connect(ana)
ana.getByteTimeDomainData(dataArray) // always result in zero filled array anytime afterwards in iOS 11 safari
这仅仅是没有任何解决方法的实现错误吗?