【发布时间】:2017-05-10 00:36:37
【问题描述】:
我正在尝试使用 Web 音频 API 来操纵 Twilio 可编程视频室中远程参与者的音频流。
您可以通过调用 track.mediaStreamTrack 轻松访问与 onTrackAdded 处理程序中的每个 Track 对应的 MediaStreamTrack
但是,如果要将其与 Web 音频 API 一起使用 - 您必须引用 MediaStream,以便您可以调用 audioContext.createMediaStreamSourceNode(stream)。我的理解是一个 MediaStream 对象可以包含许多 MediaStreamTracks。 (使其更类似于 Twilio 抽象中的参与者对象)。
我通过使用 twilio 客户端提供的房间构造的私有属性找到了解决此问题的方法,但它非常难看:
function trackAdded(track, room) {
// Check if it is an audio node
if (track.kind.toLowerCase() === 'audio') {
// Find the relevant pc to get the stream from
var remotePC;
room.room._signaling._peerConnectionManager._peerConnections.forEach(function(pc) {
var remoteStream = pc.getRemoteStreams()[0]
if (remoteStream.getAudioTracks()[0] === track.mediaStreamTrack) {
// This is the pc we are interested in
console.log('found PC to connect to audio API');
remotePC = pc;
}
})
var origin = context.createMediaStreamSource(remotePC.getRemoteStreams()[0]);
origin.connect(<Chain of filter Nodes>)
}
我想我的问题是,有没有办法在 JS 中获取对 MediaStreamTrack 的 MediaStream 容器的引用?
或
是否有更符合 Twilio 习惯的方式来获取对对应于特定参与者的 MediaStream 的引用?
【问题讨论】:
标签: video webrtc twilio web-audio-api