iOS 11 Safari,Web Audio,createMediaStreamDestination / MediaElementAudioDestinationNode中的无效流

时间:2018-08-22 07:28:08

标签: mobile-safari web-audio web-audio-api

我正在从事一个需要使用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

这仅仅是没有任何解决方法的实现错误吗?

0 个答案:

没有答案