大多数Mediastream示例都是webCam-stream的解释。但我需要从本地视频文件(.webm或mp4)创建MediaStream。请告诉我。
答案 0 :(得分:9)
2017年5月4日更新:现在,Chrome和Firefox都支持captureStream
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 / Demo
仅在Firefox上支持“ mozCaptureStreamUntilEnded
”。
2)MediaSource API Demo
chrome和firefox都支持MediaSource API;但是,它不是实时媒体流。
你可以做的是读取文件块;使用WebSockets,socket.io或WebRTC数据通道等任何传输网关与其他用户共享;然后使用MediaSource API尽快播放这些块,而不是等待整个文件共享。
请记住,关于chrome和gecko的WebRTC实现目前支持单个但“实时”的媒体源;这意味着您无法使用预先录制的媒体作为LIVE媒体源的捕获流。此外,您不能使用假的WebAudio流作为LIVE媒体源。
以下代码不适用于Firefox:
preRecordedMediaStream = preRecordedMedia.mozCaptureStreamUntilEnded();
peer.addStream(preRecordedMediaStream);
您可以测试演示here。
您可以使用FileReader / WebAudio API捕获预先录制的mp3 / ogg文件,并将其作为LIVE音频源共享给WebRTC对等连接,与我在this demo / source code中的操作相同。