实时将HTTP流传输到HTML5视频客户端的最佳方法
我真的很想了解使用node.js将ffmpeg实时输出流到HTML5客户端的最佳方法,因为有很多变量在起作用,而且我在这个领域没有很多经验,花了很多小时尝试不同的组合。 我的用例是: 1)IP摄像机RTSP H.264流由FFMPEG采集,并使用节点中的以下FFMPEG设置重新混合到mp4容器中,并输出到STDOUT。这仅在初始客户端连接上运行,因此部分内容请求不会尝试再次产生FFMPEG。 liveFFMPEG = child_process.spawn("ffmpeg", [ "-i", "rtsp://admin:12345@192.168.1.234:554" , "-vcodec", "copy", "-f", "mp4", "-reset_timestamps", "1", "-movflags", "frag_keyframe+empty_moov", "-" // output to stdout ], {detached: false}); 2)我使用节点http服务器捕获STDOUT,并根据客户端请求将其流式传输回客户端。当客户端第一次连接时,我产生了上面的FFMPEG命令行,然后将STDOUT流通过管道传递到HTTP响应。 liveFFMPEG.stdout.pipe(resp); 我还使用了流事件将FFMPEG数据写入HTTP响应,但没有区别 xliveFFMPEG.stdout.on("data",function(data) { resp.write(data); } 我使用以下HTTP标头(在流式传输预先记录的文件时也使用并起作用) var total = 999999999 // fake a large file var partialstart = 0 var partialend …