Я полагаю, что вы отправляете один и тот же локальный поток обеим сторонам (сторона-B и сторона-C) в мультисоединении, потому что, если вы попытаетесь создать разные локальные потоки для разных соединений, это выдаст ошибку, поскольку он снова попытается получить доступ к микрофону и камере. что невозможно (я считаю).
Вы должны создавать локальный поток примерно так:
stream = sessionFactory.createLocalMediaStream(LOCAL_MEDIA_ID);
Для отправки потока Party-B на Party-C вы можете сделать это:
- step1-- создайте соединение p2p между стороной-A и стороной-B
- step2-- создайте соединение p2p между стороной-A и стороной-C
шаг 3 - когда вы добавляете локальный поток, вы вызываете что-то вроде этого
peerconnection2.addStream(myStream)
Вместо myStream (для однорангового соединения с C) вы можете добавить remoteStreamB (удаленный поток, который вы получаете от B). Это добавит поток, который вы получаете от B, как локальный поток во втором одноранговом соединении, которое находится с C.
Для отправки удаленного потока от Party-C к Party-B:
- Предположим, у вас есть одноранговое соединение1 с Party-B. Чтобы добавить удаленный поток из C в качестве локального потока, сначала вам придется удалить текущие дорожки, а затем добавить новые дорожки.
для этого вы можете сделать что-то вроде этого
AudioTrack t1 = mystream.audioTracks.get(0);
VideoTrack v1 = myStream.videoTracks.get(0);
if(myStream.removeTrack(t1)){
if(myStream.removeTrack(v1)){
t1 = remoteStreamC.audioTracks.get(0);
v1 = remoteStreamC.videoTracks.get(0);
myStream.addTrack(t1);
myStream.addTrack(v1);
}
}
Таким образом вы измените содержимое локального потока, который вы отправляете на B. Теперь этот поток будет иметь аудио- и видеодорожки, поступающие с удаленного потока C.
Но чтобы сделать этот процесс безошибочным, вам придется использовать обработку ошибок, потому что, когда кто-то разрывает соединение (либо B, либо C), вы будете получать нулевые треки.... В этом случае вам придется немедленно отправить запрос на отбой на другая сторона тоже.
person
Alex Morrison
schedule
24.09.2016