大多数mediastream示例是通过web摄像头 - 流的解释。但是我需要从本地视频(.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)cautrestreamuntilended /demo
仅在Firefox上支持" mozCaptureStreamUntilEnded
"。
2)MediaSource API demo
MediaSource API在Chrome和Firefox上得到支持;但是,这不是实时媒体流。
您能做的就是阅读文件块;使用任何传输网关(例如Websockets,socket.io或WebRTC Datachannels)与其他用户共享它们;然后使用MediaSource API尽快播放这些块,而不是从整个文件中共享这些块。
请记住,WebRTC在Chromium和Gecko上的实现都支持单一但" Live"媒体来源。这意味着您无法使用从预录制的媒体捕获 - 作为实时媒体源。另外,您不能将伪造的Webaudio流作为实时媒体来源。
以下代码将在Firefox上不起作用:
preRecordedMediaStream = preRecordedMedia.mozCaptureStreamUntilEnded();
peer.addStream(preRecordedMediaStream);
您可以在这里测试演示。
更新于:1:06 pm- 2014年7月27日,星期日(UTC)
您可以使用filereader/webaudio api捕获预录制的mp3/ogg文件,并将作为webrtc peer Connections的实时音频源共享,与我在此演示/源代码中相同。