如何从videofile创建MediaStream?

end*_*shi 6 javascript video streaming mediastreamsource webrtc

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

Mua*_*han 9

2017年5月4日更新:captureStreamChrome和Firefox现在都支持API.

var stream_from_WebM_or_Mp4_File = videoTag.captureStream();
var stream_from_Canvas2D         = canvasTag.captureStream(25);
Run Code Online (Sandbox Code Playgroud)

参数"25"是请求的帧速率.

现在,您可以使用RTCPeerConnection API或使用MediaRecorder API记录来共享结果流.

请检查类似的答案:https://stackoverflow.com/a/42929613/552182


两种可能性:

1)captureStreamUntilEnded/Demo

它仅在Firefox上支持为" mozCaptureStreamUntilEnded".

2)MediaSource API 演示

chrome和firefox都支持MediaSource API; 但是,它不是实时媒体流.

你可以做的是读取文件块; 使用任何传输网关(如WebSockets,socket.io或WebRTC数据通道)与其他用户共享; 然后使用MediaSource API尽快播放这些块,而不是等待整个文件共享.


请记住,WebRTC在chrome和gecko上的实现仅支持单个但"实时"的媒体源; 这意味着您无法将预先录制的媒体中的捕获流用作LIVE媒体源.此外,您不能使用假的WebAudio流作为LIVE媒体源.

以下代码不适用于Firefox:

preRecordedMediaStream = preRecordedMedia.mozCaptureStreamUntilEnded();
peer.addStream(preRecordedMediaStream);
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一个演示.


更新时间:下午1:06 - 2014年7月27日(星期日)(UTC)

您可以使用FileReader/WebAudio API捕获预先录制的mp3/ogg文件,并将其作为LIVE音频源共享到WebRTC对等连接,就像我在此演示/源代码中所做的那样.