当前位置:
文档之家› 基于RTP协议的视频实时采集与传输的研究
基于RTP协议的视频实时采集与传输的研究
《P LC 技术应用 200 例》
邮局订阅号: 82-946 360 元 / 年 - 125 -
数采与监测
中 文 核来自百度文库心 期 刊 《微 计 算 机 信 息 》( 测 控 自 动 化 )2006 年 第 22 卷 第 6-1 期
安装口可以通过 capDlgVideoCompression 提示的对话 框直接调用。
源, 使用时会造成机器运行速度慢, 可以在应用程序
新 中降低 Preview 的速率来保证其他程序的正常执行。 ( 6) 采集视频到缓 存或进行相 应的处理。利 用 capCaptureSequence 将视频流保存到文件 中 , 通过回 调函数可以在本地显示, 并通过网络传送到远端。
( 7) 终止采集并断开与采集设备的连接。
( 4) 会议大小估计和控制信息量的调节。参与会 话的每个成员周期性的发送 RTCP 包, 各站点据此计 算出参与会话的人数, 以便及时调节实时控制信息 量, 使控制信息量和媒体业务量达到平衡。
2 视频的实时采集
在视频采集中, 通过 USB 接口的摄像头采集视频 数据, 可以满足对图像采集实时性的要求。我们构建 了利用 MS Visual C++6.0 基于 VFW ( Video For Win- dows) 对视频数据进行采集的软件。VFW 是微软公司 1992 年推出的关于数字视频的一个软件包, 它能使应 用程序通过数字化设备从传统的模拟视频源得到数 字化的视频剪辑。VFW 的一个关键思想是播放时不需 要专用硬件, 为了解决数字视频数据量大的问题, 需 要对数据进行压缩。
关键词: RTP 和 RTCP; 视频采集; 实时传输
中图分类号: TN919
文献标识码: A
Abstr act: This paper analyses the real - time transport protocol (RTP)and the real - time transport control protocol (RTCP),we build up a system based on RTP,it can capture vieo,encode and transmit on network.. Key wor ds: RTP and RTCP;Video Captur e;Real- time Tr ansmission
去的包, 允许接收端确认当前数据的贡献源, 他们具 有相同的同步源标识符。
V: 2 位长的版本号 P: 1 位长的附加标记位, 用以说明包尾是否有非 负荷信息, 这些附加信息可用以加密或通知低层协 议, 一个数据单元封装有几个 RTP 包。 X: 1 位长的扩展位。若 X=1, 表示 RTP 头后 附有 一变长的扩展头。
1.1 RTP 数 据 包 由 12 字 节 的 固 定 的 RTP 头 和 不 定长的连续媒体数据( 视频帧或音频帧) 组成, 媒体数 据可以是压缩编码后的数据。RTP 头结构如下图所示
CC: 4 位长的 CSRC 计数, 表示固定头后有多少个 CSRC 标识符。
M: 1 位长的标记位, 用以标记数 据流中的主 要事 件, 如帧边界。
数采与监测 文章编号:1008- 0570(2006)06- 1- 0124- 03
中 文 核 心 期 刊 《微 计 算 机 信 息 》( 测 控 自 动 化 )2006 年 第 22 卷 第 6-1 期
基于 RTP协议的视频实时采集与传输的研究
Re s e a rch o n Re a l- tim e Vid e o Ca p tu re a n d Tra n s p o rt Ba s e d o n RTP Pro to co l
2.2 使用 VFW 采集时压缩和解压缩处理 在视频采集时, 直接采集的数据没有经过压缩的 avi 文件格式是非 常大的, 如果 不经过压缩 , 对数据的 存储和传输都是很大的困难。在使用 VFW 库, 也可以 方便的实现软件的压缩和解压缩。在需要进行压缩处 理 的 时 候, 可 以 使 用 自 带 的 Codec, 下 面 是 在 VFW 中 调用 Codec 的方法: ( 1) 使用 VFW 提供的 ICInstall 和 ICRemove, 用于 安装和卸载 Codec 或者用于 Codec 的函数。 ( 2) 使用 AVICap 提供的更 高层的接口 宏 capDl- gVideoCompression, 直接显示设置对话框供用户选择 压缩驱动程序。很多 Codec 软件厂商提供了安装程序,
( 1) QoS 监控和阻塞控制。发送音频、视频数据的 应用会产生一个 SR 包, 含有所发送的包数和字节数 统计信息, 接收者可以据此估计出实际的数据率。会 话成员向所有活动的音频、视频源发送 RR 包, 含有所 接 收 的 最 高 包 序 号 , 丢 失 包 数 、包 间 抖 动 测 量 值 以 及 计算源目之间往返时间所需的时戳。
( 4) 与 采 集 设 备 相 连 。 使 用 capDriverConnect
技 (hwnd,iIndex)与采集设备相连, 其中 hwnd 表示采集窗
口, iIndex 表示视频设备的索引号。
术 ( 5) 设置采集窗口显示模式。使用 capPreview 来 创 设置窗口现显示模 式为 Preview, Preview 占用 CPU 资
PT: 7 位长的负荷类型, 接收端据此来识别媒体类型。 Sequence number: 2 字节长的包序列号, 每个 RTP 数据包发送按先后次序依次增 1, 用于接收端的丢包 检测和包序号恢复, 第一包的数据是随机选取的。 时间戳: 32 位长的时戳。RTP 包中数据开始产生 的时钟时间, 用于同步和包到达间隔抖动计算, 时钟 频率和数据格式有关, 不能使用系统时钟, 对固定速 率的音频来说, 每次取样时戳时钟增 1。和包序列号一 样, 时戳的开始值也是随机的。如果多个 连续的 RTP 包逻辑上是同时产生的, 那么他们具有相同的时戳。 同步源( SSRC) : 32 位长, 定义 SSRC 的定义符, 可 以 随 机 选 取 , 但 在 同 一 RTP 会 话 中 , 不 同 的 SSRC 应 该有不同的 SSRC 值。 贡献源 CSRC 列表: 可以有 0 ̄ 15 个项目。每个项 目占 32 位, 一列贡献源标识被插入到混合器中。混合 器表示将多个载荷数据组合起来产生一个将要发出
- 124 -
360元 / 年 邮局订阅号: 82-946
《现场总线技术应用 200 例》
您的论文得到两院院士关注
数采与监测
包 , 用 于 接 收 非 活 动 站 的 统 计 信 息 ; ③SDES: 源 描 述 包, 用于 报告和站点 相关的信息 ; ④BYE: 站点离开 系 统报告包; ⑤APP: 特殊应用包。 RTCP 有以下几个主要功能:
( 解放军信息工程大学) 赵臣兵 刘立柱
Zhao ,Chenbing Liu ,Lizhu
摘要: 分 析 了 实 时 通 信 协 议 RTP 及 其 控 制 协 议 RTCP, 构 建 一 个 基 于 RTP 协 议 的 采 集 传 输 系 统 , 能 够 实 时 采 集 视 频 数 据 、编
码并通过网络传输。
capSetUserData(m_capwnd,this); ( 2) 注册回调函数。 capSetCallbackOnVideoStream(m_capwnd,OnCaptureVideo); if(! capDriverConnect(m_capwnd,index)) { AfxMessageBox(“Unable to open Video Capture Device”); M_capwnd=NULL; } ( 3) 获取 和 设置 采 集 窗口 采 集 参 数 。 使 用 capCaptureGet-
协议和系统自带的 VFW 函数并进行视频采集。
1 RTP 协议分析
实时传输协议 RTP( Real- time Transport Protocol) 是用于网络上针对多媒体数据流的一种传输协议, RTP 协 议 由 RTP 数 据 协 议 和 控 制 协 议 RTCP 两 部 分 组成。RTP 被定义在一对一或一对多的传输情况下工 作。RTP 通常使用 UDP 来传送数据, 但 RTP 也可以在 TCP 或 ATM 等其他协议下工作。
void VideoCapture::Stop() { //停 止 捕 捉 capCaptureAbort(m_capwnd); //注 销 回 调 函 数 capSetCallbackOnVideoStream(m_capwnd,NULL); //取 消 与 视 频 捕 捉 设 备 的 连 接 capDriverDisconnect(m_capwnd); }
技
随着网络技术的迅猛发展和全球信息化的加深, 多
术 媒体实时通信已成为网络通信中的一个非常重要的业 务, 这些业务主要包括视频点播、可视电话、会议电视、
创 远程教育、流媒体等, 而这些应用关键技术在于数字视 频的实时采集和传输。根据多媒体数据要求实时性高、
新 延迟小、可容忍适当的丢包率等特点, 我们研究了 RTP
Setup获得 采 集窗 口 当 前的 参 数 设 置 , 函 数 结 果 保 存 在 CAPTU REPARMS 中, 根据需要修改后再用 capCaptureGetSetup 写入。
if(SetCapturePara()==FALSE) { capDriverDisconnect(m_capwnd); } BOOL VideoCapture::SetCapturePara() { CAPTUREPARMS CapParms={0}; capCaptureGetSetup(m_capwnd,&CapParm,sizeof(CapParms)); CapParms.fYield=TRUE; CapParms.fCaptureAudio=FALSE; CapParms.wPercentDropForError=50; if (capCaptureSetSetup (m_capwnd,&CapParm,sizeof (Cap- Parms))==FALSE) { return FALSE; }
2.1 视频采集流程和关键函数 下面介绍利用 VFW 进行实时视频采集及实 现的 具体步骤和关键函数: ( 1) 建 立 一 个 采 集 窗 口 。 使 用 capCreateCap- tureWindows 函数, 函数返回值即是采集窗口的句柄。 //创建捕获窗口
m_capwnd =capCreateCaptureWindows (“Capture”,WS_POP- UP,0,0,1,1,0,0);
3 系统设计和传输的实现
在分析了 RTP 数据包的基础上, 设计了一套网络
多媒体数据的传输系统, 系统流程如下图:
通过摄像头采集的数据经过数据压缩, RTP 打包,
形成 RTP 流发送到网络中, 接收端接收到数据包后, 根
据 RTP 包头里的信息进行排序处理, 送入缓冲区, 然后
赵臣兵: 硕士研究生
1.2RTCP 控制功能 RTP 提供一个控制协议 RTCP, 用来支 持其协议 功能。对于不同的应用的控制, RTCP 信息由若干堆栈 式的包组成。每个包有其自己的类型码和长度指示, 其包格式与 RTP 包格式类似。RTCP 包周期性的在会 话成员间传播, 起会员活动指示器的作用。 常用的 RTCP 包有以 下几类: ①SR: 源 报告包, 用 于 发送和接收 活动源的统 计信息; ②RR: 接 收 者 报 告
( 2) 媒体间同步。RTCP 发送报告包含 一个实时 ( 外部时钟时间) 显示和对应的 RTP 时间戳, 可用于不 同媒体间的同步控制。
( 3) 标识。RTP 数据包只能通过随机产生的 32 位 识别符来标识源, 不能满足诸如会议这样的复杂要 求。而 RTCP 的 SEDS 包中有足够的文本信息, 如用户 各种信息等, 以满足复杂应用的需要。