这是我的用例:爱丽丝有一个很酷的新媒体曲目,她希望鲍勃收听.她在浏览器中选择媒体文件,媒体文件立即开始在Bob的浏览器中播放.
我现在还不确定是否可以使用WebRTC API进行构建.我可以找到的所有示例都使用通过getUserMedia()获得的流,但这就是我所拥有的:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在接收方面,我有以下内容:
function gotRemoteStream(event) {
var mediaStreamSource = context.createMediaStreamSource(event.stream);
mediaStreamSource.connect(context.destination);
}
Run Code Online (Sandbox Code Playgroud)
此代码不会使媒体(音乐)在接收方播放.但是,在WebRTC握手完成并且调用了gotRemoteStream函数之后,我确实收到了一个已结束的事件.该gotRemoteStream函数被调用的介质不开始播放.
在爱丽丝的一面,神奇的假设发生在说明 …