蚂蚁文库
换一换
首页 蚂蚁文库 > 资源分类 > DOC文档下载
 

实时视频交互

  • 资源ID:53145743       资源大小:35.00KB        全文页数:12页
  • 资源格式: DOC        下载权限:游客/注册会员    下载费用:18积分 【人民币18元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信快捷登录 QQ登录  
下载资源需要18积分 【人民币18元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

实时视频交互

实时视频交互 当下比较流行的即时通信工具, 比如 MSN, QQ 等都实现了视音频的功能, 通过视频, 音频, 我们可以更好的和挚友通过网络进行沟通, 本文通过 DirectShow 技术模拟 QQ 实现了视频和音频的采集, 传输, 基本实现了 QQ 的视音频闲聊的功能。 网络视音频系统主要功能就在于视音频的采集, 网络传输两个方面, 通过 Video Capture系列 API 函数, 你就可以轻松的搞定视频捕获, 但是对于视频的网络传输, 则要费一番功夫了。 对于视音频数据的传输, 只简洁地运用数据报套接字传输音视频数据是不行行的, 还必需在 UDP层上采纳 RTP(实时传输协议) 和 RTCP(实时传输限制协议) 来改善服务质量。 实时传输协议供应具有实时特征的、 端到端的数据传输服务。 我们在音视频数据前插入包含有载荷标识、 序号、时间戳和同步源标识符的 RTP 包头, 然后利用数据报套接字在 IP 网络上传输 RTP 包, 以此改善连续重放效果和音视频同步。 实时传输限制协议 RTCP 用于 RTP 的限制, 它最基本的功能是利用发送者报告和接收者报告来推断网络的服务质量, 若拥塞状况严峻, 则改用低速率编码标准或降低数据传输比特率, 以削减网络负荷, 供应较好的 Q. S 保证。 Directshow 对于音视频的采集供应了 很好的接口, 利用 ICaptureGraphBuilder2 接口可以很轻松的建立起视频捕获的 graph 图, 通过枚举音频设备 Filter, 也可以很轻松的实现音频的捕获, 有点麻烦的是音视频数据的传输, 我们可以自己封装 RTP 和 RTCP 的协议, 来自己实现一个 filter, 用来发送和接收音视频数据, 当然了 Directshow 也供应了一组支持运用 RTP 协议的网络传输多媒体流的 Filters。 你也完全可以用 Directshow 供应的 RTP 系列的 filter 实现数据的传输。 下面分析一下这些 RTP Filters。 新定义的 Filter 包括 RTP Source Filter , RTP Render Filter, RTP Demux Filter, RTP Receive Playload Handler RPH filter, RTP Send Payload SPH filter, 运用这 5 个 filter构建一个通过 RTP 协议传输音视频数据的 Graph 是没有问题的。 RTP Source filter 被用来从一个单独的 RTP 会话中接收 RTP 和 RTCP 包。 这个 filter 供应一个指定发送给其它主机 RTCP 接收器报告和指定网络地址和端口接口来接收 RTP 会话的接口。 RTP Rend filter 是用来将数据发到网络上的一个 filter, 这个 filter 也供应了 和 RTP source Filter 类似的接口。 RTP Demux filter 用来多路分别来自 RTP Source filter 的 RTP 包, 这个 filter 有一个或者多个输出的 pin。 这个 Filter 供应了 如何限制多路分别和如何安排到特定输出 pin 的接口。 RTP RPH Filter 是用来网络过来的 RTP 包还原成原来的数据格式, 主要支持 H. 261, H. 263,Indeo, G. 711, G. 723 和 G. 729 和常见的多种音视频负载类型。 RTP SPH filter 则和 RPH filter 的功能相对, 它的任务是将音视频 压缩 filter 输出的 数据分解为 RTP 包, 它供应的接口有指定最大生成包大小和 pt 值。 下面我们看看如何用这些 filter 来搭建我们采集和传输的 graph 图。 图 1 和图 2 展示了 DirectShow RTP 中定义的 filters 如何运用。 图 1 是一个采集本地多媒体数据并运用 RTP 协议通过网络发送的 filter graph。 它包含一个输出原始视频帧的视频采集filter, 紧跟一个压缩帧的编码 filter。 一旦压缩, 这些帧就会被发送到 RTP SPH filter, 分片打包, 生成 RTP 包, 对应的发送到 RTP Render filter, 通过网络传输这些包。 图 2 呈现了 一个 filter graph, 用来接收包含视频流 RTP 包, 播放视频。 这个 graph 由一个用来接收包的 RTP Source filter, 一个依据源和负载类型进行分类的 RTP Demux filter, 一个把 RTP 包转为压缩视频帧的 RTP RPH filter 组成。 这些 filter 随后的是用来解压帧的解码 filter, 一个显示未压缩帧的渲染 filter。 有了 RTP filter 的帮助我们就可以完成类似 qq 的功能了, 可以实现在网络上进行视频和音频的交互了, 下面我给出在网络上两个客户端 A 和 B 进行音频和视频交互的 Graph 图。 这里我对图 1 和图 2 中的 RTP filter 进行了 自己封装, 将编解码 filter 干脆封装到了 RTP Source filter 和 RTP Render filter 中, 这样 Graph 图就显得很简洁, RTP Source filter 只是用来接收网络过来的音视频数据, 然后将数据传递给客户程序, RTP Render filter 则是将采集到的音视频数据发送到网络上的另一个客户端, 编解码则的工作则封装到这两个 filter 之中。 假如你也想自己封装自己的 Source 和 Render filter, 首先你要选择自己的编解码, 视频编解码是选择 H261, H263, 还是 MEPG4, 音频是选择 G729 还是 G711, 要首先确定好。 选好编解码,封装的工作就简洁了。 不多说了, 下面看看我给出的代码吧。 首先要定义一下用到的四个 RTP filter 的 CLSID。 static const GUID CLSID_FG729Render { 0 x3556f7d8, 0 x5b5, 0 x4015, { 0 xb9, 0 x40, 0 x65, 0 xb8, 0 x8, 0 x94, 0 xc8, 0 xf9 } } ; //音频发送 static const GUID CLSID_FG729Source { 0 x290bf11a, 0 x93b4, 0 x4662, {

注意事项

本文(实时视频交互)为本站会员(wjdd)主动上传,蚂蚁文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蚂蚁文库(发送邮件至2303240369@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们


网站客服QQ:2303240369

copyright@ 2017-2027 mayiwenku.com 

网站版权所有  智慧蚂蚁网络

经营许可证号:ICP备2024020385号



收起
展开