Hier ist mein Anwendungsfall: Alice hat einen coolen neuen Medientitel, den sie Bob hören möchte. Sie wählt die Mediendatei in ihrem Browser aus und die Mediendatei wird sofort in Bobs Browser abgespielt.Mediendatei mit WebRTC streamen
Ich bin nicht einmal sicher, ob dies jetzt mit WebRTC API erstellt werden kann. Alle Beispiele kann ich Strömen erhalten über getUserMedia() finden, aber das ist, was ich habe:
var context = new AudioContext();
var pc = new RTCPeerConnection(pc_config);
function handleFileSelect(event) {
var file = event.target.files[0];
if (file) {
if (file.type.match('audio*')) {
console.log(file.name);
var reader = new FileReader();
reader.onload = (function(readEvent) {
context.decodeAudioData(readEvent.target.result, function(buffer) {
var source = context.createBufferSource();
var destination = context.createMediaStreamDestination();
source.buffer = buffer;
source.start(0);
source.connect(destination);
pc.addStream(destination.stream);
pc.createOffer(setLocalAndSendMessage);
});
});
reader.readAsArrayBuffer(file);
}
}
}
Auf der Empfangsseite habe ich folgendes:
function gotRemoteStream(event) {
var mediaStreamSource = context.createMediaStreamSource(event.stream);
mediaStreamSource.connect(context.destination);
}
Dieser Code nicht über die Medien machen (Musik) spielen auf der Empfangsseite.
Ich erhalte jedoch ein
beendet Ereignis direkt nach dem WebRTC Handshake erfolgt ist und die
goteRemoteStream Funktion aufgerufen wurde.
Die gotRemoteStream Funktion wird aufgerufen das Medium startet nicht zu spielen.
Auf Alice 'Seite soll die Magie in der Zeile source.connect (Ziel) passieren. Wenn ich diese Zeile durch source.connect (context.destination) ersetzen, beginnen die Medien korrekt durch Alice Lautsprecher zu spielen.
Auf Bobs Seite wird eine Media-Stream-Quelle basierend auf Alices Stream erstellt. Wenn jedoch der lokale Lautsprecher mit mediaStreamSource.connect (context.destination) verbunden ist, beginnt die Musik nicht über die Lautsprecher zu spielen.
Off Natürlich konnte ich immer die Mediendatei über eine Datachannel senden, aber wo ist der Spaß, dass ...
Irgendwelche Hinweise auf das, was mit meinem Code falsch ist oder einige Ideen, wie meine Anwendungsfall zu erreichen, würde sehr geschätzt werden!
Ich benutze die neuesten und besten Chrome Canary.
Danke.
Aufgrund eines Fehlers in meinem Code wurde der empfangene Stream auf Bobs Seite beendet, weil die SDP-Antwort auf Alices Seite nicht korrekt gehandhabt wurde. Nach Behebung des Problems wird das Medium immer noch nicht abgespielt, aber das Beispiel verhält sich anders. Ich habe die Frage entsprechend aktualisiert. – Eelco
es könnte nicht verwandt sein (Ich habe keine Erfahrung mit WebRTC) aber könnte https://github.com/wearefractal/holla Ihnen helfen? – rickyduck