大多数 Mediastream 的示例都是通过 webCam-stream 进行解释的,但我需要从本地视频文件(.webm 或 mp4)创建 MediaStream。请告诉我如何实现。
大多数 Mediastream 的示例都是通过 webCam-stream 进行解释的,但我需要从本地视频文件(.webm 或 mp4)创建 MediaStream。请告诉我如何实现。
更新于2017年5月4日: captureStream
API现在在Chrome和Firefox上都受支持。
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 演示
MediaSource API在Chrome和Firefox上都受支持;但它不是实时媒体流。
您可以读取文件块;使用任何传输网关(如WebSockets、socket.io或WebRTC数据通道)与其他用户共享它们;然后尽快使用MediaSource API播放这些块,而不必等待完整的文件被共享。
请记住,Chromium和Gecko上的WebRTC实现都支持单个但“活动”的媒体源;这意味着您无法将来自预录制媒体的捕获流用作“实时”媒体源。此外,您不能将虚假的WebAudio流用作“实时”媒体源。
以下代码在Firefox上不起作用:
preRecordedMediaStream = preRecordedMedia.mozCaptureStreamUntilEnded();
peer.addStream(preRecordedMediaStream);
你可以在这里测试演示。
你可以使用FileReader/WebAudio API捕获预先录制好的mp3/ogg文件,并将其作为实时音频源共享到WebRTC对等连接中,就像我在这个演示 / 源代码中所做的那样。