14

大多数 Mediastream 示例都是由 webCam-stream 解释的。但我需要从本地视频文件(.webm 或 mp4)创建 MediaStream。请告诉我。

4

1 回答 1

13

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 对等连接,就像我在这个演示/源代码中所做的一样。

于 2014-01-20T06:31:34.703 回答