我正在尝试通过HTTP协议从网络摄像头向FFMPEG发送实时视频流。但是,在发送第一个数据包后,FFMPEG关闭,但确实输出了可完全播放的视频。是我的意图。
仔细阅读该协议的文档后,我认为mulitiple_requests可以阻止此行为,而实际上并没有。在网上搜索了几个小时后,找不到适合我的情况的示例。即通过HTTP接收网络流。
在客户端运行的代码:
var xhttp=new XMLHttpRequest;
if (navigator.mediaDevices) {
var constraints = { audio: true, video: true };
navigator.mediaDevices.getUserMedia(constraints)
.then(function(stream) {
var mediaRecorder = new MediaRecorder(stream);
m = mediaRecorder;
m.start();
m.ondataavailable=e=>{
xhttp.open("POST","http://localhost:8080");
xhttp.send(e.data);
}
setInterval(function(){
m.requestData();
},2000);
}).catch(function(error) {
console.log(error.message);
});
}
到目前为止我尝试过的FFMPEG命令:
ffmpeg -listen 1 -multiple_requests -i http://localhost:8080 file.webm
也许FFMPEG无法做到这一点?如果是这种情况,那么看来唯一的解决方法是将此命令放入循环中,并始终追加到输出中。