一种实时视频中视频延时确定方法与流程

专利2022-05-10  6



1.本发明涉及的是视频流媒体领域,特别涉及一种实时视频中视频延时确定方法。


背景技术:

2.实时视频通信系统主要由视频发送端、视频服务端和视频接收端三者构成,它是基于ip网络的图像、声音、文字交互系统,使世界各地的两人或多人实时音视频通讯成为可能。实时视频通信系统使用范围广,使用形式多样,如视频会议、视频群聊、网络主播互动、直播连麦等应用都会使用。在使用实时视频通信系统,特别是多人同时聊天或直播连麦时,能明显感受到通信双方间有延时,造成延时的原因有网络、视频服务端和视频接收端。在工程使用上,人们将更多精力放在视频服务端延时的确定,疏忽了网络传输和接收终端缓存、解码、渲染等环节造成的延时。
3.中国专利公开号为cn110519127a的专利中,介绍了一种网络节点延时确定方法,具体实施方式为“本地节点可以根据待探测节点收到探测数据包的时间,以及自身发送探测数据包的时间,也就是将探测数据包写入探测端口的时间,计算得到本地节点与待探测节点之间的网络延时”。能发现,上述方法采集了自身发送探测数据包的时间和待探测节点收到探测数据包的时间,采集的不是同一个系统时间,不同系统的系统时间可能存在误差,这会导致计算出的网络延时精度不高。


技术实现要素:

4.鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种实时视频中视频延时确定方法。
5.为了解决上述技术问题,本技术实施例公开了如下技术方案:
6.一种实时视频中视频延时确定方法,包括:
7.s100.用户创建聊天房间,构建用户同自己聊天的场景;
8.s200.第一视频终端的发送模块采集带有时间信息的视频画面,封包发送,并在封包协议的填充字段加上发包时的系统时刻;
9.s300.第二视频终端的接收模块接收音视频包,获取接收时的系统时刻,解封装音视频包,获取音视频包中填充字段内容,得出网络传输延时;
10.s400.对接收模块收到的音视频包进行解码和渲染,在屏幕上进行显示,屏幕获取模块周期获取屏幕画面,得出接收终端延时。
11.进一步地,s200中,视频终端的发送模块采用rtp协议封装视频数据,在生成的rtp包中,填充区域填充此时的系统时刻,填充标志置为1。
12.进一步地,s200中,当封包发送视频数据过大时,将视频数据分包发送,并在每个包的填充区域填充相同的系统时刻,且每个包的填充标志均置为有数据填充。
13.进一步地,s300中,得到网络传输延时的方法为:
14.s301.第一视频终端的发送模块向视频服务器发送视频包,视频服务器将收到的
视频包转发给视频终端的接收模块;
15.s302.第二视频终端的接收模块收到视频包,获取当前系统时刻,解封装视频包,读取填充区域数据值,解封装后的视频数据送给播放端解码、渲染显示;
16.s303.接收模块根据当前系统时刻和填充区域数据值,根据两者的差值确定当前一帧视频数据从视频终端到视频服务器来回的延时。
17.进一步地,s400中,得出接收终端延时的方法为:
18.s401.屏幕获取模块以固定周期获取视频终端屏幕画面,将画面保存为图片;
19.s402.查看s401保存图片中任意一张图片内容,屏幕画面显示框显示的视频画面带有时间信息,读取视频画面的时刻值;
20.s403.获取读取图片中即将发送的视频帧数据携带的时间信息,继续读取当前图片之后的图片,找寻接收模块接收的视频画面中时间信息与s402中读取的即将发送视频帧数据携带时间信息相同的目标图片,读取目标图片中即将发送的视频帧数据携带的时间信息;
21.s404.根据s402中读取视频画面的时刻值和s403中目标图片中即将发送的视频帧数据携带的时间信息,确定当前帧视频数据在网络传输和接收终端的总延时,并减去s300中的网络传输延时,得到接收终端延时。
22.进一步地,视频终端的发送模块和接收模块在同一系统运行,保证视频包的发送时刻和接收时刻是在同一系统下采集。
23.进一步地,屏幕获取模块获取视频终端屏幕画面的固定周期与视频帧率有关,具体关系为:周期t与视频帧率fps的关系为t等于fps的倒数,单位为毫秒。
24.进一步地,在接收终端延时确定过程中,视频数据包若出现丢包,导致s402中从图读取的时间值在s403中未找到与之匹配的目标图片,则放弃当前图片,重复s402操作,再换一张图片确定接收终端延时。
25.本发明实施例提供的上述技术方案的有益效果至少包括:
26.本发明提出了一种实时视频中视频延时确定方法,通过用户创建聊天房间,再次进入房间,构造通过视频服务同自己音视频聊天的场景,用户的音视频发送模块发送的视频画面带有时间信息,在封装发送媒体包时,将封装协议的填充位置1,获取系统时刻,将系统时刻值赋给封装包的填充字段,同一用户的音视频接收模块在收到媒体包时,获取此时系统时刻,解封装媒体包,获取此包的填充字段值,便能确定此包的网络延时,屏幕获取模块周期获取屏幕显示画面,从而确定接收终端延时的方法。此方法发送模块和接收模块获取的是同一系统的系统时刻,避免了系统误差,同时,网络传输延时和接收终端缓存、解码、渲染延时严格区别开,且未引入其他可能影响延时确定结果的环节,故通过此方法确定的网络传输延时和接收终端延时精确度高。解决了现有技术网络传输和接收终端均会对实时视频造成延时的问题。
27.下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
28.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
29.图1为本发明实施例1中,一种实时视频中视频延时确定方法的流程图;
30.图2为本发明实施例1中,网络延时确定方法的流程图;
31.图3为本发明实施例2中,终端延时确定方法的流程图;
具体实施方式
32.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
33.为了解决现有技术中存在的问题,本发明实施例提供一种实时视频中视频延时确定方法。
34.实施例1
35.本实施例公开了一种实时视频中视频延时确定方法,如图1,包括:
36.s100.用户创建聊天房间,构建用户同自己聊天的场景;本实施例针对实时音视频服务支持聊天房间内用户同自己音视频聊天的场景。为了更好理解本实施例,例如:用户在pc机上访问音视频服务器,申请创建并加入聊天室,指定聊天室人数2、房间号001和登录密码password等。用户在同一pc机上再次访问同一音视频服务器,申请进入聊天房间001,此时,一个访问页面上会有两个视频画面。用户每次访问聊天室,都会创建一组发送模块和接收模块,为了保证视频数据上下行网络畅通,可将视频分辨率设为640x480,当前的4g网络、有线网、wifi均很好的支持两路640x480视频同时发送和接收。
37.s200.视频终端的发送模块采集带有时间信息的视频画面,封包发送,并在封包协议的填充字段加上发包时的系统时刻。在本实施例s200中,当封包发送视频数据过大时,将视频数据分包发送,并在每个包的填充区域填充相同的系统时刻,且每个包的填充标志均置为有数据填充。
38.在一些优选实施例中,视频终端的发送模块采用rtp协议封装视频数据,在生成的rtp包中,填充区域填充此时的系统时刻,填充标志置为1。若发送的视频数据为i帧,数据量较大,需要封装为多个rtp包发送,则每个rtp包填充区域填充同一系统时刻,填充标志均置为1。
39.s300.视频终端的接收模块接收音视频包,获取接收时的系统时刻,解封装音视频包,获取音视频包中填充字段内容,得出网络传输延时。
40.在本实施例的s300中,如图2,得到网络传输延时的方法为:
41.s301.视频终端的发送模块向视频服务器发送视频包,视频服务器将收到的视频包转发给视频终端的接收模块;例如:聊天房间只有2人视频聊天,即为1对1视频通信,视频服务器此时对外提供转发功能,收到用户a发送的rtp包,视频服务器不做任何处理,直接将rtp包发送给用户b,此发明专利中,用户a与用户b分别对应用户的两次登录。
42.s302.视频终端的接收模块收到视频包,获取当前系统时刻,解封装视频包,读取填充区域数据值,解封装后的视频数据送给播放端解码、渲染显示。例如:延续s301中的例子,用户b(即用户第二次登录)的接收模块收到第30帧视频包,记录当前系统时刻,时刻值为t2,解封装视频包,填充区域的数据值为t1,将解封装后的视频数据送给播放端显示,如
果用户b的接收模块收到的视频包是分包,并包后再将视频数据送给播放端显示。
43.s303.接收模块根据当前系统时刻和填充区域数据值,根据两者的差值确定当前一帧视频数据从视频终端到视频服务器来回的延时。
44.例如:延续s302的例子,用户b(即用户第二次登录)的接收模块已获取第30帧视频数据的接收时刻值为t2和用户a(即用户第一次登录)的发送模块发送第30帧视频数据的时刻值为t1,t2与t1的差值t3即为第30帧视频数据从用户a(即用户第一次登录)到视频服务器再到用户b(即用户第二次登录)的网络传输延时,差值t3的一半为用户当前一帧视频数据上行或下行的网络传输延时。
45.对本实施例需要说明的是,在网络传输延时确定过程中,视频数据包若出现丢包,接收模块自身带有丢包处理机制,处理机制为音视频领域常识,视频数据丢包对本专利介绍的网络延时确定方法没影响。以上介绍的是一帧视频数据在网络传输中延时确定方法,可以参照视频数据采集的帧率fps,连续统计出fps帧视频数据的网络传输延时,求得fps帧视频数据的网络延时平均值,此网络延时平均值即1秒时间段的网络延时。
46.s400.对接收模块收到的音视频包进行解码和渲染,在屏幕上进行显示,屏幕获取模块周期获取屏幕画面,得出接收终端延时。
47.在本实施例s400中,如图3,得出接收终端延时的方法为:
48.s401.屏幕获取模块以固定周期获取视频终端屏幕画面,将画面保存为图片;在本实施例中,屏幕获取模块获取视频终端屏幕画面的固定周期与视频帧率有关,具体关系为:周期t与视频帧率fps的关系为t等于fps的倒数,单位为毫秒。
49.例如:视频终端的屏幕画面会有两个显示框,显示框1的画面为用户a(即用户第一次登录)发送模块即将发送的视频画面,显示框2的画面为用户a(即用户第一次登录)的接收模块接收用户b(即用户第二次登录)发送的视频画面。用户a与用户b分别为同一用户的两次登录,用户a与用户b各自拥有独立的视频终端,两个独立的终端处在同一pc机,共用同一个摄像头,所以显示框1的画面虽然为用户a发送模块即将发送的视频画面,它也等同于用户b发送模块即将发送的视频画面。视频终端摄像头采集的视频数据,帧率为25帧每秒,屏幕获取模块每40毫秒获取终端屏幕一次,将获取到的终端屏幕保存为jpg格式图片,图片名从1开始,单调递增。
50.s402.查看s401保存图片中任意一张图片内容,屏幕画面显示框显示的视频画面带有时间信息,读取视频画面的时刻值。
51.例如:延续s401的例子,视频终端摄像头采集带有时间信息的画面,如直接采集秒表,精度到微秒。读取图片名为30.jpg的图片,屏幕画面显示框1的画面时刻值记为t1。由于屏幕获取模块是参照帧率获取屏幕画面,30.jpg图片中显示框1的画面即为即将发送的第30帧视频数据画面。
52.s403.获取s402已读取图片中即将发送的视频帧数据携带的时间信息,继续读取当前图片之后的图片,找寻接收模块接收的视频画面中时间信息与s402中读取的即将发送视频帧数据携带时间信息相同的目标图片,读取目标图片中即将发送的视频帧数据携带的时间信息。
53.s404.根据s402中读取视频画面的时刻值和s403中目标图片中即将发送的视频帧数据携带的时间信息,确定当前帧视频数据在网络传输和接收终端的总延时,并减去s300
中的网络传输延时,得到接收终端延时。
54.例如:延续s402的例子,已读取到30.jpg图片中画面显示框1的画面时刻值为t1,从31.jpg开始,逐一查看每张图片中画面显示框2的时刻值,在36.jpg图片中,画面显示框2的时刻值为t1,与30.jpg图片中画面显示框1的时刻值相同,36.jpg即为找寻的目标图片,读取36.jpg图片中画面显示框1的时刻值,记为t3。t3与t1的差值t4为第30帧视频数据在网络传输和接收终端的总延时,在s302、s303中可确定第30帧视频数据在网络传输的延时为t3,t4与t3的差值即为第30帧视频数据接收终端延时。
55.在接收终端延时确定过程中,视频数据包若出现丢包,导致s402中从图片读取的时间值在s403中未找到与之匹配的目标图片,则放弃当前图片,重复s402操作,再换一张图片确定接收终端延时。
56.以上介绍的是一帧视频数据在接收终端中延时确定方法,可以参照视频数据采集的帧率fps,连续统计出fps帧视频数据的接收终端延时,求得fps帧视频数据的接收终端延时平均值,此接收终端延时平均值即1秒时间段的接收终端延时。
57.在一些优选实施例中,在接收终端延时确定过程中,视频数据包若出现丢包,导致s402中从图读取的时间值在s403中未找到与之匹配的目标图片,则放弃当前图片,重复s402操作,再换一张图片,执行s403

s404,确定接收终端延时。
58.本实施例提出了一种实时视频中视频延时确定方法,通过用户创建聊天房间,再次进入房间,构造通过视频服务同自己音视频聊天的场景,用户的音视频发送模块发送的视频画面带有时间信息,在封装发送媒体包时,将封装协议的填充位置1,获取系统时刻,将系统时刻值赋给封装包的填充字段,同一用户的第二视频终端的音视频接收模块在收到媒体包时,获取此时系统时刻,解封装媒体包,获取此包的填充字段值,便能确定此包的网络延时,屏幕获取模块周期获取屏幕显示画面,从而确定接收终端延时的方法。此方法发送模块和接收模块获取的是同一系统的系统时刻,避免了系统误差,同时,网络传输延时和接收终端缓存、解码、渲染延时严格区别开,且未引入其他可能影响延时确定结果的环节,故通过此方法确定的网络传输延时和接收终端延时精确度高。解决了现有技术网络传输和接收终端均会对实时视频造成延时的问题。
59.应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
60.在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
61.本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个
系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
62.结合本文的实施例所描述的方法或者算法的步骤可直接体现为硬件、由处理器执行的软件模块或其组合。软件模块可以位于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动磁盘、cd

rom或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质连接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。该asic可以位于用户终端中。当然,处理器和存储介质也可以作为分立组件存在于用户终端中。
63.对于软件实现,本技术中描述的技术可用执行本技术所述功能的模块(例如,过程、函数等)来实现。这些软件代码可以存储在存储器单元并由处理器执行。存储器单元可以实现在处理器内,也可以实现在处理器外,在后一种情况下,它经由各种手段以通信方式耦合到处理器,这些都是本领域中所公知的。
64.上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
转载请注明原文地址: https://doc.8miu.com/read-1550323.html

最新回复(0)