2017-12-05 41 views
1

사이의 미스 매치는 내가 producer.rtpParameters.codecs[i].payloadType에서 얻을 (OPUS에 대한) 페이로드 타입 (111),
있다는 하나 개의 I 동안 실제 RTP 패킷을 얻으려면 (Wireshark에서 본)mediasoup - 나는 RTP는 <code>room.createRtpStreamer</code></p> <p>내 문제로 스트림을 전달하는 mediasoup를 사용하기 위해 노력하고있어 PayloadTypes

preferredPayloadType을 설정하려고했지만 아무런 차이가없는 것처럼 보입니다.

참고 : 나는 (최신) FFPlay

내가 크롬 55을 사용하고 있습니다를 사용하여 스트림을 듣고 /보고 mediasoup 수 OPUS 스트림에 대한 페이로드 유형으로 (100)를 하드 경우 2.0.5 (최신)

어떤 도움을 주시면 감사하겠습니다.

답변

1

통화 설정 메시지의 SDP를 살펴보고 OPUS 페이로드에 111 또는 100이 있는지 확인해야합니다. 거기에서 버그가있는 부분 (Chrome 또는 mediasoup)을 결정할 수 있습니다. 통화 설정 메시지 (통화 시작)에서 OPUS 코드의 페이로드를 확인합니다. 착신자는 OPUS를 수락하면 동일한 페이로드 번호로 응답해야하며 두 당사자는 RTP 패킷에서 동일한 페이로드 번호를 사용해야합니다.

0

따라서 페이로드가 producer.rtpParameters.codecs[i].payloadType 인 것은 원래 페이로드 였고 그 페이로드 유형이 room.createRtpStreamer 인 것으로 나타났습니다.

가 발행 Producer 클라이언트 (브라우저)에 의해 결정된 RTP 매개 변수가

// get the payload (type) from the room.rtpCapabilities.codecs.preferredPayloadType for the specific codec 
let payload = this.room.rtpCapabilities.codecs.find((c)=>{ 
    return c.name === producer.rtpParameters.codecs[i].name; 
}).preferredPayloadType; 
2

를 해결하기 위해 아래 일까지 종료되므로 OPUS의 PT는 (크롬에 의해 생성 된 디폴트 값) (111)이다.

mediasoup 서버에서 한번 Consumers에 연결된 Producer은 회의실 작성 중에 제공된 RTP 매개 변수를 사용합니다. 따라서 room = new server.Room(codecs) [1]에 제공된 코덱이 preferredPayloadType 필드 인 경우 Consumers에서 사용됩니다 (그렇지 않으면 서버에서 무작위로 선택 함). 전화 할 때

그래서, room.createRtpStreamer() 당신은 Producer 제공하고, 생성 된 RtpStreamer [2]은 ConsumerPlainRtpTransport 관련 지을 수 있고 있습니다. 따라서 producer 것보다 rtpStreamer.consumer.rtpParameters을 읽어야합니다.

+0

는 I가 RTP 패킷을 전송하기 시작하기 때문에 그 과정에서 너무 늦게 createRtpStreamer 호출 https://mediasoup.org/documentation/mediasoup/api/#RtpStreamer. 내가 원하는 것은 DESCRIBE 단계에 있기 때문에 멈춘 상태에서 스 트리머를 만들고 나중에 시작하는 방법이없는 한 PLAY를 얻을 때만 createRtpStreamer를 호출하려고합니다. – asafrob