如何使Node.js在线视频流

时间:2019-02-03 05:19:51

标签: javascript node.js socket.io stream video-streaming

这是我的节点js代码

socket.on('stream',()=>{
        let  readStream = fs.createReadStream(__dirname+'/video.mp4');
        readStream.on('data',(chunk)=>{

           socket.emit('stream-chunk',chunk);
            //res.render("hello");
        });
    });

这是客户端

            let chunkArray = [];
            socket.on('stream-chunk', (chunk) => { 
                    chunkArray.push(chunk);
                    //console.log(chunk);
                    //var url = URL.createObjectURL(chunk);
                    //alert(url);
                    $("#video").attr("src",url);

            });

如您所见,我只想从节点服务器获取视频文件并使用缓冲区流式传输。.到目前为止,大块作为ArrayBuffers到达客户端。但是我不知道如何将传入的数据块用于html5 <video>元素

这是我的客户端html标签

<video controls type="video/mp4" src="" id="video" width="300" height="300"></video>

2 个答案:

答案 0 :(得分:3)

只需使用HTTP整理。无需使用Web套接字进行单向通信。

使用Express静态提供该文件。然后在您的视频代码中,src="path/video.mp4"

答案 1 :(得分:1)

这是我使用NodeJS和FFmpeg来处理HTTP实时流HLS + m3u8即VOD的完整示例示例实现。检查

https://github.com/pluginfactory/HLS-transcoding-nodejs