一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

码流切换的方法、服务器、客户端、设备以及存储介质与流程

2021-10-27 21:42:00 来源:中国专利 TAG:视频 数据处理 切换 公开


1.本公开涉及视频数据处理领域,尤其涉及视频码流切换领域。


背景技术:

2.目前移动互联网下,随着终端设备上播放器功能趋于强大,在播放器上观看视频的用户越来越多。
3.用户在使用播放器观看视频时,往往会进行码流切换以改变视频的清晰度,但目前用户在进行码流切换时,视频往往会停顿和重新加载,比较影响用户体验。


技术实现要素:

4.本公开提供了一种码流切换的方法、服务器、客户端、设备以及存储介质。
5.根据本公开的第一方面,提供了一种码流切换的方法,应用于服务器,该方法包括:
6.接收客户端发送的码流切换请求和当前视频的当前帧;
7.响应于码流切换请求中的目标码流请求信息,根据当前帧和偏移量,从预存储的多种码流的地址中,确定目标码流的地址;
8.将目标码流的地址发送给客户端,用于客户端基于目标码流的地址,加载目标码流,以用于当客户端加载目标码流完成时,将当前视频的码流切换至目标码流。
9.如上的方面和任一可能的实现方式,进一步提供一种实现方式,该方法还包括:获取与客户端之间的当前网络状态;偏移量是根据当前网络状态和/或目标码流请求信息确定的,或是预设的。
10.如上的方面和任一可能的实现方式,进一步提供一种实现方式,多种码流的地址存储在预设哈希表中;预设哈希表包括多种码流的视频切片对应的地址;响应于码流切换请求中的目标码流请求信息,根据当前帧和偏移量,从预存储的多种码流的地址中,确定目标码流的地址,包括:
11.响应于码流切换请求中的目标码流请求信息,根据当前帧和偏移量,确定目标码流的视频切片请求,其中,视频切片请求信息包括视频时间点;
12.根据视频切片请求中的视频时间点从预设哈希表中,确定目标码流的视频切片的地址。
13.根据本公开的第二方面,提供了一种码流切换的方法,应用于客户端,包括:
14.接收用户输入的码流切换指令;
15.根据码流切换指令生成码流切换请求以及获取当前视频的当前帧;
16.向服务器发送码流切换请求和当前视频的当前帧;
17.接收服务器发送的目标码流的地址,其中,目标码流的地址是服务器响应于码流切换请求中的目标码流请求信息,根据当前帧和偏移量,从预存储的多种码流的地址中确定的;
18.基于目标码流的地址,加载目标码流;
19.当目标码流加载完成时,将当前视频的码流切换至目标码流。
20.如上的方面和任一可能的实现方式,进一步提供一种实现方式,基于目标码流的地址,加载目标码流,包括:
21.基于目标码流的视频切片的地址和目标线程,加载目标码流的视频切片,其中,目标线程是服务器根据目标码流的视频切片的地址开启的。
22.如上的方面和任一可能的实现方式,进一步提供一种实现方式,当目标码流加载完成时,将当前视频的码流切换至目标码流,包括:
23.当加载的目标码流的数据量大于预设阈值时,基于目标线程,播放目标码流的视频切片。
24.根据本公开的第三方面,提供了一种服务器,包括:
25.数据接收模块,用于接收客户端发送的码流切换请求,基于码流切换请求获取当前视频的当前帧;
26.地址确定模块,用于响应于码流切换请求中的目标码流请求信息,根据当前帧和偏移量,从预存储的多种码流的地址中,确定目标码流的地址;
27.数据发送模块,用于将目标码流的地址发送给客户端,以用于客户端基于目标码流的地址,加载目标码流,以用于当客户端加载目标码流完成时,将当前视频的码流切换至目标码流。
28.根据本公开的第四方面,提供了一种客户端,包括:
29.数据接收模块,用于接收用户输入的码流切换指令;
30.数据获取模块,用于根据码流切换指令生成码流切换请求以及获取当前视频的当前帧;
31.数据发送模块,用于向服务器发送码流切换请求和当前视频的当前帧;
32.目标码流的地址接收模块,还用于接收服务器发送的目标码流的地址,其中,目标码流的地址是服务器响应于码流切换请求中的目标码流请求信息,根据当前帧和偏移量,从预存储的多种码流的地址中确定的;
33.目标码流加载模块,用于基于目标码流的地址,加载目标码流;
34.目标码流切换模块,用于当目标码流加载完成时,将当前视频的码流切换至目标码流。
35.根据本公开的第五方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现第一方面,以及第一方面任一可能的实现方式中的方法,或者实现第二方面,以及第二方面任一可能的实现方式中的方法。
36.根据本公开的第六方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如根据第一方面,以及第一方面任一可能的实现方式中的方法,或者实现第二方面,以及第二方面任一可能的实现方式中的方法。
37.本公开提供的码流切换的方法、服务器、客户端、设备以及存储介质,通过当前帧与其偏移量,来提前加载目标码流,从而实现准确且顺滑地切换至目标码流,提高了用户体验。应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要
特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
38.结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。附图用于更好地理解本方案,不构成对本公开的限定在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
39.图1示出了能够在其中实现本公开的实施例的示例性运行环境的示意图;
40.图2示出了图1中所示的客户端和服务器之间的交互方法的示意图;
41.图3示出了根据本公开的实施例的服务器的框图;
42.图4示出了根据本公开的实施例的客户端的框图;
43.图5示出了能够实施本公开的实施例的示例性电子设备的方框图。
具体实施方式
44.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。
45.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
46.本公开中,通过基于当前帧与其偏移量,来提前加载目标码流,从而实现准确且顺滑地切换至目标码流,进而提高了用户体验。
47.图1示出了能够在其中实现本公开的实施例的示例性运行环境100的示意图。在运行环境100中包括客户端101和服务器102。
48.图2示出了图1中所示的客户端101和服务器102之间的交互方法200的示意图。
49.如图2所示,码流切换的方法基于客户端101和服务器102来实现,具体可以包括:
50.s201:客户端接收用户输入的码流切换指令。
51.该码流切换指令可以包括用户选择的期望的码流信息。
52.s202:客户端根据码流切换指令生成码流切换请求以及获取当前视频的当前帧。
53.在该过程中,客户端会根据码流切换指令中用户选择的期望的码流信息,从码流列表里选中的目标码流,该码流列表是客户端从当前视频播放器的业务流程里获取到的,包含了支持哪些码率,码率代码的名字,因此码流切换请求中的目标码流包括了目标码流的码率信息以及码率代码。
54.此外,上述获取的当前视频的当前帧,可以理解为当前视频的关键帧或者关键点,以体现当前视频此时此刻所显示的画面,以用于后续确定目标码流的地址。
55.s203:客户端向服务器发送码流切换请求和当前视频的当前帧。
56.s204:服务器响应于码流切换请求中的目标码流请求信息,根据当前帧和偏移量,从预存储的多种码流的地址中,确定目标码流的地址。
57.在一个实施例中,因为实际的网络情况往往会影响加载的时间,所以可以获取与
客户端之间的当前网络状态,之后根据该当前网络状态和/或目标码流请求信息确定上述偏移量,以确保在当前的网络情况下,在未到请求的视频时间点前,基于当前帧和偏移量从预存储的多种码流的地址中确定的目标码流的地址,提前完成目标码流的加载。其中,基于当前帧和偏移量从预存储的多种码流的地址中确定的目标码流的地址,即为确定目标码流的待播放的视频位置的地址。
58.在一个实施例中,偏移量可以根据当前网络状态来确定,以实现根据网络状态动态调节目标码流的待播放的视频位置。也可以只根据目标码流请求信息来确定,以实现根据目标码流请求信息动态调节。还可以分别对当前网络状态和目标码流请求信息设置权重,来共同确定,以实现准确调节目标码流的待播放的视频位置。
59.在一个实施例中,为了减少服务器的计算量,该偏移量也可以是预设好的,以实现统一标准化计算。
60.在一个实施例中,为了确保数据的高可靠性,多种码流的地址可以存储在预设哈希表中,以防止被篡改。
61.在本公开中,在一个具体的实施例中,服务器可以提前将m3u8格式的视频,分成多个切片,并通过预设哈希(hash)表记录不同切片的码流以及对应的地址等信息,因此,可以理解的是,在播放器播放视频时,其实是加载的一段段的视频切片。
62.基于上述的预设哈希表以及预设哈希表中包括的多种码流的视频切片对应的地址,s302的具体过程可以为:响应于码流切换请求中的目标码流请求信息,根据当前帧和偏移量,确定目标码流的视频切片请求,其中,视频切片请求信息包括视频时间点;之后对预设哈希表进行解析,根据视频切片请求中的视频时间点从解析后的数据中,确定目标码流的视频切片的地址,以用于客户端基于该地址加载目标码流。
63.在一个具体的实施例中,基于上述可以根据当前网络状态和/或目标码流请求信息可以调整的偏移量,在确定目标码流的视频切片请求的过程中,确定的视频切片请求信息包括的视频时间点也会跟随当前网络状态和/或目标码流请求信息变化。例如,当前网络状态较差,视频时间点应该进行与该较差网络状态相对应的延迟,以使在到达视频时间点前,完成视频切片的加载;当目标码流请求信息为超清或蓝光等高清晰度请求时,也同理,视频时间点也应该进行相对应的延迟,以使在到达视频时间点前,完成视频切片的加载。
64.s205:服务器将目标码流的地址发送给客户端。
65.s206:客户端基于目标码流的地址,加载目标码流。
66.在s206中,具体可以基于目标码流的视频切片的地址和目标线程,加载目标码流的视频切片,其中,该目标线程是服务器根据目标码流的视频切片的地址开启的新线程,以确保加载目标码流的视频切片时,不影响原线程。
67.需要说明的是,在s206加载目标码流的过程中,既在码流切换完成前,主线程,既未进行切换的当前视频的线程,要保证旧码流在有缓存的情况下继续进行播放,以避免出现切换过程中视频卡顿现象。
68.s207:当目标码流加载完成时,客户端将当前视频的码流切换至目标码流。
69.具体地,在s207中,当目标码流加载完成时,客户端基于当前播放内核,使用上述开启的目标线程,切换到加载完成的目标码流的地址,来播放目标码流的视频切片。
70.在一个具体的实施例中,当加载的目标码流的数据量大于预设阈值时,可以认为
目标码流加载完成。
71.需要说明的是,预设阈值与目标码流有关,例如,当目标码流为360p的码流时,预设阈值为x;目标码流为480p的码流时,预设阈值为y,其他清晰度的码流对应其他的阈值。
72.在一个实施例中,确定上述的目标码流是否加载完成,需要将加载的目标码流的数据量与目标码流对应的预设阈值进行比对,当加载的目标码流的数据量大于或等于目标码流对应的预设阈值时,目标码流加载完成,反之,则未加载完。
73.在一个实施例中,为了节约服务器的计算资源,当目标码流加载完成时,服务器接收到加载完成反馈,关闭当前视频的当前码流的线程,即关闭上述的主线程,以实现节约服务器的计算资源。
74.本公开提供的码流切换的方法中,通过当前帧与其偏移量,来提前加载目标码流,而且在未加载完目标码流的情况下,主线程会保证旧码流在有缓存的情况下继续进行播放,因此可以实现准确且顺滑地切换至目标码流,从而提高了用户体验。
75.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
76.以上是关于方法实施例的介绍,以下通过装置实施例,对本公开所述方案进行进一步说明。
77.图3示出了根据本公开的实施例的服务器300的方框图。服务器300可以被包括在图1的服务器102中。如图3所示,服务器300包括:
78.数据接收模块301,用于接收客户端发送的码流切换请求,基于码流切换请求获取当前视频的当前帧;
79.地址确定模块302,用于响应于码流切换请求中的目标码流请求信息,根据当前帧和偏移量,从预存储的多种码流的地址中,确定目标码流的地址;
80.数据发送模块303,用于将目标码流的地址发送给客户端,以用于客户端基于目标码流的地址,加载目标码流,以用于当客户端加载目标码流完成时,将当前视频的码流切换至目标码流。
81.在一个实施例中,服务器300还包括数据获取模块,用于获取与客户端之间的当前网络状态;偏移量是根据当前网络状态和/或目标码流请求信息确定的,或是预设的。
82.在一个实施例中,多种码流的地址存储在预设哈希表中;预设哈希表包括多种码流的视频切片对应的地址;地址确定模块302,还用于响应于码流切换请求中的目标码流请求信息,根据当前帧和偏移量,确定目标码流的视频切片请求,其中,视频切片请求信息包括视频时间点;根据视频切片请求中的视频时间点从预设哈希表中,确定目标码流的视频切片的地址。
83.本公开提供的服务器,通过当前帧与其偏移量确定目标码流的地址,并将该地址发送给客户端,以使客户端根据该地址提前加载目标码流,因此可以实现准确且顺滑地将原码流切换为目标码流,从而提高了用户体验。
84.可以理解的是,图3所示服务器中的各个模块具有实现图2中服务器侧各个步骤的
功能,并能达到其相应的技术效果,为简洁描述,在此不再赘述。
85.图4示出了根据本公开的实施例的客户端400的方框图。客户端400可以被包括在图1的客户端101中。如图4所示,客户端400包括:
86.数据接收模块401,用于接收用户输入的码流切换指令;
87.数据获取模块402,用于根据所述码流切换指令生成码流切换请求以及获取当前视频的当前帧;
88.数据发送模块403,用于向服务器发送所述码流切换请求和当前视频的当前帧;
89.目标码流的地址接收模块404,还用于接收服务器发送的目标码流的地址,其中,所述目标码流的地址是服务器响应于所述码流切换请求中的目标码流请求信息,根据所述当前帧与其偏移量,从预存储的多种码流的地址中确定的;
90.目标码流加载模块405,用于基于所述目标码流的地址,加载所述目标码流;
91.目标码流切换模块406,用于当所述目标码流加载完成时,将当前视频的码流切换至所述目标码流。
92.在一个实施例中,目标码流加载模块405,还用于基于目标码流的视频切片的地址和目标线程,加载目标码流的视频切片,其中,目标线程是服务器根据目标码流的视频切片的地址开启的。
93.在一个实施例中,目标码流切换模块406,还用于当加载的目标码流的数据量大于预设阈值时,基于目标线程,播放目标码流的视频切片。
94.本公开提供的客户端,通过接收服务器根据当前帧与其偏移量确定的目标码流的地址,来提前加载目标码流,因此可以实现准确且顺滑地将原码流切换为目标码流,从而提高了用户体验。
95.可以理解的是,图4所示客户端中的各个模块具有实现图2中客户端侧各个步骤的功能,并能达到其相应的技术效果,为简洁描述,在此不再赘述。
96.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
97.本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
98.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
99.设备500包括计算单元501,其可以根据存储在只读存储器(rom)502中的计算机程序或者从存储单元505加载到随机访问存储器(ram)503中的计算机程序,来执行各种适当的动作和处理。在ram 503中,还可存储设备500操作所需的各种程序和数据。计算单元501、rom 502以及ram 503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
100.设备500中的多个部件连接至i/o接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通
信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
101.计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如码流切换的方法。例如,在一些实施例中,码流切换的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由rom 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到ram503并由计算单元501执行时,可以执行上文描述的码流切换的方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行码流切换的方法。
102.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
103.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
104.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd

rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
105.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
106.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
107.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端

服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
108.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
109.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜