Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将输入流与nodejs/ffmpeg合并_Javascript_Node.js_Ffmpeg_Video Streaming_Webrtc - Fatal编程技术网

Javascript 将输入流与nodejs/ffmpeg合并

Javascript 将输入流与nodejs/ffmpeg合并,javascript,node.js,ffmpeg,video-streaming,webrtc,Javascript,Node.js,Ffmpeg,Video Streaming,Webrtc,我正在创建一个非常基本的视频网络聊天。在客户端,我将使用一个简单的getUserMediaAPI调用来捕获网络摄像头数据,并将视频数据作为data blob发送到我的服务器 从那里开始,我计划要么使用fluent-ffmpeg库,要么自己生成ffmpeg并将原始数据传输到ffmpeg,这反过来会产生一些魔力,并将其作为HLS流推送到亚马逊AWS服务(例如),然后在网络浏览器上为所有参与视频聊天的人显示 到目前为止,我认为所有这些都应该很容易实现,但我一直在思考这个问题,如何创建一个“组合”或“合

我正在创建一个非常基本的视频网络聊天。在客户端,我将使用一个简单的
getUserMedia
API调用来捕获网络摄像头数据,并将视频数据作为
data blob
发送到我的服务器

从那里开始,我计划要么使用
fluent-ffmpeg
库,要么自己生成
ffmpeg
并将原始数据传输到
ffmpeg
,这反过来会产生一些魔力,并将其作为
HLS
流推送到亚马逊AWS服务(例如),然后在网络浏览器上为所有参与视频聊天的人显示

到目前为止,我认为所有这些都应该很容易实现,但我一直在思考这个问题,如何创建一个“组合”或“合并”的帧和流,因此从服务器到分布式云服务的输出HLS数据只需一个组合数据流即可接收

如果视频聊天中有3个人,我的服务器将从这些客户端接收3个数据流,并将这些数据流(来自各个web cam数据源)组合成一个输出流

如何才能做到这一点? 我可以用
ffmpeg
来“创建”一个新帧吗?如果有人能给我一个机会,我会非常感激,也许我的想法完全错了


我想到的另一个问题是,如果我真的可以“转储”任何数据,我从从
getUserMedia
MultiStreamRecorder
ffmpeg
创建的二进制blob中接收到,或者如果我必须指定某个地方或以某种方式指定使用的确切编解码器等?

在视频会议应用程序中使用hls流时的巨大缺点是延迟。您可以有长达10秒的延迟,这对于实时聊天来说并不理想

您需要的是一个(选择性转发单元),它可以从浏览器->服务器->其他浏览器重定向实时数据。那里的延迟非常低,不需要存储任何东西

有几种技术可以使用,例如janus gateway、kurento media server或jitsi。就我个人而言,我使用的是更具灵活性的

是一个使用mediasoup的简单视频会议项目,可以帮助您开始

如果最终您仍然希望使用HLS进行流式传输,因为查看过去的视频也很方便,那么您仍然可以使用mediasoup将视频发送到服务器,然后再发送到ffmpeg,后者将其直接转换为HLS


下面是一个使用ffmpeg实现录制的示例。在这段代码中,它保存为webm,但通过一些参数调整,您可以将其保存为HLS。(如果你想实现这一点,请给我发一条消息)

听起来你在找一个视频混音器。FFmpeg确实有一些过滤器可以做到这一点,例如。此外,你可能想考虑使用WebRTC来传输你的媒体,而不是使用<代码>数据Bub<代码>,这就是它的目的。然后,您可以使用webrtc Capabable服务器(如jitsi或janus)进行混合或SFU。