一种p2p系统中音视频数据的同步方法

文档序号:7973140阅读:108来源:国知局
专利名称:一种p2p系统中音视频数据的同步方法
技术领域
本发明属于流士某体传输领域,尤其涉及一种P2P系统中音视频数据的同步 方法。
背景技术
流々某体(Stream Media)是指采用流式传输的方式在Internet/Intranet插-i文 的媒体格式,如音频、视频或多媒体文件。流媒体在播放前并不下载整个文件, 只将开始部分内容存入内存,在计算机中对数据包进行緩存并使流媒体数据正 确地输出。流式传输主要指将整个音频和视频及三维媒体等多媒体文件经过特 定的压缩方式解析成一个个压缩包,由视频服务器向用户计算机顺序或实时传 送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文 件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机 上利用解压设备对压缩的多媒体文件解压后进行播放和观看。此时多媒体文件 的剩余部分将在后台的服务器内继续下载。与单纯的下载方式相比,这种对多 ^某体文件边下载边^"入的流式传输方式不仅使启动延时大幅度地缩短,而且对 系统緩存容量的需求也大大降低,极大地减少用户用在等待的时间。目前,流 媒体技术已经广泛应用在互联网领域中。
与客户端/服务器(C/S)方式不同,点对点(PeertoPeer, P2P )是指网络 中任何两个用户节点之间通讯,不再通过传统的服务器进行中转,而是在两个 节点之间建立直连通道,直接传输数据。
在P2P系统中实现流媒体传输时,其中的一个重要技术难点就是如何保证 视频、音频数据的同步传输,并在网络环境不稳定的情况下,能继续保证视频、 音频数据的同步,使得播放端的用户能看到高质量的同步的音视频节目。
在C/S系统中,由于流媒体数据由服务器统一进行周转,所以在数据的流
畅性、完整性方面可以由服务器控制。但在P2P方式下,由于数据本身是由客
户端到客户端来传递的,所以这些流i某体数据将更容易出现数据的不可控和不
能及时达到等情况。
在现有的P2P系统中, 一般都直接采用了现有的流媒体技术,即在播放方 面并不关心使用了哪种编码器或者解码器,而是将在流i某体技术下的视频、音 频数据同步直接交给对应的播放器软件本身来处理。这种方式在前期可以减少 系统开发的难度,但是系统的后期开发将受制于播放器软件中的编码器和解码
时,对于编码器解码失败或者编码中有错误的节目无法调节。

发明内容
本发明的目的在于提供一种P2P系统中视音频数据的同步方法,旨在解决 现有P2P系统由于采用现有的流媒体播放器软件解决视、音频数据的同步,造 成系统的后期开发受^番放器软件中的编码器和解码器的影响较大,节目的编解 码难以优化的问题。
本发明是这样实现的, 一种P2P系统中音视频数据的同步方法,所述方法 包括下述步骤
发布端对音频数据和视频数据进行同步调整,编码生成流媒体数据包;
播放端获取所述流媒体数据包后,对流媒体数据包进行解析和解压缩,按 时间片同步解码播放流媒体数据包中的音频数据和视频数据。
发布端对音频数据和视频数据进行同步调整时,对于在现场采集的流媒体 数据,将音频数据和视频数据分为不同长度的流媒体数据信息,同时根据参考 时钟生成音频数据和视频数据的时间信息,将音频数据和视频数据打上时间戳。
发布端对音频数据和视频数据进行同步调整时,对于现场采集的数据,采
用采集时间戳;对于非现场采集的数据,提取媒体文件中的时间戳。播放端对音频数据队列中的音频数据进行播放时,将音频数据的时间戳与 参考时钟的当前时间对比,当音频数据已经到播放时间时解码播放音频数据。
播放端对岸见频数据队列中的视频数据进行播放时,将视频数据的时间戳与 当前正在播放的音频数据的时间戳进行对比,当同时的音频数据播放时,同步 播放该视频数据。
所述按时间片同步解码播放流媒体数据包中的音频数据和视频数据的步骤
具体为
6.1判断获取的P2P流媒体数据包是否与上一个P2P流媒体数据包连续, 是则执行步骤6.3,否则执行步骤6.2;
6.2设置視频数据解码为删除P帧模式,并继续执行步骤6.3;
6.3根据流媒体数据包中的流媒体数据小包的包头判断该流媒体数据小包 是否是视频数据,是则执行步骤6.5,否则执行步骤6.4;
6.4将该流々某体数据小包进行音频解码,并将解码后的数据加入音频播放队
列;
6.5判断是否为删除P帧模式,是则执行步骤6.7,否则执行步骤6.6; 6.6判断当前的视频播放是否为加快模式,是则执行步骤6.7,否则执行步 骤6.8;
6.7判断数据包是否为I帧,是则执行步骤6.8,否则执行步骤6.9;
6.8将该流媒体数据小包进行视频解码,并将解码后的数据加入视频播放队
列;
6.9丟弃该流媒体数据小包,并把带有时间戳的空数据加入视频播放队列。 所述按时间片同步解码播放流媒体数据包中的音频数据和视频数据的步骤 具体为
7.1判断当前播放的视频数据的时间戳与当前播放的音频数据的时间戳的 差是否大于设置的阈值,是则执行步骤7.2,否则执行步骤7.4;
7.2判断当前视频数据的播放模式是否为快进播放模式,是则执行步骤7.3,
否则执行步骤7.7;
7.3通知一见频解码线程取消快进播放模式;
7.4判断当前播放的音频数据的时间戳与当前播放的视频数据的时间戳的 差是否大于设置的阈值,是则执行步骤7.5,否则执行步骤7.7;
7.5判断当前视频数据的播放模式是否为快进播放模式,是则执行步骤7.7, 否则执行步骤7.6;
7.6通知岸见频解码线程设置为快进播放模式;
7.7解码播放纟见频数据。
发布端将同步调整后的音频数据和视频数据进行编码时,采取视频包和音 频包交替的方式。
播放端获取所述流媒体数据包后,按照视频包和音频包交替的方式对流媒 体数据包进行解析。
在本发明中,发布端对流媒体数据包同步调整,编码生成流媒体数据包, 播放端获取发布端同步调整后的流媒体数据包后,对流媒体数据包进行解析, 按时间片同步解码播放音频数据和视频数据,并在网络状况不稳定或者播放端 资源不足的情况下通过跳帧方式保持音频数据和视频数据播放的同步,使得系 统的后期开发不会受到媒体压缩格式的不同而必须使用不同的编解码器来同步 的影响。


图1是本发明中播放端播放流媒体数据时的数据播放队列示意图; 图2是本发明中播放端对收到的流媒体数据进行播放处理的实现流程图; 图3是本发明中播放端解码播放音频数据的实现流程图; 图4是本发明中播放端播放视频频数据的实现流程图 图5是本发明中当网络状况不稳定时,播放端同步播放音视频数据的实现 流程图6是本发明中在播放端播放资源不足的情况下同步播放音视频数据的实
现流程图。 具体宍施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅 仅用以解释本发明,并不用于限定本发明。
在本发明中,发布端对流媒体数据包同步编码,生成流媒体数据包,播放 端获取发布端同步调整后的流媒体数据包后,对流媒体数据包进行解析,按时 间片同步解码播放音频数据和视频数据,并在网络状况不稳定或者播放端资源 不足的情况下通过跳帧方式保持音频数据和视频数据播放的同步。
由于P2P系统中流媒体数据的传输并不采取传统的C/S模式,所以在P2P 系统中,必然存在一个特殊的节点来产生流4某体数据,可以抽象的认为该节点 是整个在P2P系统中的流媒体数据的"源头",称为发布端。发布端所做的一 个很重要的工作是组织流媒体数据包,在该数据包的组织过程中,需要遵循流 媒体数据的同步性原则,对音频数据和视频数据进行同步调整。
发布端对音频数据和视频数据进行同步调整时,对于在现场采集的流媒体 数据,按照音频数据和视频数据的区别,将其分为不同长度的流媒体数据信息, 一般视频数据按照帧的单位计数,音频数据按照时间计数,并同时根据参考时 钟生成2个i某体数据的时间信息,在数据编码之前将这些流^ 某体数据打上时间 戳。对于非现场采集的数据,则采用提取媒体文件中的时间戳的方法,在一般 情况下不会改变这些流^f某体数据的属性,例如音频数据的时间片,但是在某些 情况下,可能会不得不改变流媒体数据的性质,例如由于需要做二次压缩,可 能将上述的音频时间片进行拉长或者减短。发布端将同步调整后的流媒体数据 一般按照"视频包、音频包、视频包……"的方式编码生成一个交给P2P层的 大的流媒体数据包。
在P2P系统中,其他节点从P2P层获取流媒体数据包进行播放,这样的节 点为播放端。播放端一般会緩沖这些流媒体数据, 一方面是为了与其他节点之 间进行数据交互,另一方面对流媒体数据的本地播放进行緩冲。播放端收到发 布端同步调整后的流^(某体数据包时,按照"视频包、音频包、视频包......"的
规则对流々某体数据包进行解析,本发明中采用的是不等长包的方式。在接收到 这些数据包后,播放端进行流媒体数据包的解压缩操作,将时间戳依旧打在解 压缩完毕的流媒体数据上。在播放时,播放端严格按照时间片来播放,即在播 放端有两个不同的队列,如图l所示,分别对应流媒体数据的音频数据和视频 数据。播放端从音频数据队列中取出一个音频数据后,将音频数据的时间戳与 参考时钟的当前时间对比,决定是否播放。对于视频数据,则通过判断当前正 在播放的音频数据的时间戳确认其播放与否。
图2示出了本发明中播放端对收到的流媒体数据进行播放处理的实现流 程,详述如下
在步骤S201中,获取P2P层的流媒体数据包,按照"视频包、音频包、 视频包、音频包、视频包......"的方式解析流媒体数据包,并解压缩流媒体数
据包,在解压缩完毕的流媒体数据上打上时间戳;
在步骤S202中,判断是否到流媒体数据包的包尾,是则执行步骤S203, 否则结束流程;
在步骤S203中,从获取的流媒体数据包中取出一个流媒体数据小包;
在步骤S204中,判断该取出的流媒体数据小包是否是视频数据,是则执行 步骤S205,否则执行步骤S206;
在步骤S205中,将流媒体数据小包加入到视频播放队列,并返回步骤S202, 继续判断是否到流々某体数据包的包尾;
在步骤S206中,将流媒体数据小包加入到音频播放队列,并返回步骤S202, 继续判断是否到流媒体数据包的包尾。
图3示出了本发明中播放端解码播放音频数据的实现流程,详述如下
在步骤S301中,启动音频播放流程;
在步骤S302中,判断音频播放队列中是否有数据,是则执行步骤S303, 否则继续判断音频播放队列中是否有数据;
在步骤S303中,从音频播放队列中取出一个音频数据小包;
在步骤S304中,将音频数据的时间戳与参考时钟的当前时间对比,判断音 频数据是否已经到l番放时间,是则执行步骤S305,否则继续将音频数据的时间戳 与参考时钟的当前时间对比,判断音频数据是否已经到播放时间;
在步骤S305中,解码播放音频数据,并返回步骤S302判断音频播放队列 中是否还有音频数据需要播放。
图4示出了本发明中播放端播放视频频数据的实现流程,详述如下
在步骤S401中,启动视频播放;
在步骤S402中,判断视频播放队列中是否有数据,是则执行步骤S403,
否则继续判断视频播放队列中是否有数据;
在步骤S403中,从视频播放队列中取出一个视频数据小包;
在步骤S404中,将视频数据的时间戳与当前正在播放的音频数据的时间戳
进行对比,判断同时的音频数据是否播放,是则执行步骤S405,否则继续将视
频数据的时间戳与当前正在播放的音频数据的时间戳进行对比,判断同时的音
频数据是否播放;
在步骤S405中,同步解码播放视频数据,并返回步骤S402判断视频播放 队列中是否还有视频数据需要播放。
在P2P系统中,网络数据传输更容易受到网络情况的限制,在网络情况不 稳定时会造成数据传输错误,作为本发明的一个实施例,在播放端建立一个存 储空间比一般流媒体播放端更大的緩冲区,通过该緩冲区对收到的流媒体数据 进行緩沖,避免在网络情况变化或者P2P系统本身的波动导致网络数据流量时 大时小对音视频数据同步的影响。
在网络环境极其不稳定的情况下,如果通过上述大的緩沖区已经难以调节
时,则对于播放端来说,可能有数据包丢失。由于数据包中的音频数据和视频 数据是同时的(这是通过在发布端进行的上述流媒体数据打包处理所保证的), 所以从理论上来说,只要是播放端收到的流媒体数据包,都是"同时"的。但 由于在视频数据解压缩的过程中,需要一个I帧和P帧,对于解码器来说,能 够正确解码的前提是I帧可以直接解开,而Pl帧则必须依托在此PI帧前的一 个I帧和在这个I帧之后,在P1帧之前的所有P帧才能正确解码。因此,作为 本发明的另一实施例,对于已经丟帧的视频数据包,将数据中的所有P帧都一 致丟弃,除非遇到一个I帧。丢弃的数据包本身还会携带该数据包的时间戳, 并被加入到视频播放队列中,播放端获取到该"已丟弃"的视频数据包时不会 做显示操作,对于播放端的用户来看,则是上一帧的画面。
图5示出了本发明中当网络状况不稳定时,播放端同步播放音视频数据的
实现流程,详述如下
在步骤S501中,解码器线程启动;
在步骤S502中,判断是否有P2P层的流々某体数据包,是则执行步骤S503, 否则继续执行步骤S502;
在步骤S503中,获取P2P层的流媒体数据包;
在步骤S504中,判断获取的P2P流媒体数据包是否与上一个P2P流媒体 数据包连续,是则执行步骤S506,否则执行步骤S505;
在步骤S505中,设置视频数据解码为删除P帧模式,即如果判断流媒体 数据包中的小数据包是P帧时,就将该小数据包删除;
在步骤S506中,判断流媒体数据包中是否还有数据未解码,是则执行步骤 S507,否则返回执行步骤S502;
在步骤S507中,取出流媒体数据小包的包头;
在步骤S508中,根据流媒体数据小包的包头判断该流媒体数据小包是否是 视频数据,是则4丸行步骤S510,否则执行步骤S509;
在步骤S509中,将该流媒体数据小包进行音频解码,并将解码后的数据加
入音频播放队列;
在步骤S510中,判断是否为删除P帧模式,是则执行步骤S512,否则执 行步骤S511;
在步骤S511中,判断当前的视频播放模式是否为加快模式,是则执行步骤 S512,否则执行步骤S513;
在步骤S512中,判断流媒体数据小包是否为I帧,是则执行步骤S513, 否则执行步骤S514;
在步骤S513中,将该流:樣体数据小包进行-f见频解码,并将解码后的数据加 入4见频〗番;改队列;
在步骤S514中,丟弃该流媒体数据小包,并把带有时间戳的空数据加入视 频播放队列。
由于播放端是在P2P系统之上的,所以并不是所有的包都可以完整收到, 在本发明中,对于不完整的包,可以完全丢弃,但对于已经下载了从包头开始 到任意位置(一般要大于一半)的包,由于这些数据包部分完整,即其从包头 到中间是完整的包,可以尝试进行解码操作。特别是当包头有视频的I帧时, 对于这样的数据包,也需要丟弃所有后面的P帧以保证解码的正确进行。
在播放端播放资源较好的情况下,通过上述方案可以保证播放端的正常运 行,但是如果播放端资源不足,例如当播放端出现CPU的使用率为100%的严 重资源不足的情况时,由于解码器线程比较占用CPU,属于耗时操作,则可能 直接导致视频播放队列中的数据不足,则播放视频的线程将发现在音频数据已 经播放完毕时队列中还没有视频数据,则对于播放视频的线程而言,将不可能 做到视频和音频同步。为了解决这个问题,在本发明中,如果播放端出现资源 严重不足的情况,并且播放视频的线程发现该视频和音频数据的时间差已经达 到了一个阀值,则通知解码器线程加快解码,则解码器线程将会丢弃所有的P 帧,只解码I帧。这样,在播放端看到就不是连续的视频图像,但视频和音频 是同步播放的。在播放端资源恢复时,播放视频的线程会发现视频的播放始终
大于音频播放时间戳,并超过一个阀值,则通知解码器线程取消加快,则解码 器线程从它遇到的第一个I帧处开始解码P帧,并继续P帧数据的解码。
图6示出了本发明中在播放端播放资源不足的情况下同步播放音视频数据
的实现流程,详述如下
在步骤S601中,启动视频播放;
在步骤S602中,判断视频播放队列是否有数据,是则执行步骤S603,否 则执行步骤S602;
在步骤S603中,取出一个视频数据小包; 在步骤S604中,获取当前音频数据的播放时间;
在步骤S605中,判断当前播放的视频数据的时间戳与当前播放的音频数据 的时间戳的差是否大于设置的阈值,是则执行步骤S606,否则执行步骤S608;
在步骤S606中,判断当前视频数据的播放模式是否为快进模式,是则执行 步骤S607,否则执行步骤S6U;
在步骤S607中,通知视频解码线程取消快进播放模式;
在步骤S608中,判断当前播放的音频数据的时间戳播放时间与当前播放的 视频数据的时间戳的差是否大于设置的阈值,是则执行步骤S609,否则执行步 骤S611;
在步骤S609中,判断当前视频数据的播放模式是否为快进模式,是则执行 步骤S611,否则执行步骤S610;
在步骤S610中,通知视频解码线程设置为快进模式; 在步骤S611中,解码播放视频数据。
本发明通过发布端对流媒体数据的同步调整编码和播放端的同步解码播 放,保证了 P2P系统中的流媒体数据包中音视频数据的同步,使得系统的后期 开发不会受到现有播放器软件中编码器和解码器的影响,可以对节目的编解码 灵活进行优化,便于系统推广。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明 的4呆护范围之内。
权利要求
1、一种P2P系统中音视频数据的同步方法,其特征在于,所述方法包括下述步骤发布端对音频数据和视频数据进行同步调整,编码生成流媒体数据包;播放端获取所述流媒体数据包后,对流媒体数据包进行解析和解压缩,按时间片同步解码播放流媒体数据包中的音频数据和视频数据。
2、 如权利要求1所述的P2P系统中音视频数据的同步方法,其特征在于, 发布端对音频数据和视频数据进行同步调整时,对于在现场采集的流媒体数据, 将音频数据和视频数据分为不同长度的流媒体数据信息,同时根据参考时钟生 成音频数据和视频数据的时间信息,将音频数据和视频数据打上时间戳。
3、 如权利要求1所述的P2P系统中音视频数据的同步方法,其特征在于, 发布端对音频数据和 >频数据进行同步调整时,对于现场采集的数据,采用采 集时间戳;对于非现场采集的数据,提取々某体文件中的时间戳。
4、 如权利要求2或3所述的P2P系统中音视频数据的同步方法,其特征 在于,播放端对音频数据队列中的音频数据进行播放时,将音频数据的时间戳 与参考时钟的当前时间对比,当音频数据已经到播放时间时解码播放音频数据。
5、 如权利要求2或3所述的P2P系统中音视频数据的同步方法,其特征 在于,播放端对视频数据队列中的视频数据进行播放时,将视频数据的时间戳 与当前正在播放的音频数据的时间戳进行对比,当同时的音频数据播放时,同 步播放该视频数据。
6、 如权利要求l、 2或3所述的P2P系统中音视频数据的同步方法,其特 征在于,所述按时间片同步解码播放流媒体数据包中的音频数据和视频数据的 步骤具体为6.1判断获取的P2P流媒体数据包是否与上一个P2P流媒体数据包连续, 是则执行步骤6.3,否则执行步骤6.2;6.2设置视频数据解码为删除P帧模式,并继续执行步骤6.3; 6.3根据流i某体数据包中的流媒体数据小包的包头判断该流媒体数据小包 是否是视频数据,是则执行步骤6.5,否则执行步骤6.4;6.4将该流々某体数据小包进行音频解码,并将解码后的数据加入音频播放队列;6.5判断是否为删除P帧模式,是则执行步骤6.7,否则执行步骤6.6; 6.6判断当前的视频播放是否为加快模式,是则执行步骤6.7,否则执行步 骤6.8;6.7判断数据包是否为I帧,是则执行步骤6.8,否则执行步骤6.9;6.8将该流媒体数据小包进行视频解码,并将解码后的数据加入视频播放队列;6.9丢弃该流i某体数据小包,并把带有时间戳的空数据加入视频播放队列。
7、 如权利要求l、 2或3所述的P2P系统中音视频数据的同步方法,其特 征在于,所述按时间片同步解码播放流媒体数据包中的音频数据和视频数据的 步骤具体为7.1判断当前播放的视频数据的时间戳与当前播放的音频数据的时间戳的 差是否大于设置的阈值,是则执行步骤7.2,否则执行步骤7.4;7.2判断当前视频数据的播放模式是否为快进播放模式,是则执行步骤7.3, 否则执行步骤7.7;7.3通知^L频解码线程取消快进播放模式;7.4判断当前播放的音频数据的时间戳与当前播放的视频数据的时间戳的 差是否大于设置的阈值,是则执行步骤7.5,否则执行步骤7.7;7.5判断当前视频数据的播放模式是否为快进播放模式,是则执行步骤7.7, 否则执行步骤7.6;7.6通知视频解码线程设置为快进播放模式; 7.7解码播》i^见频数据。
8、 如权利要求l、 2或3所述的P2P系统中音视频数据的同步方法,其特征在于,发布端将同步调整后的音频数据和视频数据进行编码时,采取视频包 和音频包交替的方式。
9、如权利要求1、 2或3所述的P2P系统中音视频数据的同步方法,其特 征在于,播放端获取所述流媒体数据包后,按照视频包和音频包交替的方式对 流媒体数据包进行解析。
全文摘要
本发明适用于流媒体传输领域,提供了一种P2P系统中音视频数据的同步方法,所述方法包括下述步骤发布端对音频数据和视频数据进行同步调整,编码生成流媒体数据包;播放端获取所述流媒体数据包后,对流媒体数据包进行解析和解压缩,按时间片同步解码播放流媒体数据包中的音频数据和视频数据。在本发明中,发布端对流媒体数据包同步调整,编码生成流媒体数据包,播放端获取发布端同步调整后的流媒体数据包后,对流媒体数据包进行解析,按时间片同步解码播放音频数据和视频数据,并在网络状况不稳定或者播放端资源不足的情况下通过跳帧方式保持音频数据和视频数据播放的同步,使得系统的后期开发不会受到编解码器的影响。
文档编号H04N7/60GK101193311SQ20061015773
公开日2008年6月4日 申请日期2006年12月21日 优先权日2006年12月21日
发明者刘一兰, 波 吴, 张宝和, 斌 方 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1