音视频技术 即时通讯SDK

视频流中的DTS/PTS到底是什么?

DTS(解码时间戳)和PTS(显示时间戳)分别是解码器进行解码和显示帧时相对于SCR(系统参考)的时间戳。SCR可以理解为解码器应该开始从磁盘读取数据时的时间。

mpeg(当前更多的是使用H.264视频技术,如AnyChat SDK)文件中的每一个包都有一个SCR时间戳并且这个时间戳就是读取这个数据包时的系统时间。通常情况下,解码器会在它开始读取mpeg流时启动系统时钟(系统时钟的初始值是第一个数据包的SCR值,通常为0但也可以不从0开始)。

DTS 时间戳决定了解码器在SCR时间等于DTS时间时进行解码,PTS时间戳也是类似的。通常,DTS/PTS时间戳指示的是晚于音视频包中的SCR的一个时 间。例如,如果一个视频数据包的SCR是100ms(意味着此包是播放100ms以后从磁盘中读取的),那么DTS/PTS值就差不多是200
/280ms,表明当SCR到200ms时这个视频数据应该被解码并在80ms以后被显示出来(视频数据在一个buffer中一直保存到开始解码)下 溢通常发生在设置的视频数据流相关mux率太高。

如果mux率是1000000bits/sec(意味着解码器要以1000000bits/sec的速率 读取文件),可是视频速率是2000000bits/sec(意味着需要以2000000bits/sec的速率显示视频数据),从磁盘中读取视频数据时 速度不够快以至于1秒钟内不能够读取足够的视频数据。这种情况下DTS/PTS时间戳就会指示视频在从硬盘中读出来之前进行解码或显示(DTS/PTS时间戳就要比包含它们的数据包中的SCR时间要早了)。

如今依靠解码器,这基本已经不是什么问题了(尽管MPEG文件因为应该没有下溢而并不完全符合MPEG标准)。一些解码器(很多著名的基于PC的播放器)尽可能快的读取文件以便显示视频,可以的话直接忽略SCR。

注意在你提供的列表中,平均的视频流速率为~3Mbps(3000000bits/sec)但是它的峰值达到了14Mbps(相当大,DVD限制在 9.8Mbps内)。这意味着mux率需要调整足够大以处理14Mbps的部分, bbMPEG计算出来的mux率有时候太低而导致下溢。

你计划让视频流速率这么高么?这已经超过了DVD的说明了,而且很可能在大多数独立播放其中都不能播放。如果你不是这么计划,我会从1增加mquant的值并且在视频设置中将最大码流设置为9Mbps以保持一个小一点的码流。

如果你确实想让视频码率那么高,你需要增大mux率。从提供的列表可以得出bbMPEG使用14706800bits/sec或者1838350bytes
/sec的mux率(总数据速率为:1838350bytes/sec(14706800bits/sec)行)。你在强制mux率字段设置的值应该是以

bytes/sec为单位并被50整除。所以我会从36767(1838350/50)开始,一直增加直到不会再出现下溢错误为止。

音视频同步原理[ffmpeg]

ffmpeg对视频文件进行解码的大致流程:

1. 注册所有容器格式和CODEC: av_register_all()

2. 打开文件: av_open_input_file()

3. 从文件中提取流信息: av_find_stream_info()

4. 穷举所有的流,查找其中种类为CODEC_TYPE_VIDEO

5. 查找对应的码器: avcodec_find_decoder()

6. 打开编解码器: avcodec_open()

7. 为解码帧分配内存: avcodec_alloc_frame()

8. 不停地从码流中提取中帧数据: av_read_frame()

9. 判断帧的类型,对于视频帧调用: avcodec_decode_video(

10. 解码完后,释放解码器: avcodec_close()

11. 关闭输入文件:av_close_input_file()

output_example.c 中AV同步的代码如下(我的代码有些修改),这个实现相当简单,不过挺说明问题。

音视频同步-时间戳

媒体内容在播放时,最令人头痛的就是音视频不同步。从技术上来说,解决音视频同步问题的最佳方案就是时间戳:首先选择一个参考时钟(要求参考时钟上的时间是线性递增的);生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间);在播放时,读取数据块上的时间戳,同时参考当前参考时钟上的时间来安排播放(如果数据块的开始时间大于当前参考时钟上的时间,则不急于播放该数据块,直到参考时钟达到数据块的开始时间;如果数据块的开始时间小于当前参考时钟上的时间,则“尽快”播放这块数据或者索性将这块数据“丢弃”,以使播放进度追上参考时钟)。

可见,避免音视频不同步现象有两个关键——一是在生成数据流时要打上正确的时间戳。如果数据块上打的时间戳本身就有问题,那么播放时再怎么调整也于事无补。假如,视频流内容是从0s开始的,假设10s时有人开始说话,要求配上音频流,那么音频流的起始时间应该是10s,如果时间戳从0s或其它时间开始打,则这个混合的音视频流在时间同步上本身就出了问题。打时间戳时,视频流和音频流都是参考参考时钟的时间,而数据流之间不会发生参考关系;也就是说,视频流和音频流是通过一个中立的第三方(也就是参考时钟)来实现同步的。第二个关键的地方,就是在播放时基于时间戳对数据流的控制,也就是对数据块早到或晚到采取不同的处理方法。图2.8中,参考时钟时间在0-10s内播放视频流内容过程中,即使收到了音频流数据块也不能立即播放它,而必须等到参考时钟的时间达到10s之后才可以,否则就会引起音视频不同步问题。

基于时间戳的播放过程中,仅仅对早到的或晚到的数据块进行等待或快速处理,有时候是不够的。如果想要更加主动并且有效地调节播放性能,需要引入一个反馈机制,也就是要将当前数据流速度太快或太慢的状态反馈给“源”,让源去放慢或加快数据流的速度。熟悉DirectShow的读者一定知道,DirectShow中的质量控制(Quality
Control)就是这么一个反馈机制。DirectShow对于音视频同步的解决方案是相当出色的。但WMF
SDK在播放时只负责将ASF数据流读出并解码,而并不负责音视频内容的最终呈现,所以它也缺少这样的一个反馈机制。

时间: 2024-11-05 13:28:36

音视频技术 即时通讯SDK的相关文章

音视频技术 即时通讯市场分析

一.市场渗透力以及存在问题 第一,有需求就有市场,有市场就有商机.利字当头,当仁不让.众多服务商就是盯准了即时通讯市场潜在的无限商机,才会不遗余力地开发各类新的即时通讯软件. 第二,即时通讯软件的特点决定了它的普及性,成为了互联网即时和他人联系的重要方式.通过即时通讯软件,人们可以在发出消息后的很短时间内得到对方应答,积极互动,满足了人们几乎同步交流的需求.对于大多数人来说,通过即时通讯进行沟通比电话来得实惠,因而即时通讯受到网民的普遍喜欢. 第三,对于企业来说,即时通讯为他们开拓了网络应用的新

4G时代音视频的即时通讯

还记得2013年12月4日下午,国家工业和信息化部向三大电信运营商正式颁发了4G(TD-LTE)牌照,宣告我国通信行业进入4G时代. 在2013国际投资论坛上,中国移动原董事长王建宙像我们展示了什么叫做4G速度:一部30分钟左右的短片,3秒钟下载完成;手机看视频基本上不需要缓冲,进度条拉到哪里,就能播放,这就是4G的力量! 所有技术的发展都不可能在一夜之间实现,从GSM.GPRS到第4代,4G的真正应用是在今年的下半年, 4G通信使人们从原来传统的计算机PC端转移到移动端,不仅可以随时随地通信,

即时通讯 手机音视频技术开发方案

"SDK即时通讯平台"是一套跨平台的即时通讯解决方案,基于先进的H.264视频编码标准.AAC音频编码标准与P2P技术,支持高清视频,整合了佰锐科技在音视频编码.多媒体通讯领域领先的开发技术和丰富的产品经验而设计的高质量.宽适应性.分布式.模块化的网络音视频互动平台. "SDK即时通讯平台"包含了音视频处理模块(采集.编解码).流媒体管理模块(丢包重传.抖动平滑.动态缓冲).流媒体播放模块(多路混音.音视频同步)以及P2P网络模块(NAT穿透.UPnP支持.IP组播

即时通讯 SDK 一对一通讯技术

在IM通讯中,经常会有一对一,一对多,多对多的通讯场景,不管是语音的还是视频的,或者是两者的混合,那么如何实现一对一的即时通讯场景需求呢,下面介绍一下BRAChat的即时通讯SDK. BRAChat SDK(AnyChat音视频互动开发平台)是一套跨平台的(*)即时通讯解决方案,基于先进的H.264视频编码标准.AAC音频编码标准与P2P技术,支持高清视频,整合了佰锐科技在音视频编码.多媒体通讯领域领先的开发技术和丰富的产品经验而设计的高质量.宽适应性.分布式.模块化的网络音视频互动平台. 由于

音视频技术 视频抖动优化

大家在视频聊天中,经常会出现马赛克或是视频短暂卡住不动等,通常是由于网络不稳定,如丢包.抖动等造成的. 一般音视频技术都会加入了丢包重传.抖动优化等措施,可以避免由于网络偶尔变差而对音视频通话效果的影响,但是当网络带宽不足,或是网络状态持续恶化时,下面介绍其中一个跨平台的音视频即时通讯的SDK技术-Any.Chat互动平台,Any.Chat内核提供了一个API接口,可以让上层根据自身的应用来决定选择何种处理方案: 方案一:打开平滑播放模式,该模式下,出现丢包时,继续播放,保持播放的流畅性,但是界

智能家居的音视频技术

智能家居概念的起源很早,但一直未有具体的建筑案例出现,直到1984年美国联合科技公司才出现了首栋的"智能型建筑",从此也揭开了全世界争相建造智能家居的序幕,又称智能住宅. 智能家居是以住宅为平台,兼备建筑.网络通信.信息家电.设备自动化,集系统.结构.服务.管理为一体的高效.舒适.安全.便利.环保的居住环境.与普通家居相比,智能家居不仅具有传统的居住功能,提供舒适安全.高品位且宜人的家庭生活空间:还由原来的被动静止结构转变为具有能动智慧的工具,提供全方位的信息交互功能,帮助家庭与外部保

“小程序+直播”怎样搅动音视频技术生态?

责编 / 王宇豪 策划 / LiveVideoStack 12月26日晚间,微信小程序开放了直播能力,并首先向社交.教育.医疗.政务民生.金融等五大应用场景开放.与原生App应用和基于浏览器的H5应用相比,小程序直播会对音视频技术生态带来哪些影响?微信天生的流量优势会给开发者和运营带来机会还是陷阱?LiveVideoStack邀请了若干位有代表性的技术人,分享各自的观点与思考. LiveVideoStack:对于小程序提供的这种实时音视频功能,它是否能满足我们一般的直播需求呢?比如它的延迟大致能

远程医疗 音视频技术解决方案

临床医学院承担医.教.研的任务,接待实习学员,培训进修人员,教学任务繁重.手术教学过程,需现场教学,但手术室空间有限,学员多,教学效果差,而且影响手术工作.随着医学领域的不断发展,外科手术技术也在日新月异,利用高端计算机科学技术,对各种手术全程画面影像的实时记录,使之用于研究.教学和病例存档,已经得到非常的重视.有些具有争议的手术,也可以利用这些视频资料作为科学的判断依据.手术后对照这些影像资料进行学术探讨,对于提高手术的成功率能够起到很大的帮助.并可通过网络,得到异地专家手术中的远程指导.这样

iOS 即时通讯SDK的集成,快速搭建自己的聊天系统

现在的外包项目需求变态的各种各样,今天要做社交,明天要加电商,后天又要加直播了,这些系统如果要自己开发,除非大公司技术和人力都够,不然短时间是几乎实现不了的.所以学会灵活利用市面上的各种SDK是灰常重要的技能. 最近继续在做的项目是一个气象救灾类APP,里面需要进行聊天的即时通讯模块.目前已经实现,效果如下: 一.市面上的即时通讯SDK 目前市面上的即时通讯SDK大概有:融云.网易云信.容联云等.非常多. 较为稳定.功能较全的应该是网易云信了,界面如下: 但是我们的应用需要的即时通讯是一个模块,