CN104092982A - 点对点实时视频传输方法及其传输系统 - Google Patents
点对点实时视频传输方法及其传输系统 Download PDFInfo
- Publication number
- CN104092982A CN104092982A CN201410308718.7A CN201410308718A CN104092982A CN 104092982 A CN104092982 A CN 104092982A CN 201410308718 A CN201410308718 A CN 201410308718A CN 104092982 A CN104092982 A CN 104092982A
- Authority
- CN
- China
- Prior art keywords
- data
- community
- transmitting terminal
- buffer pool
- numbering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及互联网视频传输技术领域,公开了一种点对点实时视频传输方法及其传输系统。本发明中,通过同时在设备端(发送端)以及用户端(接收端)建立缓冲池,建立一套有效的管理方法将这种丢弃数据的情形变成可控而且高效化,并且判断是否需要丢弃或重传特定数据,更能适用于公共网络的应用,即使在网络不理想的情况下,排除了旧数据堵塞妨碍及时数据的传输问题,能够保持视频的实时性以及更佳的连贯性,提高了互联网点对点实时视频传输的成功率。
Description
技术领域
本发明涉及互联网视频传输技术领域,特别涉及一种点对点实时视频传输方法及其传输系统。
背景技术
现有民用市场的互联网的视频监控其传输模式包括P2P(Peer To Peer,点对点直连)。P2P是一种面向一般大众使用的视频监控系统,需要分布式的设备安装,以及低廉的运营成本。
但是现有的P2P技术需要设备端(数据发送端)与用户端(数据接收端)双方建立连接之后,才能开始传输数据,这样会导致传输数据时的延迟时间比较长,即使接收端接收到数据,也会因为数据过时而无法使用。
另外,由于用户对视频实时性的要求越来越高,TCP(Transmission ControlProtocol,传输控制协议)在大部分的网络环境里,已经无法满足需求。此外,标准UDP(User Datagram Protocol,用户数据报协议)不具备数据重传的机制,会造成大量数据丢失。目前部分商用系统也有在标准UDP协议下,建立数据重传的机制,但在视频实时性上未能达到要求,仍然无法满足用户对视频完整性的要求。
综上所述,目前的互联网视频监控的传输方法的实时性低,使得用户感知度低。
发明内容
本发明的目的在于提供一种点对点实时视频传输方法及其传输系统,使得视频传输的实时性得以保持,并获得更佳的连贯性,提高互联网点对点实时视频传输的成功率。
为解决上述技术问题,本发明的实施方式提供了一种点对点实时视频传输方法,包含以下步骤:
S1、发送端在视频编码时,为视频数据包添加标签,所述标签包含:所述视频数据包的编码时间及是否包含帧内编码I帧;
S2、发送端将待发送的视频数据包存放在发送端缓冲池中;
S3、发送端和接收端成功建立P2P连接后,发送端将所述发送端缓冲池中第一预设小区内存放的视频数据包作为当前发送数据发送出去;
S4、接收端将接收的数据存放在接收端缓冲池中;
S5、接收端将接收端缓冲池的第二预设小区内的视频数据包作为当前播放数据进行解码播放;
其中,预先在发送端和接收端分别建立所述发送端缓冲池和所述接收端缓冲池,所述发送端缓冲池用于存放已经发送的视频数据包和待发送的视频数据包,所述接收端缓冲池用于存放接收到但还未使用的视频数据包;所述发送端缓冲池和所述接收端缓冲池分别进行分区并编号管理,每一个小区内存储一个视频数据包。
本发明的实施方式还提供了一种点对点实时视频传输系统,包含:发送端和接收端;所述发送端包含:视频编码模块、发送端缓冲池和发送模块;所述接收端包含:接收模块、接收端缓冲池和解码播放模块;
所述视频编码模块用于在视频编码时,为视频数据包添加标签,所述标签包含:所述视频数据包的编码时间及是否包含帧内编码I帧;
所述发送端缓冲池用于存放已经发送的视频数据包和待发送的视频数据包;
所述发送模块用于在发送端和接收端成功建立P2P连接后,将所述发送端缓冲池中第一预设小区内存放的视频数据包作为当前发送数据发送出去;
所述接收模块用于接收来自发送端的数据;
所述接收端缓冲池用于存放接收到但还未使用的视频数据包;
所述解码播放模块用于读取所述接收端缓冲池的第二预设小区内的视频数据包作为当前播放数据进行播放;
其中,预先在发送端和接收端分别建立所述发送端缓冲池和所述接收端缓冲池,所述发送端缓冲池和所述接收端缓冲池分别进行分区并编号管理,每一个小区内存储一个视频数据包。
本发明实施方式相对于现有技术而言,更能适用于公共网络的应用,即使在网络不理想的情况下,排除了旧数据堵塞妨碍及时数据的传输问题,能够保持视频的实时性以及更佳的连贯性,提高了互联网点对点实时视频传输的成功率。
另外,所述发送端缓冲池内的数据以发送指针管理,所述接收端缓冲池内的数据以接收端指针管理;所述发送指针与所述发送端缓冲池的小区编号一一对应,所述接收指针与所述接收端缓冲池的小区编号一一对应;
所述发送端缓冲池和所述接收端缓冲池的小区编号分别保持固定不变,且其前后顺序不变;
所述发送指针的编号连续且循环,其值根据发送端发送数据情况实时修改;
所述接收指针的编号连续且循环,其值根据接收端接收数据情况实时修改。
另外,为了标记小区内含是否有解码所需重要帧(I帧),在所述步骤S2中,包含以下子步骤:
在每一个小区的发送指针中添加第一旗号FLAG1,所述FLAG1用于标记所述发送指针对应小区内的数据是否包含I帧数据;
其中,所述FLAG1为1,代表有I帧数据;所述FLAG1为0,代表没有I帧数据。
另外,在发送端缓冲池写满时,通过保留包含I帧视频数据包的小区,清空不包含I帧视频数据包的小区,保留关键解码信息,以便接收端解码播放时,能给出参考。具体地说,在所述步骤S2中,包含以下子步骤:
在向所述发送端缓冲池写入数据时,如果写入小区的发送指针指向最大编号的小区,则:
从所述第一预设小区开始查找,找到所述FLAG1为1的小区;
清空所述第一预设小区至所述找到的FLAG1为1的小区之间小区存放的数据;计算所述找到的FLAG1为1的小区对应的编号与所述第一预设小区的编号之间的第一差值;
将所述找到的FLAG1为1的小区作为第一预设的小区,所述找到的FLAG1为1的小区之后的小区编号分别减去所述第一差值。
另外,在所述步骤S2之后,所述步骤S3之前,还包含以下步骤:
在P2P连接成功时,查找最后一个FLAG1为1的小区,并计算所述最后一个FLAG1为1的小区的发送指针编号与所述第一预设小区编号的第二差值;
将所述最后一个FLAG1为1的小区的发送指针编号变更为第一预设小区编号;
将所有小区的发送指针编号都减去所述第二差值。
另外,在所述步骤S3之后,还包含以下步骤:
如果发送端成功发送缓冲池小区的数据,则将发送端缓冲池内小区的发送指针编号全部减1。
在成功发送缓冲池小区的数据时,通过发送指针全部减1,以更新发送缓冲池内数据的时间,保证发送缓冲池内数据的时间性。
另外,为了标记小区内含是否有解码所需重要帧(比如,I帧),在所述步骤S4中,包含以下子步骤:
在每一个小区的接收指针中添加第二旗号FLAG2,所述FLAG2用于标记所述接收指针对应小区内的数据是否包含I帧数据;
其中,所述FLAG2为1,代表有I帧数据;所述FLAG2为0,代表没有I帧数据。
另外,在所述步骤S4中,包含以下子步骤:
在向所述接收端缓冲池写入数据时,如果写入小区的接收指针指向最大编号的小区,则:
从所述第二预设小区开始查找,找到所述FLAG2为1的小区;
清空所述第二预设小区至所述找到的FLAG2为1的小区之间小区存放的数据;计算所述找到的FLAG2为1的小区对应的编号与所述第二预设小区的编号之间的第三差值;
将所述找到的FLAG2为1的小区作为第二预设的小区,所述找到的FLAG2为1的小区之后的小区编号分别减去所述第三差值。
另外,在所述步骤S5之后,还包含以下步骤:
在接收端有效缓冲池的2个I帧之间检查视频数据包的封包编号,如有空缺,则检查前一个封包的编码时间;
如果所述前一个封包的编码时间与当前时间的时间差小于3秒,则接收端向发送端发命令,请求发送端重传所述空缺的封包。
另外,在所述步骤S5之后,还包含以下步骤:
在接收端小区数据被成功解码播放后,将所有接收指针的编号减1。
另外,在所述步骤S5之后,还包含以下步骤:
播放程序从接收端缓冲池的第二预设小区取得数据加以解码播放;
如果解码时取得的编码时间是3秒之内,则继续从下一个接收指针编号的小区取得数据加以解码播放;如果解码时取得的编码时间是3秒之前,则直接查找下一个FLAG2为1的缓冲池小区,并且将该小区接收指针编号为0,同时将所有接收指针流水号依据相应关系,重新编排;
播放程序从新的FLAG2为1的小区开始解码播放。
附图说明
图1是根据本发明第一实施方式的点对点实时视频传输方法的流程图;
图2是根据本发明第一实施方式的点对点实时视频传输方法中缓冲池工作示意图;
图3是根据本发明第二实施方式的点对点实时视频传输系统的结构示意图;。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
本发明的第一实施方式涉及一种点对点实时视频传输方法,该方法设计了传输缓冲池管理,并且在UDP协议上添加自有模块,判断是否需要丢弃或重传特定数据;还建立一套有效的管理方法将这种丢弃数据的情形变成可控而且高效化。
图1所示是缓冲池工作示意图,其工作过程如下:
a.发送端建立缓冲池48个小区,编号0~47,对应初始化发送指针编号0~47.
b.接收端建立缓冲池32个小区,编号0~31,对应初始化接收指针编号0~31
(1)P2P(Peer to Peer,P2P)连接成功,(2)开始传输数据,以发送指针管理发送端数据的实时性,以接收指针管理接收到的数据的实时性。(3)以I帧标记为丢弃无效数据单位,发现有效数据被丢包的情况可以要求重传特定封包,弥补UDP协议的缺点,提高视频播放的连贯性。
以下分别图1中对各部分进行说明:
本发明同时在设备端(发送端)以及用户端(接收端)建立缓冲池。缓冲池大小的设计依据视频流大小计算而得;比如,为了保存前3秒已经传输的的数据以及保证3秒内新数据的不会遗失,以512Kb码流为例,6秒钟的缓冲需要3Mb的空间。
一、视频编码:一般指摄像头的编码模块。
在视频数据包添加标签,注明编码时间以及该封包是否包含I Frame(帧内编码帧)。
具体地说,可以通过摄像头的编码模块进行视频编码,摄像头的编码模块可以在视频数据包添加标签,注明编码时间(也就是,在数据的封包里含有时间的数据)以及该封包是否包含I Frame(帧内编码帧)。比如说,可以通过FLAG来标识,若是FLAG为1,证明包含I帧,若是FLAG为0,证明不包含I帧。
二、发送端:一般指摄像头的网络模块。
(1)在发送端建立3Mb的缓冲池存放已经发送和需要发送的数据。将发送端缓冲池分成48个64Kb的小区,每一个小区都编上流水号0至47,各个小区是连续而且循环,小区的流水号编号保持固定不变,而且其前后顺序不变,流水号47的小区其后是流水号为0的小区。
(2)将发送端缓冲池的每一个小区都初始化编上对应的流水号0至47作为发送指针,发送指针流水号为连续而且循环,发送指针流水号受程序控制修改,7减1为46,1减1为0,0减1为47,依次类推。
也就是说,发送端缓冲池内的数据以发送指针管理,发送指针与发送端缓冲池的小区编号一一对应,发送端缓冲池的小区编号保持固定不变,且其前后顺序不变;发送指针的编号连续且循环,其值根据发送端发送数据情况实时修改。比如说,
(3)储存在发送端缓冲池发送指针24(第一预设小区)的小区数据为当前发送数据,发送指针0~23的小区保存了已经发送的最近3秒以上的数据。通过保存前3秒已经传输的的数据以及保证3秒内新数据的不会遗失,已备重传。
(4)在发送端缓冲池每一个小区发送指针添加Flag(旗号),1代表有I帧数据,0代表没有I帧数据。
也就是说,为了标记小区内含是否有解码所需重要帧(I帧),可以在每一个小区的发送指针中添加第一旗号FLAG1,FLAG1用于标记发送指针对应小区内的数据是否包含I帧数据;其中,FLAG1为1,代表有I帧数据;FLAG1为0,代表没有I帧数据。
(5)在向发送端缓冲池写入数据的时,检查写入小区的发送指针,比如,如果大于46(代表3秒以前的数据还没有被送出去),则清空发送指针24号以后的小区,直到下一个I帧数据小区被找到并且被编号为发送指针24。其他所有小区的编号都减去相同的数值,保持前后关系。
举例来说,如果写入小区的发送指针指向最大编号的小区(比如47号小区),则从第一预设小区(比如,24号小区)开始查找,找到FLAG1为1的小区(比如,31号小区);清空第一预设小区至找到的FLAG1为1的小区之间小区存放的数据(在本例中是:25至30号小区);计算找到的FLAG1为1的小区对应的编号与第一预设小区的编号之间的第一差值(在本例中为7);将找到的FLAG1为1的小区作为第一预设的小区(31变为24),找到的FLAG1为1的小区之后的小区编号分别减去第一差值(32至47均减去7)。
(6)在P2P连接成功时,将最后一个有I帧的小区的发送指针编号变更为24,其它所有小区的发送指针编号都减去相同的数值,保持前后关系。
举例来说,在P2P连接成功时,查找最后一个FLAG1为1的小区(比如40),并计算最后一个FLAG1为1的小区的发送指针编号与第一预设小区编号(比如24)的第二差值(40-24=16);将最后一个FLAG1为1的小区的发送指针编号变更为第一预设小区编号(40变更为24);将所有小区的发送指针编号都减去第二差值。简单来说,在P2P连接成功时,将最后一个有I帧的小区的发送指针编号变更为24,其它所有小区的发送指针编号都减去相同的数值,保持前后关系。
(7)在发送端成功发送缓冲池小区的数据后,将发送端缓冲池内小区的发送指针编号全部减1,以确保更新数据的时间性。
三、接收端:一般指用户电脑的客户端。
(1)在接收端建立接收端缓冲池存放接收到但还没有使用的数据。
仍以512Kb码流为例,3秒数据最多1.5Mb,但为了确保发送完整,保留最后一秒数据,所以接收端缓冲池的容量需要512KX4=2Mb。其他情况下的接收端缓冲池的容量可根据码流、需缓存的数据量计算得到。
(2)在接收端缓冲池分成32个64Kb的小区,在接收端缓冲池每一个小区都编上流水号0至31,各个小区是连续而且循环,小区的流水号编号保持固定不变,而且其前后顺序不变,流水号31的小区其后是流水号为0的小区。
也就是说,接收端缓冲池内的数据以接收端指针管理,接收指针与接收端缓冲池的小区编号一一对应;接收端缓冲池的小区编号保持固定不变,且其前后顺序不变;接收指针的编号连续且循环,其值根据接收端接收数据情况实时修改。为了保证接收到的每个数据包的大小和发送端是一样的,从而也可以确定出缓冲池的个数。
(3)将接收端缓冲池每一个小区都初始化编上流水号0至31作为接收指针,接收指针流水号受程序控制修改,接收指针流水号为连续而且循环,31减1为30,1减1为0,0减1为31,依次类推。
(4)在接收端缓冲池每一个小区接收指针添加Flag(旗号),代表有或没有I帧数据。
具体地说,为了标记小区内含是否有解码所需重要帧(I帧),在每一个小区的接收指针中添加第二旗号FLAG2,FLAG2用于标记接收指针对应小区内的数据是否包含I帧数据;其中,FLAG2为1,代表有I帧数据;FLAG2为0,代表没有I帧数据。
(5)储存在接收端缓冲池接收指针0的小区的数据作为当前播放数据。在接收端缓冲池写入数据的时候,检查写入小区的接收指针,如果大于30代表3秒以前的数据还没有被播放,则清空接收指针0号小区以后的小区,直到下一个I帧数据小区被找到,而且其接收指针被编号为0。多保留8个小区是为了确保I帧被完整保存,3秒内的P帧能被解码使用,增加有效数据比率。
举例来说,如果写入小区的接收指针指向最大编号的小区(31),也就是接收端缓冲池已经写满,则:从第二预设小区开始查找,找到FLAG2为1的小区(比如:9号);清空第二预设小区至找到的FLAG2为1的小区之间小区存放的数据(1至8号);计算找到的FLAG2为1的小区对应的编号与第二预设小区的编号之间的第三差值(9);将找到的FLAG2为1的小区作为第二预设的小区(9变更为0),找到的FLAG2为1的小区之后的小区编号分别减去第三差值(10至31均减去9)。
(6)解码播放程序在接收端有效缓冲池的2个I帧之间检查封包编号,如有空缺,则检查前一个封包的时间戳(也就是,封包的编码时间),如果前一个封包的编码时间与当前时间的时间差小于3秒,则接收端向发送端发命令,请求发送端重传空缺的封包。而发送端收到重传请求之后,在发送端缓冲池中查找空缺的封包,若找到,则发送给接收端。
(7)在接收端小区数据被成功解码播放后,将所有接收端接收指针的编号减1。
四、视频播放:一般指客户端的播放程序。
(1)播放程序从接收端缓冲池接收指针为0的小区取得数据加以解码播放。
(2)解码时取得的时间戳(也就是,封包的编码时间),如果是3秒之内,则继续从下一个接收指针编号的小区取得数据加以解码播放。解码时取得的时间戳,如果是3秒之前,则直接查找下一个I帧的接收端缓冲池小区,并且将该小区接收指针编号为0,同时将所有接收指针流水号依据相应关系,重新编排。
(3)播放程序从新的I帧的小区开始解码播放,并且继续重复上一步骤。
与市场现有产品技术相比,本实施方式通过同时在设备端(发送端)以及用户端(接收端)建立缓冲池,建立一套有效的管理方法将这种丢弃数据的情形变成可控而且高效化,并且判断是否需要丢弃或重传特定数据,更能适用于公共网络的应用,即使在网络不理想的情况下,排除了旧数据堵塞妨碍及时数据的传输问题,能够保持视频的实时性以及更佳的连贯性,提高了互联网点对点实时视频传输的成功率。
以上根据图1详细说明了本发明的各部分,现对上述流程进行总结,如图2所示,包含以下步骤:
步骤201,发送端在视频编码时,为视频数据包添加标签,标签包含:视频数据包的编码时间及是否包含帧内编码I帧;
步骤202,发送端将待发送的视频数据包存放在发送端缓冲池中;
步骤203,发送端和接收端成功建立P2P连接后,发送端将发送端缓冲池中第一预设小区内存放的视频数据包作为当前发送数据发送出去;
步骤204,接收端将接收的数据存放在接收端缓冲池中;
步骤205,接收端将接收端缓冲池的第二预设小区内的视频数据包作为当前播放数据进行解码播放。
其中,预先在发送端和接收端分别建立发送端缓冲池和接收端缓冲池,发送端缓冲池用于存放已经发送的视频数据包和待发送的视频数据包,接收端缓冲池用于存放接收到但还未使用的视频数据包;发送端缓冲池和接收端缓冲池分别进行分区并编号管理,每一个小区内存储一个视频数据包。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明的第二实施方式涉及一种点对点实时视频传输系统,如图3所示,包含:发送端和接收端;该发送端包含:视频编码模块、发送端缓冲池和发送模块;该接收端包含:接收模块、接收端缓冲池和解码播放模块;
视频编码模块用于在视频编码时,为视频数据包添加标签,标签包含:视频数据包的编码时间及是否包含帧内编码I帧;
发送端缓冲池用于存放已经发送的视频数据包和待发送的视频数据包;
发送模块用于在发送端和接收端成功建立P2P连接后,将发送端缓冲池中第一预设小区内存放的视频数据包作为当前发送数据发送出去;
接收模块用于接收来自发送端的数据;
接收端缓冲池用于存放接收到但还未使用的视频数据包;
解码播放模块用于读取接收端缓冲池的第二预设小区内的视频数据包作为当前播放数据进行播放;
其中,预先在发送端和接收端分别建立发送端缓冲池和接收端缓冲池,发送端缓冲池和接收端缓冲池分别进行分区并编号管理,每一个小区内存储一个视频数据包。
不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (12)
1.一种点对点实时视频传输方法,其特征在于,包含以下步骤:
S1、发送端在视频编码时,为视频数据包添加标签,所述标签包含:所述视频数据包的编码时间及是否包含帧内编码I帧;
S2、发送端将待发送的视频数据包存放在发送端缓冲池中;
S3、发送端和接收端成功建立P2P连接后,发送端将所述发送端缓冲池中第一预设小区内存放的视频数据包作为当前发送数据发送出去;
S4、接收端将接收的数据存放在接收端缓冲池中;
S5、接收端将接收端缓冲池的第二预设小区内的视频数据包作为当前播放数据进行解码播放;
其中,预先在发送端和接收端分别建立所述发送端缓冲池和所述接收端缓冲池,所述发送端缓冲池用于存放已经发送的视频数据包和待发送的视频数据包,所述接收端缓冲池用于存放接收到但还未使用的视频数据包;所述发送端缓冲池和所述接收端缓冲池分别进行分区并编号管理,每一个小区内存储一个视频数据包。
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连接后,将所述发送端缓冲池中第一预设小区内存放的视频数据包作为当前发送数据发送出去;
所述接收模块用于接收来自发送端的数据;
所述接收端缓冲池用于存放接收到但还未使用的视频数据包;
所述解码播放模块用于读取所述接收端缓冲池的第二预设小区内的视频数据包作为当前播放数据进行播放;
其中,预先在发送端和接收端分别建立所述发送端缓冲池和所述接收端缓冲池,所述发送端缓冲池和所述接收端缓冲池分别进行分区并编号管理,每一个小区内存储一个视频数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410308718.7A CN104092982A (zh) | 2014-06-30 | 2014-06-30 | 点对点实时视频传输方法及其传输系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410308718.7A CN104092982A (zh) | 2014-06-30 | 2014-06-30 | 点对点实时视频传输方法及其传输系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104092982A true CN104092982A (zh) | 2014-10-08 |
Family
ID=51640659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410308718.7A Pending CN104092982A (zh) | 2014-06-30 | 2014-06-30 | 点对点实时视频传输方法及其传输系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104092982A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105656986A (zh) * | 2015-11-26 | 2016-06-08 | 乐视云计算有限公司 | 一种直播视频的播放方法、装置及系统 |
CN107566794A (zh) * | 2017-08-31 | 2018-01-09 | 深圳英飞拓科技股份有限公司 | 一种视频数据的处理方法、系统及终端设备 |
CN107948142A (zh) * | 2017-11-15 | 2018-04-20 | 广州杏雨信息科技有限公司 | 一种3d高清视频点对点实时传输方法及系统 |
-
2014
- 2014-06-30 CN CN201410308718.7A patent/CN104092982A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105656986A (zh) * | 2015-11-26 | 2016-06-08 | 乐视云计算有限公司 | 一种直播视频的播放方法、装置及系统 |
CN107566794A (zh) * | 2017-08-31 | 2018-01-09 | 深圳英飞拓科技股份有限公司 | 一种视频数据的处理方法、系统及终端设备 |
CN107566794B (zh) * | 2017-08-31 | 2020-03-24 | 深圳英飞拓科技股份有限公司 | 一种视频数据的处理方法、系统及终端设备 |
CN107948142A (zh) * | 2017-11-15 | 2018-04-20 | 广州杏雨信息科技有限公司 | 一种3d高清视频点对点实时传输方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109889543B (zh) | 视频传输的方法、根节点、子节点、p2p服务器和系统 | |
CN1859579B (zh) | 传输多媒体数据流的设备和方法 | |
US5918002A (en) | Selective retransmission for efficient and reliable streaming of multimedia packets in a computer network | |
CA2529916C (en) | Retry strategies for use in a streaming environment | |
CN104125429B (zh) | 视频数据传输的调节方法及装置 | |
US20160072869A1 (en) | Adaptive variable fidelity media distribution system and method | |
CN104284135B (zh) | 视频传输方法及设备 | |
CN107819809B (zh) | 对内容进行同步操作的方法及装置 | |
CN101188477A (zh) | 一种数据包序列接收的方法及设备 | |
CN106416179A (zh) | 实现扩展传输控制功能的传输加速器 | |
CN110049011A (zh) | 用于媒体数据递送控制的方法和装置 | |
US7725556B1 (en) | Computer system with concurrent direct memory access | |
EP2786537A1 (en) | Device for obtaining content by choosing the transport protocol according to the available bandwidth | |
JP2010520665A5 (zh) | ||
US20070160048A1 (en) | Method for providing data and data transmission system | |
JP2008312126A (ja) | データ送信装置、データ受信装置、及びデータ送受信システム | |
US8792368B2 (en) | Method and device for computing the available space in a packet for data stream transport | |
CN115484240A (zh) | 解码、数据传输方法、装置、终端及服务器 | |
CN110300278A (zh) | 视频传输方法和设备 | |
CN104092982A (zh) | 点对点实时视频传输方法及其传输系统 | |
CN104205851A (zh) | 信息处理装置和方法以及程序 | |
JP5085553B2 (ja) | データ・ソースからデータ・シンクへのデータ・フローの転送のための方法、データ・シンク装置、データ・ソース装置、およびこれを実行するための装置 | |
CN113726817B (zh) | 一种流媒体数据的传输方法、装置及介质 | |
JP5682292B2 (ja) | 映像配信装置及び映像配信方法 | |
CN114500672A (zh) | 数据传输方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20141008 |
|
WD01 | Invention patent application deemed withdrawn after publication |