文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院工具软件媒体播放浅析DirectShow音视频同步解决完整方案
精品推荐
特别推荐
·卡拉当然OK 录制自己的专辑
·Windows Media Player11使用技巧
·制作有真人视频讲解的幻灯片
·购机必看:主流MP4播放器视频转换全攻略
·Winamp使用指南
·将录像带转为VCD进行保存
·KMPlayer常见问题及解决方法整理
·Nero超刻的详细方法
·KMplayer播放技巧22则
·Windows Media Player专题问答
·用Nero制作音视频光盘
·暴风影音新酷技巧串串烧
·MPEG、RM、WMV电影文件格式转换指南
·APE变成高品质MP3音乐 转换工具介绍
·网络电台DIY
·3GP手机视频转换工具WinAVI
·视频下载不求人 突破封锁保存各类视频资源
·酷我音乐盒独家秘籍偷偷报
·巧设置RealPlayer工作到最佳状态
·轻松化解RealPlayer各种常见问题
热点TOP10
·p8:电影还是边下边看的好
·3GP手机视频转换工具WinAVI
·卡拉当然OK 录制自己的专辑
·MPEG、RM、WMV电影文件格式转换指南
·认识MPEG视频压缩标准及相关编码格式
·转换MP4/3GP格式的至尊法宝---MP4/RM转换专家
·Nero超刻的详细方法
·视频下载不求人 突破封锁保存各类视频资源
·DVD转换MPEG-4三部曲之一
·将你的VP6影片播放出来
·四大网络视频压缩技术大比拼
·趣味变声软件——AV VCS
·从视频文件中提取声音的方法
·亲手打造自动播放的郭德纲相声盘
·将VCD转换成RM格式转换就这么简单
·APE变成高品质MP3音乐 转换工具介绍
·轻松听歌千千静听技巧十七招
·用Nero制作音视频光盘
·Winamp使用指南
·RM,RMVB转VCD全功略

浅析DirectShow音视频同步解决完整方案

日期:2004年9月16日 作者:清风网络学院 查看:[大字体 中字体 小字体]



  1. 文件回放(File playback):第一个Sample的时间戳从0开始打起,后面Sample的时间戳根据Sample有效数据的长度和回放速率来定。

  2. 音视频捕捉(Video and audio capture):原则上,采集到的每一个Sample的开始时间都打上采集时刻的Stream time。对于视频帧,Preview pin出来的Sample是个例外,因为如果按上述方法打时间戳的话,每个Sample通过Filter链路传输,最后到达Video Renderer的时候都将是迟到的;Video Renderer通过Quality Control反馈给Source Filter,会导致Source Filter丢帧。所以,Preview pin出来的Sample都不打时间戳。对于音频采集,需要注意的是,Audio Capture Filter与声卡驱动程序两者各自使用了不同的缓存,采集的数据是定时从驱动程序缓存拷贝到Filter的缓存的,这里面有一定时间的消耗。

  3. 合成(Mux Filters):取决于Mux后输出的数据类型,可以打时间戳,也可以不打时间戳。

  大家可以看到,Sample的时间戳对于保证音视频同步是很重要的。Video Renderer和Audio Renderer作为音视频同步的最终执行者,需要做很多工作。我们或许要开发其它各种类型的Filter,但一般这两个Filter是不用再开发的。一是因为Renderer Filter本身的复杂性,二是因为微软会对这两个Filter不断升级,集成DirectX中其它模块的最新技术(如DirectSound、DirectDraw、Direct3D等)。

  最后,我们再来仔细看一下Live Source的情况。Live Source又叫Push source,包括Video /Audio Capture Filter、网络广播接收器等。Filter Graph Manager是如何知道一个Filter是Live Source的呢?通过如下任何一个条件判断:

  1. 调用Filter上的IAMFilterMiscFlags::GetMiscFlags返回有AM_FILTER_MISC_FLAGS_IS_SOURCE标记,并且至少有一个Output pin实现了IAMPushSource接口。

  2. Filter实现了IKsPropertySet接口,并且有一个Capture output pin(Pin的类型为PIN_CATEGORY_CAPTURE)。

  Live Source对于音视频同步的影响主要是以下两个方面:Latency和Rate Matching。Latency是指Filter处理一个Sample花费的时间,对于Live Source来说,主要取决于使用缓存的大小,比如采集30fps的视频一般采集完一帧后才将数据以一个Sample发送出去,则这个Filter的Latency为33ms,而Audio一般缓存500ms后才发送一个Sample,则它的Latency就为500ms。这样的话,Audio与Video到达Renderer就会偏差470ms,造成音视频的不同步。默认情况下,Filter Graph Manager是不会对这种情况进行调整的。当然,应用程序可以通过IAMPushSource接口来进行Latency的补偿,方法是调用IAMGraphStreams::SyncUsingStreamOffset函数。Filter Graph Manager的实现如下:对所有实现IAMPushSource接口的Filter调用IAMLatency::GetLatency得到各个Source的Latency值,记下所有Latency值中的最大值,然后调用IAMPushSource::SetStreamOffset对各个Source设置偏移值。

  这样,在Source Filter产生Sample时,打的时间戳就会加上这个偏移量。Rate Matching问题的引入,主要是由于Renderer Filter和Source Filter使用的是不同的参考时钟。这种情况下,Renderer对数据的播放要么太快,要么太慢。另外,一般Live Source不能控制输出数据的速率,所以必须在Renderer上进行播放速率的匹配。因为人的听觉敏感度要大于视觉敏感度,所以微软目前只在Audio Renderer上实现了Rate Matching。实现Rate Matching的算法是比较复杂的,这里就不再赘述。

  看到这里,大家应该对DirectShow是如何解决音视频同步问题的方案有一点眉目了吧。深层次的研究,还需要更多的测试、Base class源码阅读,以及DirectShow相关控制机制的理解,比如Quality Control Management等。


(出处:清风网络学院


上一页 [1] [2] 




上一篇:拯救”被设计字体过度占用的硬盘空间

下一篇:巧让Windows 2000/XP系统急速“瘦”身

浅析DirectShow音视频同步解决完整方案 相关文章:
·笔记本电脑无线上网解决方案大比拼
·不用重装XP系统就可以解决全部故障
·QQ聊天记录偷窥和QQ视频欺骗
·3GP手机视频转换工具WinAVI
·小型办公场合组网方案
·XP系统运行慢?小编自用7招解决
·认识MPEG视频压缩标准及相关编码格式
·施工与工程组织方案
·中小企业整体网络安全解决方案解析
·激情聊天原来有陷阱!快来揭露视频MM的真面目
浅析DirectShow音视频同步解决完整方案 相关软件:
·有关毛泽东的一些问题解答(不完整版)
·黑客视频教程 VMware虚拟机的安装和使用
·刘天礼 吉他视频教程
·SQL Server 2000 基础系列课程视频
·最新PhotoshopCS8.0视频教学
·婚育视频讲座-爱的奇迹
·魔兽世界 视频-亡灵贼号pvp视频1
·婚育视频讲座-新婚ABC
·成功少儿培养方案(上中下)高清晰PDF电子书
·孙鑫VC++从入门到精通开发详解视频教程FLASH版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot