【发布时间】:2020-01-23 18:38:41
【问题描述】:
我正在使用 FFMPEG 和 nodejs 流 Duplex 类从相机创建视频流。
this.ffmpegProcess = spawn('"ffmpeg"', [
'-i', '-',
'-loglevel', 'info',
/**
* MJPEG Stream
*/
'-map', '0:v',
'-c:v', 'mjpeg',
'-thread_type', 'frame', // suggested for performance on StackOverflow.
'-q:v', '20', // force quality of image. 2-31 when 2=best, 31=worst
'-r', '25', // force framerate
'-f', 'mjpeg',
`-`,
], {
shell: true,
detached: false,
});
在本地网络上,我们正在用几台计算机对其进行测试,每件事都非常稳定,延迟最长为 2 秒。
但是,我们已将该服务导入 AWS 生产环境,当我们连接第一台计算机时,我们有大约 2 秒的延迟,但如果另一个客户端连接到流,它们都会开始大量延迟,从而增加延迟到 10 多秒,此外视频非常慢,就像帧之间的运动一样。
现在我问 TCP 还是 UDP 是因为我们使用 TCP 作为流,这意味着发送的每个数据包都实现了 TCP syn-ack-synack 协议和序列。
我的问题是,TCP 真的会导致延迟达到 10 秒且动作非常慢的问题吗?因为在本地网络上它工作得非常好。
【问题讨论】:
-
你的意思是每个数据包都有一个 TCP 连接?