大多数 Mediastream 示例都是由 webCam-stream 解释的。但我需要从本地视频文件(.webm 或 mp4)创建 MediaStream。请告诉我。
1 回答
2017 年 5 月 4 日更新:captureStream
现在 Chrome 和 Firefox 都支持 API。
var stream_from_WebM_or_Mp4_File = videoTag.captureStream();
var stream_from_Canvas2D = canvasTag.captureStream(25);
参数“25”是请求的帧速率。
现在,您可以使用 RTCPeerConnection API 或使用 MediaRecorder API 记录共享结果流。
请检查类似的答案:https ://stackoverflow.com/a/42929613/552182
有两种可能:
1) captureStreamUntilEnded /演示
它仅在 Firefox 上被支持为“ mozCaptureStreamUntilEnded
”。
2) MediaSource API 演示
chrome 和 firefox 都支持 MediaSource API;但是,它不是实时媒体流。
您可以做的是读取文件块;使用任何传输网关(如 WebSockets、socket.io 或 WebRTC 数据通道)与其他用户共享它们;然后使用 MediaSource API 尽快播放这些块,而不是等待整个文件共享。
请记住,Chromium 和 Gecko 上的 WebRTC 实现目前都支持单一但“实时”的媒体源;这意味着您不能将预先录制的媒体中的捕获流用作 LIVE 媒体源。此外,您不能使用虚假的 WebAudio 流作为 LIVE 媒体源。
以下代码不适用于 Firefox:
preRecordedMediaStream = preRecordedMedia.mozCaptureStreamUntilEnded();
peer.addStream(preRecordedMediaStream);
你可以在这里测试一个演示。
更新时间:下午 1:06 - 2014 年 7 月 27 日星期日(UTC)
您可以使用 FileReader/WebAudio API 捕获预先录制的 mp3/ogg 文件,并作为 LIVE 音频源共享到 WebRTC 对等连接,就像我在这个演示/源代码中所做的一样。