2017-05-10 1 views
0

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 관용적 방법이 있나요?

답변

0

여기에 Twilio 개발자 전도사가 있습니다.

방에서 trackAdded 이벤트를 듣기보다는 trackAdded for each participant을들을 수 있습니다. 그렇게하면 트랙과 참가자를 더 쉽게 연결할 수 있습니다. 너는 participantConnected event on a room을 경청해서 방에 들어갈 때 각 참가자를 붙잡을 수있다.

trackAdded 이벤트가 발생하면 Track object and get the underlying MediaStreamTrack by using the mediaStreamTrack property을 사용할 수 있습니다.

+0

안녕하세요 @philnash. 내 사과 - trackAdded 핸들러는 실제로 각 참가자의 trackAdded 이벤트에 등록됩니다. 방의 인수가 필요한 이유는 콜백 중에 방에 대한 액세스 권한이 있으므로 private 속성 인'room._signaling._peerConnectionManager._peerConnections'에 액세스 할 수 있습니다. 위에서 언급 한 것처럼 mediaStreamTrack 속성은 Web Audio API로 작동하려고 할 때 도움이되지 않습니다. AudioContext.createMediaStreamSource (MediaStream)를 호출 할 때 MediaStream에 대한 참조가 필요합니다 (MediaStreamTracks 속성으로 사용함). – thequickbrownfox

+0

아, 미안해! 'MediaStreamTrack'을 사용하여 새로운'MediaStream' 객체를 생성 할 수 있습니다. 'var ms = new MediaStream (track.mediaStreamTrack); 그리고 그런 다음 WebAudio API에서 사용하십시오. – philnash

관련 문제