Twilio Programmable Video Room에서 원격 참여자의 오디오 스트림을 조작하기 위해 Web Audio API를 사용하려고합니다.Twilio 프로그래밍 가능한 비디오 - 웹 오디오 API와 통합
당신은 웹 오디오 API와 함께 사용하지만
track.mediaStreamTrack
를 호출하여 하찮게 onTrackAdded 처리기의 각 트랙에 해당하는 MediaStreamTrack에 액세스 할 수 있습니다 - 당신은 그래서 MediaStream에 대한 참조가 있어야합니다 audioContext.createMediaStreamSourceNode(stream)으로 전화 할 수 있습니다. 나의 이해는 MediaStream 객체가 많은 MediaStreamTrack을 포함 할 수 있다는 것이다. (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 컨테이너에 대한 참조입니까?
또는
는 특정 참가자에 해당하는의 MediaStream에 대한 참조를 얻을 수있는 더 Twilio 관용적 방법이 있나요?
안녕하세요 @philnash. 내 사과 - trackAdded 핸들러는 실제로 각 참가자의 trackAdded 이벤트에 등록됩니다. 방의 인수가 필요한 이유는 콜백 중에 방에 대한 액세스 권한이 있으므로 private 속성 인'room._signaling._peerConnectionManager._peerConnections'에 액세스 할 수 있습니다. 위에서 언급 한 것처럼 mediaStreamTrack 속성은 Web Audio API로 작동하려고 할 때 도움이되지 않습니다. AudioContext.createMediaStreamSource (MediaStream)를 호출 할 때 MediaStream에 대한 참조가 필요합니다 (MediaStreamTracks 속성으로 사용함). – thequickbrownfox
아, 미안해! 'MediaStreamTrack'을 사용하여 새로운'MediaStream' 객체를 생성 할 수 있습니다. 'var ms = new MediaStream (track.mediaStreamTrack); 그리고 그런 다음 WebAudio API에서 사용하십시오. – philnash