Ecco il mio caso d'uso: Alice ha una nuova fantastica traccia multimediale che desidera ascoltare con Bob. Seleziona il file multimediale nel suo browser e il file multimediale inizia immediatamente a giocare nel browser di Bob.Stream media file utilizzando WebRTC
Non sono nemmeno sicuro che sia possibile creare ora utilizzando l'API WebRTC. Tutti gli esempi che posso trovare flussi uso ottenute tramite getUserMedia(), ma questo è quello che ho:
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);
}
}
}
Sul lato ricevente che ho il seguente:
function gotRemoteStream(event) {
var mediaStreamSource = context.createMediaStreamSource(event.stream);
mediaStreamSource.connect(context.destination);
}
Questo codice non fa i mezzi di comunicazione (musica) gioca dal lato ricevente.
Tuttavia, ricevo un evento
terminato subito dopo l'handshake WebRTC e la funzione
getRemoteStream è stata richiamata.
La funzione gotRemoteStream viene chiamata il supporto non viene avviato.
Da parte di Alice la magia deve accadere nella riga che dice source.connect (destination). Quando sostituisco la riga con source.connect (context.destination), il supporto inizia a essere riprodotto correttamente attraverso gli altoparlanti di Alice.
Sul lato di Bob viene creata un'origine del flusso multimediale basata sullo streaming di Alice. Tuttavia, quando l'altoparlante locale viene collegato utilizzando mediaStreamSource.connect (context.destination), la musica non inizia a riprodurre attraverso gli altoparlanti.
Fuori rotta ho sempre potuto inviare il file media attraverso un DataChannel ma dov'è il divertimento in questo ...
Degli indizi su ciò che è sbagliato con il mio codice o alcune idee su come raggiungere il mio caso d'uso sarebbe essere molto apprezzato!
Sto utilizzando l'ultimo e più grande Chrome Canary.
Grazie.
A causa di un errore nel mio codice, lo stream ricevuto sul lato di Bob è stato terminato perché la risposta SDP sul lato di Alice non è stata eseguita correttamente. Dopo aver risolto il problema, il supporto non viene riprodotto ma l'esempio si comporta diversamente. Ho aggiornato la domanda di conseguenza. – Eelco
potrebbe non essere correlato (non ho esperienza con webRTC) ma https://github.com/wearefractal/holla potrebbe aiutarti? – rickyduck