媒体传输协议之TCP与UDP

网络端口(包括TCP端口和UDP端口)的作用、定义、分类,以及在视频监控和流媒体通信中的定义 在TCP/IP协议中,端口号是一个16位的整数,用于标识网络应用。端口号的主要作用是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层的哪个进程。网络端口号有很多个,多个服务器的端口可以相同,TCP端口、udp端口相互独立。网络视频监控和流媒体通信中经常会用到不同的网络端口。在视频通信中,有时候会出现端口被用完的情况,这种情况下,就需要进行多个服务器的并发处理。 阅读详情

流媒体传输协议之TCP与UDP

一、TCP

  TCP是面向连接(连接导向) 的、可靠的、基于字节流的。局域网中使用TCP传输流比较靠谱,TCP在复杂互联网环境应用性比较窄,目前都采用码流自适应来解决网络质量等外在因素对流传输的影响。安防行业的网络摄像头(IPC)、DVR等设备一般会为一个通道提供多种码流,可配置不同是分辨率、码率、帧率来适应不同的网络带宽环境。RTP/RTSP、HLS均可基于TCP来传输码流,TCP传输流媒体一般用于网络环境较好的场景。

 

二、UDP

  UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,提供面向事务的简单不可靠信息传送服务。在网络质量令人不十分满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。如果选择UDP传输流媒体,就必须得接受丢包乱序的问题,当然我们也可以在UDP上建立包序号检查和超时重传机制,满足场景需要就行,如果这些机制做的过于严苛还不如直接用TCP来传输了。数字电视行业的转码器(例如envivio/思科)基本都是基于UDP传输TS封装的码流,可提供不同码率的码流,采集到转码器的流以后需要自行解复用,选择适应客户端网络传输的码流播放。

UDP丢包乱序问题分析:

UDP在局域网丢包不明显,在公网环境中丢包很普遍。UDP是无连接的传输协议,与TCP相比,会存在丢包和乱序的问题。

1.发送数据包太大或者太频繁

  通过控制报文大小来解决报文过大导致丢包,以太网的MTU通常是1500 bytes,所以最好控制发送报文长度在1000左右,可根据环境适当斟酌。

  如果要发送的数据过多或者过大,那么在缓冲区满的那个瞬间要发送的报文就很有可能被丢失。

  修改缓冲区大小可以适当缓解丢包;在每个报文都加上报文编号,以报文编号判断丢包和乱序,RTP包头有sequence number、TS包头有continuity_counter,如果传输的数据没有明确的包序列号,可自定义报文包头,出现丢包后可向对端发送重传消息。UDP的丢包和乱序是确确实实存在的,只能通过自行定义协议做类TCP的重传机制和超时机制。

2.接收方处理时间太长,接收来不及

  重构数据接收和处理逻辑,不能让接收数据由于应用层的事务阻塞,接收数据模块和处理模块应该是异步的构建,共同维护一个数据队列,确保数据及时获取和处理。

 

三、工具介绍

  VLC media player是做流媒体开发必不可少的工具,可做HLS、RTSP、UDP等常见协议的网络播放和本地播放,亦可做流媒体推流服务器,将本地文件转码后推送到指定的网络地址。

 

四、场景介绍

下面就介绍下曾经做过的两种流媒体传输模式:

1.对接某国外安防监控品牌的DVR设备,RTCP over TCP用作设备管理控制命令协议,RTSP over TCP作为流传输控制命令协议, RTP封装H.264 over TCP作为流传输协议。 

  设备端RTCP端口号一般为555,连接该端口,并进行登录设备、获取设备信息、注册权限验证、心跳机制;

  设备端RTSP端口号一般为554,连接该端口,并进行DESCRIBE、OPTIONS、SETUP、PLAY、PAUSE、TEARDOWN等流传输控制命令;

  设备端RTP端口号一般为556,连接该端口,接收RTP协议的码流数据传输。

  当时的功能需求是登录设备、获取信息、直播通道码流、按时间回放通道的录像以及暂停、开始、拖拽、停止等控制方式,就直接用非阻塞socket的select模式做超时机制实现了RTCP/RTSP/RTP,当然也可引入jrtp这个开源库来实现。

 

2.面向广电运营商的流媒体服务器,转码器向网内组播多个频道多种码率的流数据TS Over UDP,从而需要采集这个多路复用的流,并按不同节目不同码率转发出去。

  bind组播端口5842,加入组播,采集UDP数据,解复用,按照不同的program_map_PID(节目PID)解析不同的elementary_PID(音视频PID)。具体解析方法参照另一篇文章TS格式解析。然后按照HLS协议封装playlist.m3u8和多个ts文件切片,达到码流自适应。具体封装方法参照另一篇文章HTTP Live Streaming协议。

流媒体——RTP 基于UDP和TCP协议传输数据——初探 1、RTP over RTSP(TCP,RTP包通过使用TCP来传输)优势: UDP协议上的RTSP/RTP需要打开许多UDP端口,一个端口用于RTSP通信,n个端口用于RTP,n个端口用于RTCP 中间网络路由器很容易就过滤或者忽略掉UDP数据包 UDP是不可靠传输协议,媒体包在因特网上传输时会面临着丢包 2、RTP over RTSP(TCP) 与 RTP over RTSP(UDP) RTP包头差异: rtp基于tcp的包头比基于udp的包头多了4个字节: magic固定为0x24... 阅读详情

相关推荐

快手did did_gt edid的注册过程

接口 https://gdfp.ksapisrv.com/rest/infra/gdfp/report/kuaishou/android did 是本地生成的16进制 或者 获取的 android_id did_gt 是did生成时间戳 1595073601970 public static final Random f16237a = new Random(System.currentTimeMillis()); public static long m19668a() {  &n

HURUWO的技术博客 1万+

TCP与UDP协议有何区别?在LiteCVR中应该选择哪种方式?

通过比较TCP和UDP的差异,我们可以根据实际需求选择合适的协议。如果需要可靠性和顺序性传输的场景,选择TCP;而对于要求传输效率和实时性的场景,则可以选择UDP。

LiteMedia/cn 1092

去面试游戏测试工程师,面试官看着我的简历呆住了

!我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

MXB1220的博客 7327

TCP和UDP协议解析以及在视频监控领域的应用

TCP(传输控制协议)和UDP(用户数据报协议)是两种重要的网络协议,分别属于OSI模型的传输层。TCP是面向连接的、可靠的协议,适用于需要确保数据完整性和顺序性的场景,如视频监控中的录像存储,但可能带来延迟。UDP则是无连接的协议,传输效率高、延迟低,适用于实时性要求高的视频监控应用,如直播和视频会议,但可靠性较低可能会丢包。在视频监控平台中,选择TCP还是UDP协议取决于对实时性和数据可靠性的权衡。实际应用中,平台可能根据具体监控需求和网络环境,在TCP和UDP协议之间灵活切换,以确保最佳监控效果。

weixin_70208651的博客 2164

【科研学习】Demo3D2015安装包以及图文安装步骤

安装包 点击下图的.exe文件,安装 不需要解压,打开注册机 如下图: 点击上图的.exe文件,出现下图 先点击 patch 打开安装目录下的Demo3D.licensing.dll文件,然后点击Generate,生成dvt-license文件,保存即可 打开安装完成的Demo3D 2015(64-bit),一般破解没完成的,会出现一个request a license 的问题,点击find license 的那一行 点击后找到自己Generate,生成dvt

KaelCui的博客 1万+

工业仪表读数识别:YOLO目标检测 + OCR混合方案实战

仪表整体(meter):粗定位整只仪表,用于快速裁剪、排除背景干扰表盘区域(dial):精确的圆形/方形表盘区域,用于后续矫正和读数数字区域(display)/指针(pointer):数显表定位数码管区域,指针表可辅助定位指针为什么要分三级?因为现场仪表安装角度、距离、光照差异极大。先粗检再精检,比一步到位的准确率高很多,也方便后续做透视变换。工业仪表读数识别,技术路线的选择比算法精度更重要。选对了路线,事半功倍;选错了,怎么调都达不到验收标准。几条落地建议:指针表优先传统算法。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 95

使用国标流媒体服务器查看监控摄像头视频流如何正确使用UDP及TCP协议?

用过国标流媒体服务器的朋友们应该都知道,GB28181协议是由公安部提出来的,能够对接公安部的网络系统,给安防带来了很大的便利性,我们的国标流媒体服务器就支持集成接入自己的平台,也能够对视频进行录像。 使用国标流媒体服务器会有很多二次开发的可能,因为我们会提供丰富的二次开发接口。近期也有不少用户用https接入国标流媒体服务器,是一种十分实用的视频监控网页直播。 有位开发者为了进行测试,在...

EasyGBS的博客 7200

华为OD机试 - 商品推荐多属性排序 - 数组(Python/JS/C/C++ 双机位A卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。双十一来临,小王准备买某个购物平台买坚果。在输入坚果时,页面默认按照综合推荐列表。小王想知道这个综合排序时如何完成的,于是便开始思考算法题。经过一番操作后,完成它的多个关键词排序算法。希望你给小王提供一份正确的排序结果,验证其实现算法结果的准确性

学Java,找哪吒 622

LiveGBS流媒体平台GB/T28181功能-支持UDP、TCP被动、TCP主动模式流传输模式之间有什么区别?

早期的国标设备基本是通过UDP进行视频传输,那是摄像头的分辨率码流还比较小,UDP传输过程中不会有太多的丢包。随着硬件的分辨率和视频质量的提升,UDP在传输过程的产生的丢包问题,日益严重。在项目建设过程,如果摄像头是支持TCP流传输的,这边也建议尽量使用TCP流传输。设备端告知服务端监听的TCP端口情况,服务端主动向设备拉流,此种场景较少,且设备所在网络可以被服务所在网络访问。服务端监听TCP端口,通过信令服务告知设备端口,设备主动向服务端发起流传输(国标设备编辑,可以编辑,流传输模式。

青柿视频流媒体的博客 2286

FTU电科院检测学习笔记-规划

如果写到最后,还非常的有动力和兴趣,可能会举出一些特定的例子来,但不保证一定是这样。

sixtome 1097

QGis二次开发 —— 5.2、基于qgis搭建离线地图服务并开发雷达扫描、无人机飞行跟踪等(附:源码及工程)

QGis二次开发 —— 5.2、基于qgis搭建离线地图服务并开发雷达扫描、无人机飞行跟踪等(附:源码及工程)

221

流媒体传输协议之TCP与UDP

一、TCP TCP是面向连接(连接导向) 的、可靠的、基于字节流的。局域网中使用TCP传输流比较靠谱,TCP在复杂互联网环境应用性比较窄,目前都采用码流自适应来解决网络质量等外在因素对流传输的影响。安防行业的网络摄像头(IPC)、DVR等设备一般会为一个通道提供多种码流,可配置不同是分辨率、码率、帧率来适应不同的网络带宽环境。RTP/RTSP、HLS均可基于TCP来传输码流,TCP传输流媒体...

weixin_30597269的博客 1106

【电源专题】案例:对比不同电池在不同电流下的电池放电曲线

无

一点硬件 2840

ZLMediaKit流媒体传输协议终极指南:如何选择TCP与UDP实现最佳播放体验

想要构建稳定流畅的流媒体服务,却不知道如何选择合适的传输协议?作为一款基于C++11的高性能运营级流媒体服务框架,ZLMediaKit支持RTSP、RTMP、HLS、HTTP-FLV、WebSocket-FLV、HTTP-TS、WebSocket-TS、HTTP-fMP4、WebSocket-fMP4、MP4、WebRTC、GB28181、SRT等多种协议,但核心的传输协议选择却让许多开发者感到困

gitblog_00248的博客 1040

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ZLMediaKit流媒体服务器终极指南:TCP与UDP传输协议完全解析

你是否在搭建流媒体服务时,面对TCP和UDP协议选择感到困惑?不知道哪种协议更适合你的视频直播场景?作为一款基于C++11的高性能流媒体服务器框架,ZLMediaKit支持RTSP、RTMP、HLS、HTTP-FLV等多种协议,而传输层的TCP与UDP选择直接影响着你的流媒体服务质量。本文将为你提供一份完整的协议选择攻略,帮助你在不同网络环境下做出最佳决策。 ## 为什么传输协议选择如此重要?

gitblog_00903的博客 371

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

rstp协议tcp_RTSP流媒体数据传输的两种方式(TCP和UDP)

通常情况下rtsp协议中数据传输的实现是UDP,因工作需要,想让rtsp的数据传输部分用TCP实现。DarwinStreamingServer服务器能自适应客户端发起的数据传输请求是用TCP方式,还是用UDP方式,这里唯一需要解决的是客户端协议的发起问题,而vlc支持RTSP over TCP的方式。剩下的问题就好办了,让vlc以TCP的方式发起连接即可。DSS的安装配置我就不介绍了,不懂的朋友网...

weixin_36087045的博客 1795

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ZLMediaKit流媒体服务器:TCP与UDP传输协议优化全攻略

作为一款高性能的流媒体服务器框架,ZLMediaKit支持多种传输协议,其中TCP和UDP的选择直接影响视频播放的流畅度和延迟体验。本文为你提供全面的传输协议优化指南,帮助你在不同场景下做出最佳选择,实现流畅稳定的视频传输。 ## 理解传输协议的核心差异 TCP和UDP是网络传输的两种基本方式,它们在数据传输机制上有着本质区别。TCP提供可靠的连接,确保数据完整到达,但会增加延迟;UDP则追求

gitblog_00021的博客 947

ZLMediaKit传输协议终极指南:如何选择TCP与UDP实现最佳流媒体体验

你是否在使用ZLMediaKit构建流媒体服务时,面对TCP和UDP两种传输协议感到困惑?不知道在什么场景下应该选择哪种协议?本文将为你提供一份完整的协议选择指南,帮助你根据具体需求做出明智决策,打造流畅稳定的视频流服务。作为一款基于C++11的高性能运营级流媒体服务框架,ZLMediaKit支持RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/WebSoc

gitblog_00031的博客 388

流媒体传输协议浅析(一)

一、常见的流媒体协议 关于流媒体传输协议,涉及到不同领域,不同业务场景,种类众多,下面一张图是目前常见的流媒体协议。 常见的流媒体传输协议 1)从交互方式来看,流媒体分为点播(VOD)和直播(LIVE) 直播(LIVE):HLS,RTMP,http+MP4,http+flv,RTP+RTSP 点播(VOD):http+MP4,http+flv,HLS,DASH. 2)从业务场景...

江海细流的专栏 2884

RTSP流媒体数据传输的两种方式(TCP和UDP)

RTP(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作。其目的是提供时间信息和实现流同步。但RTP通常使用UDP来传送数据。但RTP也可以在TCP或ATM等其他协议之上工作。当应用程序开始一个RTP会话时将使用两个端口:一个给RTP一个给 RTCP。RTP本身并不能为接顺序传送数据包提...

qq_28090573的博客 3848

GB28181协议--流媒体的几种传输方式(UDP、TCP被动、TCP主动模式)

主要介绍GB28181三种流传输方式。

积木的笔记 1万+

ZLMediaKit流媒体传输协议终极指南:TCP与UDP的实战选择策略

在构建流媒体服务时,你是否曾为选择TCP还是UDP协议而犹豫不决?面对复杂的网络环境和多样化的业务需求,如何为你的ZLMediaKit项目做出最佳传输协议决策?本文将为你提供一套完整的实战指南,帮助你根据具体场景精准选择传输方案。 [![ZLMediaKit流媒体框架标志](https://raw.gitcode.com/GitHub_Trending/zl/ZLMediaKit/raw/5f1

gitblog_00307的博客 297

GB28181-2016中的媒体流传输模式分析

在GB28181的2016版中,对于媒体流的传输在原有UDP传输的基础中,增加了主动tcp和被动tcp的方式。 1.UDP的传输 这个是普遍的传输方式,GB28181服务端在发invite时,在携带的SDP中包含了接收媒体的端口,设备端(被呼叫端)收到invite后,解析该端口,通过UDP将媒体流发向该端口。 2.TCP被动 GB28181服务端在发invi...

wangjie_jack的专栏 1458

视频的传输方式【转】

视频的传输方式【转】概述1.流媒体2.TCP/IP、OSI与视频传输协议之间的关系3.组播、单播和广播4.视频传输协议5.自适应流媒体 概述 搜索“视频传输协议”,一般会搜出来RTP,RTSP,UDP等等。光看这些协议,可能有些人会觉得奇怪为什么要把udp也往上放一起,rtp不是可以基于udp?!同时,很多文章主要去讲解各个协议之间的差异,而没有从更为宏观的角度来考虑。本文将结合OSI的分层思路,...

megary的博客 2万+

udp传输协议

UDP 是什么? UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。 UDP协议全称是用户数据报协议[1] ,在网络中它与T...

努力发光呀 892

(二)网络传输协议:网络摄像机传输协议、流媒体传输协议

简介 本来我要做C#d打开一个USB摄像头的程序,后来发现,我应该先了解“视频传输”这个概念。所以,我的调研如下: 那么好,我将在下章中,继续讨论C#d打开一个USB摄像头的程序。本章节后面分析了一下网络协议。 摄像的诸多问题与回答,参考:https://iask.sina.com.cn/key/59bc2d3684aee545090ef...

xpj8888的博客 7914
上一篇: 最长回文子串
下一篇: Java字节序
程序员2
博客等级 码龄15年 6粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值