Я хочу отправить два видеопотока (один видеопоток и один поток, захваченный из HTML-элемента canvas) с использованием только одного RTCPeerConnection.
То, что я пытался сделать, это добавить обе дорожки к объекту соединения с равноправным узлом, прежде чем делать предложение, но он не работает в Firefox (он работает в Chrome). Событие peerConnection.ontrack происходит только один раз, при этом первая дорожка добавляется к объекту однорангового соединения (хотя есть два потока).
Я читал о пересмотре, но в настоящее время я добавляю обе дорожки в одноранговое соединение перед отправкой предложения, поэтому я не знаю, нужно ли мне пересматривать. Мне нужно?
Я также слышал о проблеме совместимости в многопоточности между Firefox (Unified Plan) и Chrome (Plan B), поэтому, пожалуйста, посоветуйте мне, какой подход я должен использовать сейчас.
Я использую адаптер.js.
Добавить код (на самом деле JavaScript):
function createPeerConnection() {
peerConnection = new RTCPeerConnection(iceServers);
peerConnection.onicecandidate = (event) => {
if (event.candidate) {
// send to server
}
};
videoStream.getTracks().forEach(track => peerConnection.addTrack(track, videoStream));
canvasStream.getTracks().forEach(track => peerConnection.addTrack(track, canvasStream));
}
Вот так я создаю RTCPeerConnection и добавляю треки. После того, как эта часть создает предложение и отправляет его на сервер сигнализации ... Все работает хорошо, просто другой конец получает только первый добавленный трек (в Firefox). Если вам нужны эти биты, я добавлю их.
Это обработчик события ontrack.
peerConnection.ontrack = (event) => {
console.log(event); //only prints the first track in Firefox, but prints both tracks in Chrome
};