如何从视频文件创建MediaStream?

时间:2014-01-20 02:09:03

标签: javascript video streaming webrtc mediastreamsource

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

1 个答案:

答案 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


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

您可以使用FileReader / WebAudio API捕获预先录制的mp3 / ogg文件,并将其作为LIVE音频源共享给WebRTC对等连接,与我在this demo / source code中的操作相同。