视频流上的 TCP 与 UDP

2024-05-05

我刚从网络编程考试回来,他们问我们的问题之一是“如果您要传输视频,您会使用 TCP 还是 UDP?请解释一下存储视频和实时视频流”。对于这个问题,他们只是希望得到一个简短的答案:TCP 用于存储视频,UDP 用于实时视频,但我在回家的路上想到了这一点,使用 UDP 传输实时视频是否一定更好?我的意思是,如果您有足够的带宽,并且您正在直播一场足球比赛或音乐会,您真的需要使用 UDP 吗?

假设当您使用 TCP 流式传输这场音乐会或其他任何内容时,您开始丢失数据包(您和发送者之间的某个网络中发生了一些不好的事情),并且整整一分钟您都没有收到任何数据包。视频流将暂停,一分钟过去后,数据包开始再次通过(IP 为您找到了一条新路由)。然后会发生的情况是 TCP 会在您丢失的那一刻重新传输并继续向您发送实时流。假设带宽高于流的比特率,并且 ping 不太高,因此在很短的时间内,您丢失的一分钟将充当流的缓冲区,这样,如果再次发生丢包,您不会注意到。

现在,我可以想到一些设备,这不是一个好主意,例如视频会议,您可以在其中need始终处于直播的末尾,因为视频聊天期间的延迟实在是太可怕了,但在足球比赛或音乐会期间,如果您落后直播一分钟又有什么关系呢?另外,您可以保证获得所有数据,并且最好保存下来以便以后在没有任何错误的情况下查看。

这让我想到了我的问题。使用 TCP 进行直播有什么我不知道的缺点吗?或者,如果您有足够的带宽,您应该选择 TCP,因为它对网络“更好”(流量控制)?


使用 TCP 进行实时视频的缺点:

  1. 正如您所提到的,TCP 会为每个客户端缓冲未确认的段。在某些情况下,这是不希望的,例如非常流行的实时事件的 TCP 流:在这种情况下,并发客户端列表(和缓冲要求)很大。预先录制的视频广播通常不会有太大问题,因为观众往往会错开重播活动。

  2. TCP 的传送保证是一种阻塞功能,对交互式对话没有帮助。假设您的网络连接中断 15 秒。当我们错过谈话的一部分时,我们自然会要求对方重复(或者如果对方看起来你漏掉了什么,对方会主动重复)。 UDP 并不关心您是否在最后 15 秒内错过了部分对话;它继续工作,就像什么都没发生一样。另一方面,应用程序可以设计为 TCP 重播最后 15 秒(另一端的人可能不希望或不知道这一点)。 TCP 的这种重播会加剧问题,并使与对话中的其他方保持同步变得更加困难。比较 TCP 和 UDP 在丢包时的行为,可以说 UDP 更容易与交互式会话的状态保持同步。

  3. IP组播显着降低大量观众的视频带宽需求;多播需要 UDP(并且与 TCP 不兼容)。注意 - 多播通常仅限于专用网络。请注意,互联网上的多播并不常见。我还要指出,操作多播网络比操作典型的单播网络更复杂。

仅供参考,在描述网络时请不要使用“包”一词。网络发送“数据包”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

视频流上的 TCP 与 UDP 的相关文章

  • 在 Android 和 iOS 上播放的视频/音频编解码器设置是什么

    哪些编解码器设置将生成可在 Android videoView 和 iOS UIWebView 上播放的有效视频 安卓 http developer android com guide appendix media formats html
  • Apache HttpClient TCP Keep-Alive(套接字保持活动)

    我的 http 请求需要太多时间才能被服务器处理 大约 5 分钟 由于连接闲置 5 分钟 代理服务器将关闭连接 我正在尝试在 Apache DefaultHttpClient 中使用 TCP Keep Alive 来使连接长时间处于活动状态
  • iOS:AVPlayer 视频预加载

    我正在使用 AVPlayer 来播放视频 它们的长度很短 2 5秒 它们以随机顺序播放 问题是 当更改视频并开始播放新视频时 设备会滞后很短的时间 但我不希望更改流畅 有没有办法用 AVPlayer 预加载视频 尝试使用AVQueuePla
  • 从实时照片中提取视频部分

    有谁知道如何从实时照片中提取视频部分 我正在开发一个将 Live Photos 转换为 GIF 的应用程序 第一步是从 Live Photo 中获取视频文件 看起来这应该是可能的 因为如果你将手机插入 Mac 你就可以看到单独的图像和视频文
  • HttpRequest 和 XMLHttpRequest 之间的真正区别

    阅读前注意事项 这不是重复的xmlhttprequest 和 httprequest 之间的区别是什么 https stackoverflow com questions 8499062 what are differences betwe
  • 在 Twitter 上上传视频的最佳方式

    我必须从我的 java 应用程序将视频上 传到 Twitter 发布带有视频的推文文本 我使用 twitter4j 上传图像 效果很好 我对上传视频的最佳方式感到困惑 我在这个链接中找到了https github com mrisney t
  • 通过 TCP/.NET SSLStream 发送文件很慢/无法正常工作

    我正在编写一个与 SSL 配合使用的服务器 客户端应用程序 通过SSLStream 它必须做很多事情 不仅仅是文件接收 发送 目前 它的工作原理是 只有一个连接 我总是使用从客户端 服务器发送数据SSLStream WriteLine 并使
  • Html 视频播放器播放声音但不播放视频

    我正在制作网页 并尝试插入视频 视频播放器加载正常 您可以按播放 但只播放音频 而不播放视频 在 Chrome 中预览时 在 firefox 中查看时可以正常工作 我的代码如下
  • 有哪些技术可用于程序化视频编辑?

    Problem 用户应该能够从其系统上运行的应用程序 胖客户端 上传高分辨率视频剪辑 在这个应用程序中 我需要一个能够将视频转换为低分辨率版本的框架或库 另一方面 我需要能够立即从图像构建视频的东西 并以看起来像视频的方式对它们进行动画处理
  • ffmpeg计算视频比特率

    我想知道如何计算该视频的比特率 http jell yfish us media jellyfish 30 mbps hd hevc mkv http jell yfish us media jellyfish 30 mbps hd hev
  • 当我的应用程序最小化时,在 Android 中使用 Youtube API 播放音乐视频中的音频

    我正在开发一个使用 Youtube API 的应用程序 因为我主要集中于MUSIC VIDEOS 来自 Youtube 当我离开应用程序时 我需要在后台播放视频的音频 但每次我导航到另一个应用程序时 视频都会暂停 我该怎么做才能解决这个问题
  • 支持 Kubernetes NodePort 服务的 SSL/TLS

    问题 我需要通过 https 向外部公开 Kubernetes NodePort 服务 设置 我已经在裸机上部署了 Kubernetes 并且已经部署Polyaxon https github com polyaxon polyaxon通过
  • Android,在连接wifi的情况下与移动数据通信,无需上网

    我有一个汽车配套应用程序 需要与 WiFi 和移动数据网络进行通信 我的车辆控制单元提供了一个无需互联网访问的 WiFi 网络 它公开了我们可以从应用程序调用的 API 服务 除此之外 我们还需要使用手机移动数据 3G 4G 与另一个可通过
  • 从应用程序打开无线设置

    我想直接从我的应用程序打开 设置 gt 无线和网络 我怎样才能做到这一点 尝试这个 startActivity new Intent android provider Settings ACTION WIRELESS SETTINGS 或者
  • 从不同进程通过套接字 (UDP) 回复客户端

    我有一个服务器而不是 命令处理程序 进程 它通过 UDP 接收消息 并通过其发布的 API 无论该进程采用何种 IPC 机制 与该进程进行通信 从而将要做的工作委托给不同的进程 我们的系统有多个协作进程 然后 该 API 调用的结果会从命令
  • 如何使用 C# 桌面应用程序以 MPEG 或 AVI 文件录制网络摄像头视频

    我正在开发一个桌面应用程序 它需要我连接到网络摄像头并以 MPEG AVI MP4 和 WMV 格式录制 保存 视频并刻录到 CD DVD 中 该应用程序采用 Win Forms 形式 我只是在寻找免费或开源解决方案或控件 我已经使用 Af
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 为什么我可以在css中将gif设置为背景图片url(),但无法将视频mp4设置为背景url?

    为什么我可以在css中将gif设置为背景图片url 但无法将视频mp4设置为背景url 我尝试了一切 甚至将 url 设置为指向 svg 该 svg 中包含在 src 属性中编码为 base64 的异物视频 但行不通 我不需要 video
  • IPAddress.[Try]Parse 将 192.168 解析为 192.0.0.168

    我有以下场景 IPAddress ip IPAddress TryParse 192 168 out ip if ip null do something with IP 我预计解析会失败 但它被解析为 192 0 0 168 我在这里缺少

随机推荐