点对点实时视频传输方法及其传输系统的制作方法

文档序号:7807842阅读:353来源:国知局
点对点实时视频传输方法及其传输系统的制作方法
【专利摘要】本发明涉及互联网视频传输【技术领域】,公开了一种点对点实时视频传输方法及其传输系统。本发明中,通过同时在设备端(发送端)以及用户端(接收端)建立缓冲池,建立一套有效的管理方法将这种丢弃数据的情形变成可控而且高效化,并且判断是否需要丢弃或重传特定数据,更能适用于公共网络的应用,即使在网络不理想的情况下,排除了旧数据堵塞妨碍及时数据的传输问题,能够保持视频的实时性以及更佳的连贯性,提高了互联网点对点实时视频传输的成功率。
【专利说明】点对点实时视频传输方法及其传输系统

【技术领域】
[0001] 本发明涉及互联网视频传输【技术领域】,特别涉及一种点对点实时视频传输方法及 其传输系统。

【背景技术】
[0002] 现有民用市场的互联网的视频监控其传输模式包括P2P (Peer To Peer,点对点直 连)。P2P是一种面向一般大众使用的视频监控系统,需要分布式的设备安装,以及低廉的 运营成本。
[0003] 但是现有的P2P技术需要设备端(数据发送端)与用户端(数据接收端)双方建 立连接之后,才能开始传输数据,这样会导致传输数据时的延迟时间比较长,即使接收端接 收到数据,也会因为数据过时而无法使用。
[0004] 另外,由于用户对视频实时性的要求越来越高,TCP (Transmission Control Protocol,传输控制协议)在大部分的网络环境里,已经无法满足需求。此外,标准 UDP(User Datagram Protocol,用户数据报协议)不具备数据重传的机制,会造成大量数据 丢失。目前部分商用系统也有在标准UDP协议下,建立数据重传的机制,但在视频实时性上 未能达到要求,仍然无法满足用户对视频完整性的要求。
[0005] 综上所述,目前的互联网视频监控的传输方法的实时性低,使得用户感知度低。


【发明内容】

[0006] 本发明的目的在于提供一种点对点实时视频传输方法及其传输系统,使得视频传 输的实时性得以保持,并获得更佳的连贯性,提高互联网点对点实时视频传输的成功率。
[0007] 为解决上述技术问题,本发明的实施方式提供了一种点对点实时视频传输方法, 包含以下步骤:
[0008] S1、发送端在视频编码时,为视频数据包添加标签,所述标签包含:所述视频数据 包的编码时间及是否包含巾贞内编码I巾贞;
[0009] S2、发送端将待发送的视频数据包存放在发送端缓冲池中;
[0010] S3、发送端和接收端成功建立P2P连接后,发送端将所述发送端缓冲池中第一预 设小区内存放的视频数据包作为当前发送数据发送出去;
[0011] S4、接收端将接收的数据存放在接收端缓冲池中;
[0012] S5、接收端将接收端缓冲池的第二预设小区内的视频数据包作为当前播放数据进 行解码播放;
[0013] 其中,预先在发送端和接收端分别建立所述发送端缓冲池和所述接收端缓冲池, 所述发送端缓冲池用于存放已经发送的视频数据包和待发送的视频数据包,所述接收端缓 冲池用于存放接收到但还未使用的视频数据包;所述发送端缓冲池和所述接收端缓冲池分 别进行分区并编号管理,每一个小区内存储一个视频数据包。
[0014] 本发明的实施方式还提供了一种点对点实时视频传输系统,包含:发送端和接收 端;所述发送端包含:视频编码模块、发送端缓冲池和发送模块;所述接收端包含:接收模 块、接收端缓冲池和解码播放模块;
[0015] 所述视频编码模块用于在视频编码时,为视频数据包添加标签,所述标签包含:所 述视频数据包的编码时间及是否包含帧内编码I帧;
[0016] 所述发送端缓冲池用于存放已经发送的视频数据包和待发送的视频数据包;
[0017] 所述发送模块用于在发送端和接收端成功建立P2P连接后,将所述发送端缓冲池 中第一预设小区内存放的视频数据包作为当前发送数据发送出去;
[0018] 所述接收模块用于接收来自发送端的数据;
[0019] 所述接收端缓冲池用于存放接收到但还未使用的视频数据包;
[0020] 所述解码播放模块用于读取所述接收端缓冲池的第二预设小区内的视频数据包 作为当前播放数据进行播放;
[0021] 其中,预先在发送端和接收端分别建立所述发送端缓冲池和所述接收端缓冲池, 所述发送端缓冲池和所述接收端缓冲池分别进行分区并编号管理,每一个小区内存储一个 视频数据包。
[0022] 本发明实施方式相对于现有技术而言,更能适用于公共网络的应用,即使在网络 不理想的情况下,排除了旧数据堵塞妨碍及时数据的传输问题,能够保持视频的实时性以 及更佳的连贯性,提高了互联网点对点实时视频传输的成功率。
[0023] 另外,所述发送端缓冲池内的数据以发送指针管理,所述接收端缓冲池内的数据 以接收端指针管理;所述发送指针与所述发送端缓冲池的小区编号一一对应,所述接收指 针与所述接收端缓冲池的小区编号一一对应;
[0024] 所述发送端缓冲池和所述接收端缓冲池的小区编号分别保持固定不变,且其前后 顺序不变;
[0025] 所述发送指针的编号连续且循环,其值根据发送端发送数据情况实时修改;
[0026] 所述接收指针的编号连续且循环,其值根据接收端接收数据情况实时修改。
[0027] 另外,为了标记小区内含是否有解码所需重要帧(I帧),在所述步骤S2中,包含以 下子步骤:
[0028] 在每一个小区的发送指针中添加第一旗号FLAG1,所述FLAG1用于标记所述发送 指针对应小区内的数据是否包含I帧数据;
[0029] 其中,所述FLAG1为1,代表有I帧数据;所述FLAG1为0,代表没有I帧数据。
[0030] 另外,在发送端缓冲池写满时,通过保留包含I帧视频数据包的小区,清空不包含 I帧视频数据包的小区,保留关键解码信息,以便接收端解码播放时,能给出参考。具体地 说,在所述步骤S2中,包含以下子步骤:
[0031] 在向所述发送端缓冲池写入数据时,如果写入小区的发送指针指向最大编号的小 区,则:
[0032] 从所述第一预设小区开始查找,找到所述FLAG1为1的小区;
[0033] 清空所述第一预设小区至所述找到的FLAG1为1的小区之间小区存放的数据;计 算所述找到的FLAG1为1的小区对应的编号与所述第一预设小区的编号之间的第一差值;
[0034] 将所述找到的FLAG1为1的小区作为第一预设的小区,所述找到的FLAG1为1的 小区之后的小区编号分别减去所述第一差值。
[0035] 另外,在所述步骤S2之后,所述步骤S3之前,还包含以下步骤:
[0036] 在P2P连接成功时,查找最后一个FLAG1为1的小区,并计算所述最后一个FLAG1 为1的小区的发送指针编号与所述第一预设小区编号的第二差值;
[0037] 将所述最后一个FLAG1为1的小区的发送指针编号变更为第一预设小区编号;
[0038] 将所有小区的发送指针编号都减去所述第二差值。
[0039] 另外,在所述步骤S3之后,还包含以下步骤:
[0040] 如果发送端成功发送缓冲池小区的数据,则将发送端缓冲池内小区的发送指针编 号全部减1。
[0041] 在成功发送缓冲池小区的数据时,通过发送指针全部减1,以更新发送缓冲池内数 据的时间,保证发送缓冲池内数据的时间性。
[0042] 另外,为了标记小区内含是否有解码所需重要帧(比如,I帧),在所述步骤S4中, 包含以下子步骤:
[0043] 在每一个小区的接收指针中添加第二旗号FLAG2,所述FLAG2用于标记所述接收 指针对应小区内的数据是否包含I帧数据;
[0044] 其中,所述FLAG2为1,代表有I帧数据;所述FLAG2为0,代表没有I帧数据。
[0045] 另外,在所述步骤S4中,包含以下子步骤:
[0046] 在向所述接收端缓冲池写入数据时,如果写入小区的接收指针指向最大编号的小 区,则:
[0047] 从所述第二预设小区开始查找,找到所述FLAG2为1的小区;
[0048] 清空所述第二预设小区至所述找到的FLAG2为1的小区之间小区存放的数据;计 算所述找到的FLAG2为1的小区对应的编号与所述第二预设小区的编号之间的第三差值;
[0049] 将所述找到的FLAG2为1的小区作为第二预设的小区,所述找到的FLAG2为1的 小区之后的小区编号分别减去所述第三差值。
[0050] 另外,在所述步骤S5之后,还包含以下步骤:
[0051] 在接收端有效缓冲池的2个I帧之间检查视频数据包的封包编号,如有空缺,则检 查前一个封包的编码时间;
[0052] 如果所述前一个封包的编码时间与当前时间的时间差小于3秒,则接收端向发送 端发命令,请求发送端重传所述空缺的封包。
[0053] 另外,在所述步骤S5之后,还包含以下步骤:
[0054] 在接收端小区数据被成功解码播放后,将所有接收指针的编号减1。
[0055] 另外,在所述步骤S5之后,还包含以下步骤:
[0056] 播放程序从接收端缓冲池的第二预设小区取得数据加以解码播放;
[0057] 如果解码时取得的编码时间是3秒之内,则继续从下一个接收指针编号的小区取 得数据加以解码播放;如果解码时取得的编码时间是3秒之前,则直接查找下一个FLAG2为 1的缓冲池小区,并且将该小区接收指针编号为〇,同时将所有接收指针流水号依据相应关 系,重新编排;
[0058] 播放程序从新的FLAG2为1的小区开始解码播放。

【专利附图】

【附图说明】
[0059] 图1是根据本发明第一实施方式的点对点实时视频传输方法的流程图;
[0060] 图2是根据本发明第一实施方式的点对点实时视频传输方法中缓冲池工作示意 图;
[0061] 图3是根据本发明第二实施方式的点对点实时视频传输系统的结构示意图;。

【具体实施方式】
[0062] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实 施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中, 为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基 于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方 案。
[0063] 本发明的第一实施方式涉及一种点对点实时视频传输方法,该方法设计了传输缓 冲池管理,并且在UDP协议上添加自有模块,判断是否需要丢弃或重传特定数据;还建立一 套有效的管理方法将这种丢弃数据的情形变成可控而且高效化。
[0064] 图1所示是缓冲池工作示意图,其工作过程如下:
[0065] a.发送端建立缓冲池48个小区,编号0?47,对应初始化发送指针编号0?47.
[0066] b.接收端建立缓冲池32个小区,编号0?31,对应初始化接收指针编号0?31 [0067] (1) P2P (Peer to Peer, P2P)连接成功,(2)开始传输数据,以发送指针管理发送端 数据的实时性,以接收指针管理接收到的数据的实时性。(3)以I帧标记为丢弃无效数据单 位,发现有效数据被丢包的情况可以要求重传特定封包,弥补UDP协议的缺点,提高视频播 放的连贯性。
[0068] 以下分别图1中对各部分进行说明:
[0069] 本发明同时在设备端(发送端)以及用户端(接收端)建立缓冲池。缓冲池大小 的设计依据视频流大小计算而得;比如,为了保存前3秒已经传输的的数据以及保证3秒内 新数据的不会遗失,以512Kb码流为例,6秒钟的缓冲需要3Mb的空间。
[0070] -、视频编码:一般指摄像头的编码模块。
[0071] 在视频数据包添加标签,注明编码时间以及该封包是否包含I Frame(帧内编码 帧)。
[0072] 具体地说,可以通过摄像头的编码模块进行视频编码,摄像头的编码模块可以在 视频数据包添加标签,注明编码时间(也就是,在数据的封包里含有时间的数据)以及该封 包是否包含I Frame (帧内编码帧)。比如说,可以通过FLAG来标识,若是FLAG为1,证明 包含I帧,若是FLAG为0,证明不包含I帧。
[0073] 二、发送端:一般指摄像头的网络模块。
[0074] (1)在发送端建立3Mb的缓冲池存放已经发送和需要发送的数据。将发送端缓冲 池分成48个64Kb的小区,每一个小区都编上流水号0至47,各个小区是连续而且循环,小 区的流水号编号保持固定不变,而且其前后顺序不变,流水号47的小区其后是流水号为0 的小区。
[0075] (2)将发送端缓冲池的每一个小区都初始化编上对应的流水号0至47作为发送指 针,发送指针流水号为连续而且循环,发送指针流水号受程序控制修改,7减1为46,1减1 为〇,〇减1为47,依次类推。
[0076] 也就是说,发送端缓冲池内的数据以发送指针管理,发送指针与发送端缓冲池的 小区编号一一对应,发送端缓冲池的小区编号保持固定不变,且其前后顺序不变;发送指针 的编号连续且循环,其值根据发送端发送数据情况实时修改。比如说,
[0077] (3)储存在发送端缓冲池发送指针24(第一预设小区)的小区数据为当前发送数 据,发送指针〇?23的小区保存了已经发送的最近3秒以上的数据。通过保存前3秒已经 传输的的数据以及保证3秒内新数据的不会遗失,已备重传。
[0078] (4)在发送端缓冲池每一个小区发送指针添加 Flag (旗号),1代表有I帧数据,0 代表没有I帧数据。
[0079] 也就是说,为了标记小区内含是否有解码所需重要帧(I帧),可以在每一个小区 的发送指针中添加第一旗号FLAG1,FLAG1用于标记发送指针对应小区内的数据是否包含I 帧数据;其中,FLAG1为1,代表有I帧数据;FLAG1为0,代表没有I帧数据。
[0080] (5)在向发送端缓冲池写入数据的时,检查写入小区的发送指针,比如,如果大于 46 (代表3秒以前的数据还没有被送出去),则清空发送指针24号以后的小区,直到下一个 I帧数据小区被找到并且被编号为发送指针24。其他所有小区的编号都减去相同的数值, 保持如后关系。
[0081] 举例来说,如果写入小区的发送指针指向最大编号的小区(比如47号小区),则从 第一预设小区(比如,24号小区)开始查找,找到FLAG1为1的小区(比如,31号小区); 清空第一预设小区至找到的FLAG1为1的小区之间小区存放的数据(在本例中是:25至30 号小区);计算找到的FLAG1为1的小区对应的编号与第一预设小区的编号之间的第一差 值(在本例中为7);将找到的FLAG1为1的小区作为第一预设的小区(31变为24),找到的 FLAG1为1的小区之后的小区编号分别减去第一差值(32至47均减去7)。
[0082] (6)在P2P连接成功时,将最后一个有I帧的小区的发送指针编号变更为24,其它 所有小区的发送指针编号都减去相同的数值,保持前后关系。
[0083] 举例来说,在P2P连接成功时,查找最后一个FLAG1为1的小区(比如40),并计 算最后一个FLAG1为1的小区的发送指针编号与第一预设小区编号(比如24)的第二差值 (40-24 = 16);将最后一个FLAG1为1的小区的发送指针编号变更为第一预设小区编号(40 变更为24);将所有小区的发送指针编号都减去第二差值。简单来说,在P2P连接成功时, 将最后一个有I帧的小区的发送指针编号变更为24,其它所有小区的发送指针编号都减去 相同的数值,保持前后关系。
[0084] (7)在发送端成功发送缓冲池小区的数据后,将发送端缓冲池内小区的发送指针 编号全部减1,以确保更新数据的时间性。
[0085] 三、接收端:一般指用户电脑的客户端。
[0086] (1)在接收端建立接收端缓冲池存放接收到但还没有使用的数据。
[0087] 仍以512Kb码流为例,3秒数据最多1. 5Mb,但为了确保发送完整,保留最后一秒数 据,所以接收端缓冲池的容量需要512KX4 = 2Mb。其他情况下的接收端缓冲池的容量可根 据码流、需缓存的数据量计算得到。
[0088] (2)在接收端缓冲池分成32个64Kb的小区,在接收端缓冲池每一个小区都编上流 水号0至31,各个小区是连续而且循环,小区的流水号编号保持固定不变,而且其前后顺序 不变,流水号31的小区其后是流水号为0的小区。
[0089] 也就是说,接收端缓冲池内的数据以接收端指针管理,接收指针与接收端缓冲池 的小区编号一一对应;接收端缓冲池的小区编号保持固定不变,且其前后顺序不变;接收 指针的编号连续且循环,其值根据接收端接收数据情况实时修改。为了保证接收到的每个 数据包的大小和发送端是一样的,从而也可以确定出缓冲池的个数。
[0090] (3)将接收端缓冲池每一个小区都初始化编上流水号0至31作为接收指针,接收 指针流水号受程序控制修改,接收指针流水号为连续而且循环,31减1为30,1减1为0,0 减1为31,依次类推。
[0091] (4)在接收端缓冲池每一个小区接收指针添加 Flag (旗号),代表有或没有I帧数 据。
[0092] 具体地说,为了标记小区内含是否有解码所需重要帧(I帧),在每一个小区的接 收指针中添加第二旗号FLAG2,FLAG2用于标记接收指针对应小区内的数据是否包含I帧数 据;其中,FLAG2为1,代表有I帧数据;FLAG2为0,代表没有I帧数据。
[0093] (5)储存在接收端缓冲池接收指针0的小区的数据作为当前播放数据。在接收端 缓冲池写入数据的时候,检查写入小区的接收指针,如果大于30代表3秒以前的数据还没 有被播放,则清空接收指针〇号小区以后的小区,直到下一个I帧数据小区被找到,而且其 接收指针被编号为〇。多保留8个小区是为了确保I帧被完整保存,3秒内的P帧能被解码 使用,增加有效数据比率。
[0094] 举例来说,如果写入小区的接收指针指向最大编号的小区(31),也就是接收端缓 冲池已经写满,则:从第二预设小区开始查找,找到FLAG2为1的小区(比如:9号);清空 第二预设小区至找到的FLAG2为1的小区之间小区存放的数据(1至8号);计算找到的 FLAG2为1的小区对应的编号与第二预设小区的编号之间的第三差值(9);将找到的FLAG2 为1的小区作为第二预设的小区(9变更为0),找到的FLAG2为1的小区之后的小区编号分 别减去第二差值(10至31均减去9)。
[0095] (6)解码播放程序在接收端有效缓冲池的2个I帧之间检查封包编号,如有空缺, 则检查前一个封包的时间戳(也就是,封包的编码时间),如果前一个封包的编码时间与当 前时间的时间差小于3秒,则接收端向发送端发命令,请求发送端重传空缺的封包。而发送 端收到重传请求之后,在发送端缓冲池中查找空缺的封包,若找到,则发送给接收端。
[0096] (7)在接收端小区数据被成功解码播放后,将所有接收端接收指针的编号减1。
[0097] 四、视频播放:一般指客户端的播放程序。
[0098] (1)播放程序从接收端缓冲池接收指针为0的小区取得数据加以解码播放。
[0099] (2)解码时取得的时间戳(也就是,封包的编码时间),如果是3秒之内,则继续从 下一个接收指针编号的小区取得数据加以解码播放。解码时取得的时间戳,如果是3秒之 前,则直接查找下一个I帧的接收端缓冲池小区,并且将该小区接收指针编号为〇,同时将 所有接收指针流水号依据相应关系,重新编排。
[0100] (3)播放程序从新的I帧的小区开始解码播放,并且继续重复上一步骤。
[0101] 与市场现有产品技术相比,本实施方式通过同时在设备端(发送端)以及用户端 (接收端)建立缓冲池,建立一套有效的管理方法将这种丢弃数据的情形变成可控而且高 效化,并且判断是否需要丢弃或重传特定数据,更能适用于公共网络的应用,即使在网络不 理想的情况下,排除了旧数据堵塞妨碍及时数据的传输问题,能够保持视频的实时性以及 更佳的连贯性,提高了互联网点对点实时视频传输的成功率。
[0102] 以上根据图1详细说明了本发明的各部分,现对上述流程进行总结,如图2所示, 包含以下步骤:
[0103] 步骤201,发送端在视频编码时,为视频数据包添加标签,标签包含:视频数据包 的编码时间及是否包含巾贞内编码I巾贞;
[0104] 步骤202,发送端将待发送的视频数据包存放在发送端缓冲池中;
[0105] 步骤203,发送端和接收端成功建立P2P连接后,发送端将发送端缓冲池中第一预 设小区内存放的视频数据包作为当前发送数据发送出去;
[0106] 步骤204,接收端将接收的数据存放在接收端缓冲池中;
[0107] 步骤205,接收端将接收端缓冲池的第二预设小区内的视频数据包作为当前播放 数据进行解码播放。
[0108] 其中,预先在发送端和接收端分别建立发送端缓冲池和接收端缓冲池,发送端缓 冲池用于存放已经发送的视频数据包和待发送的视频数据包,接收端缓冲池用于存放接收 到但还未使用的视频数据包;发送端缓冲池和接收端缓冲池分别进行分区并编号管理,每 一个小区内存储一个视频数据包。
[0109] 上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者 对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围 内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法 和流程的核心设计都在该专利的保护范围内。
[0110] 本发明的第二实施方式涉及一种点对点实时视频传输系统,如图3所示,包含:发 送端和接收端;该发送端包含:视频编码模块、发送端缓冲池和发送模块;该接收端包含: 接收模块、接收端缓冲池和解码播放模块;
[0111] 视频编码模块用于在视频编码时,为视频数据包添加标签,标签包含:视频数据包 的编码时间及是否包含巾贞内编码I巾贞;
[0112] 发送端缓冲池用于存放已经发送的视频数据包和待发送的视频数据包;
[0113] 发送模块用于在发送端和接收端成功建立P2P连接后,将发送端缓冲池中第一预 设小区内存放的视频数据包作为当前发送数据发送出去;
[0114] 接收模块用于接收来自发送端的数据;
[0115] 接收端缓冲池用于存放接收到但还未使用的视频数据包;
[0116] 解码播放模块用于读取接收端缓冲池的第二预设小区内的视频数据包作为当前 播放数据进行播放;
[0117] 其中,预先在发送端和接收端分别建立发送端缓冲池和接收端缓冲池,发送端缓 冲池和接收端缓冲池分别进行分区并编号管理,每一个小区内存储一个视频数据包。
[0118] 不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与 第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有 效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在 第一实施方式中。
[0119] 值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一 个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单 元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明 所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单 J Li 〇
[0120] 本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例, 而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
【权利要求】
1. 一种点对点实时视频传输方法,其特征在于,包含以下步骤: 51、 发送端在视频编码时,为视频数据包添加标签,所述标签包含:所述视频数据包的 编码时间及是否包含巾贞内编码I巾贞; 52、 发送端将待发送的视频数据包存放在发送端缓冲池中; 53、 发送端和接收端成功建立P2P连接后,发送端将所述发送端缓冲池中第一预设小 区内存放的视频数据包作为当前发送数据发送出去; 54、 接收端将接收的数据存放在接收端缓冲池中; 55、 接收端将接收端缓冲池的第二预设小区内的视频数据包作为当前播放数据进行解 码播放; 其中,预先在发送端和接收端分别建立所述发送端缓冲池和所述接收端缓冲池,所述 发送端缓冲池用于存放已经发送的视频数据包和待发送的视频数据包,所述接收端缓冲池 用于存放接收到但还未使用的视频数据包;所述发送端缓冲池和所述接收端缓冲池分别进 行分区并编号管理,每一个小区内存储一个视频数据包。
2. 根据权利要求1所述的点对点实时视频传输方法,其特征在于,所述发送端缓冲池 内的数据以发送指针管理,所述接收端缓冲池内的数据以接收端指针管理;所述发送指针 与所述发送端缓冲池的小区编号一一对应,所述接收指针与所述接收端缓冲池的小区编号 --对应; 所述发送端缓冲池和所述接收端缓冲池的小区编号分别保持固定不变,且其前后顺序 不变; 所述发送指针的编号连续且循环,其值根据发送端发送数据情况实时修改; 所述接收指针的编号连续且循环,其值根据接收端接收数据情况实时修改。
3. 根据权利要求2所述的点对点实时视频传输方法,其特征在于,在所述步骤S2中,包 含以下子步骤: 在每一个小区的发送指针中添加第一旗号FLAG1,所述FLAG1用于标记所述发送指针 对应小区内的数据是否包含I帧数据; 其中,所述FLAG1为1,代表有I帧数据;所述FLAG1为0,代表没有I帧数据。
4. 根据权利要求3所述的点对点实时视频传输方法,其特征在于,在所述步骤S2中,包 含以下子步骤: 在向所述发送端缓冲池写入数据时,如果写入小区的发送指针指向最大编号的小区, 则: 从所述第一预设小区开始查找,找到所述FLAG1为1的小区; 清空所述第一预设小区至所述找到的FLAG1为1的小区之间小区存放的数据;计算所 述找到的FLAG1为1的小区对应的编号与所述第一预设小区的编号之间的第一差值; 将所述找到的FLAG1为1的小区作为第一预设的小区,所述找到的FLAG1为1的小区 之后的小区编号分别减去所述第一差值。
5. 根据权利要求3所述的点对点实时视频传输方法,其特征在于,在所述步骤S2之后, 所述步骤S3之前,还包含以下步骤: 在P2P连接成功时,查找最后一个FLAG1为1的小区,并计算所述最后一个FLAG1为1 的小区的发送指针编号与所述第一预设小区编号的第二差值; 将所述最后一个FLAG1为1的小区的发送指针编号变更为第一预设小区编号; 将所有小区的发送指针编号都减去所述第二差值。
6. 根据权利要求3所述的点对点实时视频传输方法,其特征在于,在所述步骤S3之后, 还包含以下步骤: 如果发送端成功发送缓冲池小区的数据,则将发送端缓冲池内小区的发送指针编号全 部减1。
7. 根据权利要求2所述的点对点实时视频传输方法,其特征在于,在所述步骤S4中,包 含以下子步骤: 在每一个小区的接收指针中添加第二旗号FLAG2,所述FLAG2用于标记所述接收指针 对应小区内的数据是否包含I帧数据; 其中,所述FLAG2为1,代表有I帧数据;所述FLAG2为0,代表没有I帧数据。
8. 根据权利要求7所述的点对点实时视频传输方法,其特征在于,在所述步骤S4中,包 含以下子步骤: 在向所述接收端缓冲池写入数据时,如果写入小区的接收指针指向最大编号的小区, 则: 从所述第二预设小区开始查找,找到所述FLAG2为1的小区; 清空所述第二预设小区至所述找到的FLAG2为1的小区之间小区存放的数据;计算所 述找到的FLAG2为1的小区对应的编号与所述第二预设小区的编号之间的第三差值; 将所述找到的FLAG2为1的小区作为第二预设的小区,所述找到的FLAG2为1的小区 之后的小区编号分别减去所述第三差值。
9. 根据权利要求7所述的点对点实时视频传输方法,其特征在于,在所述步骤S5之后, 还包含以下步骤: 在接收端有效缓冲池的2个I帧之间检查视频数据包的封包编号,如有空缺,则检查前 一个封包的编码时间; 如果所述前一个封包的编码时间与当前时间的时间差小于3秒,则接收端向发送端发 命令,请求发送端重传所述空缺的封包; 发送端收到所述重传请求之后,在发送端缓冲池中查找所述空缺的封包,若找到,则发 送给所述接收端。
10. 根据权利要求7所述的点对点实时视频传输方法,其特征在于,在所述步骤S5之 后,还包含以下步骤: 在接收端小区数据被成功解码播放后,将所有接收指针的编号减1。
11. 根据权利要求7所述的点对点实时视频传输方法,其特征在于,在所述步骤S5之 后,还包含以下步骤: 播放程序从接收端缓冲池的第二预设小区取得数据加以解码播放; 如果解码时取得的编码时间是3秒之内,则继续从下一个接收指针编号的小区取得数 据加以解码播放;如果解码时取得的编码时间是3秒之前,则直接查找下一个FLAG2为1的 缓冲池小区,并且将该小区接收指针编号为0,同时将所有接收指针流水号依据相应关系, 重新编排; 播放程序从新的FLAG2为1的小区开始解码播放。
12. -种点对点实时视频传输系统,其特征在于,包含:发送端和接收端;所述发送端 包含:视频编码模块、发送端缓冲池和发送模块;所述接收端包含:接收模块、接收端缓冲 池和解码播放模块; 所述视频编码模块用于在视频编码时,为视频数据包添加标签,所述标签包含:所述视 频数据包的编码时间及是否包含帧内编码I帧; 所述发送端缓冲池用于存放已经发送的视频数据包和待发送的视频数据包; 所述发送模块用于在发送端和接收端成功建立P2P连接后,将所述发送端缓冲池中第 一预设小区内存放的视频数据包作为当前发送数据发送出去; 所述接收模块用于接收来自发送端的数据; 所述接收端缓冲池用于存放接收到但还未使用的视频数据包; 所述解码播放模块用于读取所述接收端缓冲池的第二预设小区内的视频数据包作为 当前播放数据进行播放; 其中,预先在发送端和接收端分别建立所述发送端缓冲池和所述接收端缓冲池,所述 发送端缓冲池和所述接收端缓冲池分别进行分区并编号管理,每一个小区内存储一个视频 数据包。
【文档编号】H04N7/18GK104092982SQ201410308718
【公开日】2014年10月8日 申请日期:2014年6月30日 优先权日:2014年6月30日
【发明者】郑俊彦 申请人:上海国兆电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1