rtp协议

【视频开发】ONVIF、RTSP/RTP、FFMPEG的开发实录

笑着哭i 提交于 2020-03-29 14:01:59
ONVIF、RTSP/RTP、FFMPEG的开发实录 前言 本文从零基础一步步实现ONVIF协议、RTSP/RTP协议获取IPC实时视频流、FFMPEG解码。开发环境为WIN7 32位 + VS2010。 最终成功获取浩云、海康、大华的IPC实时视频流。 如果要了解本文更多细节,或者用本文作设计指导,那最好把文中提到的连接都打开,与本文对照着看。 前期准备 1.准备一个ONVIF服务器 既然开发的是客户端,那必需要有服务端了。我这里大把的IPC,好几个品牌的,就随便拿了一个。 如果没有IPC,倒是可以用 VLC media player 搭建一下。或者其他播放器也可以。这个网上很多资料。 2.准备一个ONVIF 测试工具 这个工具在ONVIF的官网上可以找到:ONVIF Device Test Tool 。 3.准备解码器相关资料及资源 收到视频流后,需要解码。可以用ffmpeg,也可以用其他解码库。这个是后话了,等ONVIF搞定之后再搞解码也不迟。推荐链接: http://wenku.baidu.com/view/f8c94355c281e53a5802ffe4.html?re=view (Windows下使用MinGW编译ffmpeg与x265) 4.准备资料 ONVIF协议书必看,ONVIF官网自然是不能少的。其他资料推荐几个链接: http://www.cuplayer

[RK1108][Linux3.1]学习笔记 - 流媒体传输协议

余生颓废 提交于 2020-03-04 22:10:02
平台 内核版本 RK1108 Linux3.1 文章目录 流媒体服务器架构 RTSP协议 RTSP 消息 请求消息 应答消息 交互流程 RTP协议 RTP 包头格式 H.264 编码技术 RTCP协议 接收者报告 源描述包(SDES) 流媒体服务器架构 在网络带宽上传输实时的视音频流媒体数据时要求传输实时性必须远高于传输可靠性。但是,由于互联网络并不是完全的等时系统,在数据包传送的过程中可能会出现延迟、抖动或不按顺序到达的情况,这就需要在传输层之上添加额外的流媒体传输及控制协议来解决这些问题。于是 IETF 提出了 RTSP 和 RTP `RTCP 等一系列新的协议来满足实时数据的传输要求。根据这些协议的功能特点,可将它们分为数据传输协议和控制协议两部分。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200304111631647.png) 在实际的 VLC`画面中各协议: RTSP 协议标准化了客户端与服务器的信令和信息交互; RTP 协议则完成了组合、分片或直接封装已编码压缩的视频数据的工作,并将之交予底层网络发送至客户端; RTCP 协议负责统计和发送数据包接收情况,辅助客户端、服务器和第三方监控系统即时应对网络拥塞,控制网络流量,提高服务质量。 网络摄像机首先采集摄像头中的视频数据,然后按帧对其进行 H.264 软件编码,最后交由

RTP、RTCP及媒体流同步

我是研究僧i 提交于 2020-02-28 20:37:37
转自:http://blog.163.com/liu_nongfu/blog/static/19079414220139169225333/ 一、流媒体简介   流媒体是指在internet中使用流媒体技术的连续时基媒体,例如视频、音频或多媒体文件。流式传输方式是将音视频、动画等多媒体文件经过压缩后分成一个个小数据包,当用户端发出请求时,由服务器端向用户端实时、连续传送这些小数据包,动态变化的网络可能使各个包选择不同的路由,故到达用户端的时间延迟也就不同。在用户端用播放器播放时,需要为接收数据开辟缓存区,以弥补时延和时延抖动的影响和保证数据包传输顺序的正确,经解压缩后,只需要在缓冲区充满前等待几秒钟,就可以连续观看。而同时,后续数据包继续在后台从服务器端以稳定的速率向客户端发送,不影响前台播放。所以从理论上讲,播放前的延时主要是由于播放器接收、处理前几个数据包引起的,一旦播放就能够保证连续性和稳定性。流式传输的实现不仅需要高效的压缩算法和缓存,而且需要合适的传输协议。由于tcp需要较多的开销,不太适合传输实时数据。在流式传输的实现方案中,一般采用http/tcp来传输控制信息,而用RTP/UDP来传输实时视音频数据。实现流式传输一般都需要专用的媒体服务器和媒体播放器。 二、流媒体传输的网络协议:RTP与RTCP介绍 1.实时传输协议RTP( Real-time Transport

rtp,rtsp,rtcp的区别

我只是一个虾纸丫 提交于 2020-01-19 22:57:40
RTP(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作。其目的是提供时间信息和实现流同步。但RTP通常使用UDP来传送数据。但RTP也可以在TCP或ATM等其他协议之上工作。当应用程序开始一个RTP会话时将使用两个端口:一个给RTP一个给 RTCP。RTP本身并不能为接顺序传送数据包提供可靠的传送机制。也不提供流量控制或拥塞控制。它依靠RTCP提供这些服务。通常RTP算法并不作为一个独立的网络层来实现。而是作为应用程序代码的一部分。实时传送控制协议RTCP. RTCP(Real-time Transport Control Protocol)和RTP提供流量控制和拥塞控制。在RTP会话期间,各参与者周期性地传送RTCP包.RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料.因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化。因而特别适合传送网上的实时数据。 RTSP实时流协议RTSP(Real-time Streaming Protocol)是由Real Networks和Netscape共同中提出的。该协议定义了一对多应用程序如何有效地通过lP网络传送多媒体数据

TCP、UDP、RTP(RTCP)异同与区别

独自空忆成欢 提交于 2020-01-19 01:00:30
OSI七层模型 OSI 中的层 功能 TCP/IP协议族 应 用层 文件传输,电子邮件,文件服务,虚拟终 端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 数据格式化,代码转换,数据加密 没有协议 会话 层 解除或建立与别的接点的联系 没有协议 传输层 提供端对端的接口 TCP,UDP (RTP) 网 络层 为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP 数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU 物 理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2 ************************************************************************************************************************************ TCP/IP五层模型的协议 应用层 传输层:四层交换机、也有工作在四层的路由器 网络层:路由器、三层交换机 数据链路层:网桥(现已很少使用)、以太网交换机(二层交换机)、网卡(其实网卡是一半工作在物理层、一半工作在数据链路层) 物理层:中继器、集线器、还有我们通常说的双绞线也工作在物理层 ****************

SDP协议介绍

↘锁芯ラ 提交于 2020-01-19 00:59:01
一、SDP协议介绍 SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、 实时流协议(RTSP)、 MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议是也是基于文本的协议,这样就能保证协议的可扩展性比较强,这样就使其具有广泛的应用范围。SDP 不支持会话内容或媒体编码的协商,所以在流媒体中只用来描述媒体信息。媒体协商这一块要用 RTSP 来实现. 二、SDP协议格式 SDP描述由许多文本行组成,文本行的格式为<类型>=<值>,<类型>是一个字母,<值>是结构化的文本串,其格式依<类型>而定。 <type>=<value>[CRLF] 常见的fields有: 三、SDP协议例子: 下面是一个helix 流媒体服务器的RTSP协议中的SDP协议: v=0 //SDP version // o field定义的源的一些信息。其格式为:o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address> o=- 1271659412 1271659412 IN IP4 10.56.136.37 s=<No title> i=<No author> <No copyright> //session的信息

H264协议字段简单分析

≡放荡痞女 提交于 2020-01-14 10:28:51
H264协议字段简单分析 一、 h264基础概念 RBSP: 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit“1”)若干比特“0”,以便字节对齐。 EBSP: 扩展字节序列载荷– >在RBSP基础上填加了仿校验字节(0X03)它的原因是: 在NALU加到Annexb上时,需要填加每组NALU之前的开始码 StartCodePrefix,如果该NALU对应的slice为一帧的开始则用4位字节表示,ox00000001,否则用3位字节表示 ox000001.为了使NALU主体中不包括与开始码相冲突的,在编码时,每遇到两个字节连续为0,就插入一个字节的0x03。解码时将0x03去掉。 也称为脱壳操作。 H.264的功能分为两层,视频编码层(VCL)和网络提取层(NAL) VCL数据即被压缩编码后的视频数据序列。把VCL数据要封装到NAL单元中之后,才可以用来传输或存储。H.264 的编码视频序列包括一系列的NAL 单元,每个NAL 单元包含一个RBSP。编码片(包括数据分割片IDR 片)和序列RBSP 结束符被定义为VCL NAL 单元,其余为NAL 单元。典型的RBSP 单元序列如图所示。每个单元都按独立的NAL 单元传送。单元的信息头(一个字节)定义了RBSP 单元的类型,NAL 单元的其余部分为RBSP 数据。 NAL单元

RTCP 包中的 NTP 时间

别来无恙 提交于 2019-12-26 12:21:04
RTP/RTCP的时间同步机制 转自:http://blog.csdn.net/leesphone/article/details/5571972 RTP支持传送不同codec的steaming,不同codec的clock rate的也不一样,不同的media之间需要依靠RTCP进行同步。这里简单介绍一下他们的机制。 在每个RTCP SR包中对应有一个RTP时间和一个NTP时间,它表达的意思很明确,那就是这个RTP时间对应的绝对时间, 不同media的RTP时间尽管不同,但可以通过NTP时间映射到同一个时间轴上,从而实现同步。 如下图所示,RTP session 1 send H264 使用90,000HZ,而RTP session 2 send G.711 使用8,000HZ: 最近遇到进行视频流播放时间戳的匹配问题。学到了一些新方法,记录一下。 运行播放IP camera的软件,用wireshark抓包软件,可看到RTSP数据包的传输过程。 因为抓到的数据包是用UDP传输的,需要选择特定协议进行详细解析,具体步骤为: 选择一行UDP数据包数据; 右击 -> 选择Decode As -> 针对所需端口号,选择相应的应用层协议,此处是RTSP。 这样之后就能看到详细的RTSP包数据传输过程,由下图可见。 观察RTCP的Send Report包,可以发现其包含两个时间

Asterisk 1.8 sip 协议栈分析

余生颓废 提交于 2019-12-25 16:34:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 引用自:http://blog.csdn.net/z1623866465/archive/2011/01/02/6113057.aspx 看了一下 asterisk 1.8 ,chan_sip 更新了许多内容,下面结合asterisk 1.4 asterisk 1.6 分析一下sip协议栈。 此笔记为本人学习记录,有些地方描述其他人可能看不懂,望见谅。 分析路线 sipsock_read->parse_request->find_call->handle_inconming->handle_request_方法名。。。。 协议栈初始化:load_module() 函数加载SIP配置信息,解析sip.conf挂载到全局变量中。 首先初始化user,peer,register全局链表(1.6 版本中已经改为hash存储 估计性能提高不少),这三个链表分别存储用户,peer,register三个实体。 接下来创建 调度器,IO管理器,这里IO即监听socket fd句柄上的IO事件,chan_sip用poll异步IO实现此功能,io_context 结构封装了此功能。 创建IO调度器后注册各种app, load_module()最后调用restart_monitor()函数创建一个线程(do_monitor()

RTSP协议学习笔记

余生颓废 提交于 2019-12-10 22:59:55
第一部分:RTSP协议 一、RTSP协议概述 RTSP(Real-TimeStream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似。 RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演**“网络远程控制”**的角色。尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据。媒体数据的传送可通过RTP/RTCP等协议来完成。 一次基本的RTSP 操作过程是:首先,客户端连接到流服务器并发送一个RTSP描述命令(DESCRIBE)。流服务器通过一个SDP描述来进行反馈,反馈信息包括流数量、媒体类型等信息。 客户端再分析该SDP 描述,并为会话中的每一个流发送一个RTSP建立命令(SETUP),RTSP建立命令告诉服务器客户端用于接收媒体数据的端口。流媒体连接建立完成后,客户端发送一个播放命令(PLAY),服务器就开始在UDP上传送媒体流(RTP包)到客户端。 在播放过程中客户端还可以向服务器发送命令来控制快进、快退和暂停等。最后,客户端可发送一个终止命令(TERADOWN)来结束流媒体会话 二、RTSP协议与HTTP协议区别 RTSP引入了几种新的方法,比如DESCRIBE、PLAY、SETUP 等,并且有不同的协议标识符,RTSP为rtsp 1.0,HTTP为http