我知道我可以使用WebRTC在用户之间从摄像头中流式传输视频,但是虽然Node.js具有以流的形式读取视频的功能,允许流式传输大文件,甚至几个小时长的视频(一个人不能在Node.js上一次读取非常大的视频),但我不确定基于浏览器的JS是否有工具将用户选择的视频读取为流格式用于WebRTC。
这可以做到吗?
发布于 2015-08-01 16:02:27
如果您希望能够在JS中处理mp4,请看一下:
发布于 2015-08-02 07:49:13
是的,这可以在火狐中使用FileReader和HTMLMediaElement.captureStream()来完成
browse.onchange = e => {
var reader = new FileReader();
reader.readAsDataURL(browse.files[0]);
reader.onloadend = e => v1.src = reader.result;
};
var pc1 = new mozRTCPeerConnection(), pc2 = new mozRTCPeerConnection();
var add = (p, can) => can && p.addIceCandidate(can).catch(failed);
pc1.onicecandidate = e => add(pc2, e.candidate);
pc2.onicecandidate = e => add(pc1, e.candidate);
pc2.onaddstream = e => v2.mozSrcObject = e.stream;
function send() {
pc1.addStream(v1.mozCaptureStreamUntilEnded());
pc1.createOffer()
.then(offer => pc1.setLocalDescription(offer))
.then(() => pc2.setRemoteDescription(pc1.localDescription))
.then(() => pc2.createAnswer())
.then(answer => pc2.setLocalDescription(answer))
.then(() => pc1.setRemoteDescription(pc2.localDescription))
.then(() => log("Connected!"))
.catch(failed);
}
var log = msg => div.innerHTML += "<p>" + msg + "</p>";
var failed = e => log(e +", line "+ e.lineNumber);<video id="v1" height="90" width="160" autoplay></video>
<video id="v2" height="90" width="160" autoplay></video><br>
<input type="file" id="browse" accept="video/*"></input>
<button onclick="send()">Send!</button><div id="div"></div>
尝试将this video file保存到您的磁盘中。
这是一个标准跟踪实验特性。如果你喜欢它,可以向你最喜欢的浏览器供应商要!
https://stackoverflow.com/questions/31759565
复制相似问题