CN110636284B - 解码能力检测方法及装置 - Google Patents
解码能力检测方法及装置 Download PDFInfo
- Publication number
- CN110636284B CN110636284B CN201911026111.9A CN201911026111A CN110636284B CN 110636284 B CN110636284 B CN 110636284B CN 201911026111 A CN201911026111 A CN 201911026111A CN 110636284 B CN110636284 B CN 110636284B
- Authority
- CN
- China
- Prior art keywords
- decoding
- code stream
- playing client
- test code
- frame
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N17/00—Diagnosis, testing or measuring for television systems or their details
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/442—Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/478—Supplemental services, e.g. displaying phone caller identification, shopping application
- H04N21/4788—Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/14—Systems for two-way working
- H04N7/141—Systems for two-way working between two video terminals, e.g. videophone
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供了一种解码能力检测方法、装置、电子设备及存储介质;方法包括:通过播放客户端接收服务器下发的符合待测试视频标准的测试码流、以及对应的期望哈希值;遍历读取所接收的测试码流中的每一帧,并进行解码;当所读取的任一帧解码完成时,确定任一帧的解码结果的哈希值、以及当前囤积在播放客户端的解码器缓存区中待解码码流的帧数;当测试码流中的每一帧均解码完成、且解码结果的哈希值与服务器对应所解码成功下发的期望哈希值一致时,向服务器上报解码数据,以使服务器根据播放客户端上报的解码数据,确定运行播放客户端的设备所属的设备类型针对待测试视频标准的解码能力。通过本发明,能够确定设备所具备的解码能力。
Description
技术领域
本发明涉及多媒体技术,尤其涉及一种解码能力检测方法、装置、电子设备及存储介质。
背景技术
近年来,随着互联网技术的发展,用户可以随时在移动终端上观看视频或者与朋友进行视频通话。
针对目前各厂商提供的系统碎片性,在正式环境使用设备的解码器对视频进行解码前,需要对设备所具备的解码能力进行检测,确定用户的设备是否存在兼容性问题,是否可能会出现花屏、绿屏、以及解码失败等问题。
然而,相关技术缺乏对于设备所具备的解码能力进行检测的有效方案。
发明内容
本发明实施例提供一种解码能力检测方法、装置、电子设备及存储介质,能够确定设备所具备的解码能力。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种解码能力检测方法,包括:
通过播放客户端接收服务器下发的符合待测试视频标准的测试码流、以及所述测试码流对应的期望哈希值;
遍历读取所接收的测试码流中的每一帧,并进行解码;
当所读取的任一帧解码完成时,确定所述任一帧的解码结果的哈希值、以及当前囤积在解码器缓存区中待解码码流的帧数;
当所述测试码流中的每一帧均解码完成、且解码结果的哈希值与所述服务器对应解码成功所下发的期望哈希值一致时,向所述服务器上报解码数据,以使
所述服务器根据所述播放客户端上报的解码数据,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力。
本发明实施例提供又一种解码能力检测方法,包括:
发送符合待测试视频标准的测试码流、以及所述测试码流对应的期望哈希值至播放客户端,以使所述播放客户端遍历读取所述测试码流中的每一帧,并进行解码,以及
当所读取的任一帧解码完成时,确定所述任一帧的解码结果的哈希值、以及当前囤积在解码器缓存区中待解码码流的帧数;接收所述播放客户端上报的针对所述测试码流的解码数据;
其中,所述解码数据是当所述测试码流中的每一帧均解码完成、且解码结果的哈希值与服务器对应解码成功所下发的期望哈希值一致时,由所述播放客户端生成;
根据所述播放客户端上报的解码数据,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力。
上述方案中,所述方法还包括:当确定所述播放客户端是通过调用硬件解码器解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的硬件解码能力。
上述方案中,所述方法还包括:当确定所述播放客户端是通过调用软件解码器解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的软件解码能力。
上述方案中,所述方法还包括:当接收到所述播放客户端在解码所述测试码流的过程中上报的异常信息或者解码失败信息时,确定运行所述播放客户端的设备所属的设备类型不具备兼容所述待测试视频标准的解码能力。
本发明实施例提供一种解码能力检测装置,包括:
接收模块,用于通过播放客户端接收服务器下发的符合待测试视频标准的测试码流、以及所述测试码流对应的期望哈希值;
解码模块,用于遍历读取所接收的测试码流中的每一帧,并进行解码;
确定模块,用于当所读取的任一帧解码完成时,确定所述任一帧的解码结果的哈希值,以及当前囤积在播放客户端的解码器缓存区中待解码码流的帧数;
上报模块,用于当所述测试码流中的每一帧均解码完成、且解码结果的哈希值与所述服务器对应解码成功所下发的期望哈希值一致时,向所述服务器上报解码数据,以使所述服务器根据上报的解码数据,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力。
上述方案中,所述解码模块,还用于调用运行所述播放客户端的设备中的图形处理器,对所读取的每一帧进行硬件解码,或者,调用运行所述播放客户端的设备中的中央处理器,以通过运行解码软件的方式对所读取的每一帧进行软件解码。
上述方案中,所述上报模块,还用于将解码完成信息、在解码过程中的平均囤积帧数、以及运行所述播放客户端的设备的所属的设备类型上报给所述服务器,以使所述服务器执行以下操作:根据所述解码完成信息确定所述播放客户端解码所述测试码流完成、且所述平均囤积帧数小于囤积帧数阈值时,确定所述设备类型具备兼容所述待测试视频标准的解码能力;当确定所述设备类型具备兼容所述待测试视频标准的解码能力时,将所述设备类型加入白名单中,当符合所述白名单的设备通过所运行的播放客户端进行视频播放或者视频通话时,通知所述设备开启所述解码能力对应的解码器对所播放的视频或者所接收的聊天视频进行解码。
上述方案中,所述上报模块上报的解码完成信息,还用于使所述服务器执行以下操作:
当确定所述播放客户端通过调用硬件解码器来解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的硬件解码能力。
上述方案中,所述上报模块上报的解码完成信息,还用于使所述服务器执行以下操作:
当确定所述播放客户端通过调用软件解码器来解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的软件解码能力。
上述方案中,所述上报模块,还用于当所述播放客户端通过解码器在解码所接收的测试码流的过程中产生异常信息时,将所述异常信息上报给所述服务器;当所述测试码流的解码结果的哈希值与所述服务器下发的期望哈希值不一致时,将解码失败信息上报给所述服务器;其中,所述异常信息和所述解码失败信息均表征所述设备类型不具备兼容所述待测试视频标准的解码能力。
本发明实施例提供又一种解码能力检测装置,包括:
发送模块,用于将符合待测试视频标准的测试码流、以及所述测试码流对应的期望哈希值至播放客户端,以使所述播放客户端遍历读取所述测试码流中的每一帧,并进行解码,以及
当所读取的任一帧解码完成时,确定所述任一帧的解码结果的哈希值、以及当前囤积在解码器缓存区中待解码码流的帧数;
接收模块,用于接收所述播放客户端上报的针对所述测试码流的解码数据,其中,所述解码数据是当所述测试码流中的每一帧均解码完成、且解码结果的哈希值与服务器对应解码成功所下发的期望哈希值一致时,由所述播放客户端生成;
确定模块,用于根据所述播放客户端上报的解码数据,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力。
上述方案中,所述解码数据包括解码完成信息、在解码过程中的平均囤积帧数、以及运行所述播放客户端的设备所属的设备类型;所述确定模块,还用于当根据所述解码完成信息确定所述播放客户端解码所述测试码流完成,且所述播放客户端上报的在解码过程中的平均囤积帧数小于囤积帧数阈值时,确定所述设备类型具备兼容所述待测试视频标准的解码能力;将所述设备类型加入白名单中,当符合所述白名单的设备通过所运行的播放客户端进行视频播放或者视频通话时,通知所述设备开启所述解码能力对应的解码器对所播放的视频或者所接收的聊天视频进行解码。
上述方案中,所述确定模块,还用于当所述播放客户端通过调用硬件解码器解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的硬件解码能力。
上述方案中,所述确定模块,还用于当所述播放客户端通过调用软件解码器解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的软件解码能力。
上述方案中,所述确定模块,还用于当接收到所述播放客户端在解码所述测试码流的过程中上报的异常信息或者解码失败信息时,确定运行所述播放客户端的设备所属的设备类型不具备兼容所述待测试视频标准的解码能力。
上述方案中,所述确定模块,还用于根据多个相同类型的设备中运行的所述播放客户端上报的解码数据,当确定每个运行播放客户端的设备具备兼容所述待测试视频标准的解码能力时,确定所述相同类型的设备均具备兼容所述待测试视频标准的解码能力。
本发明实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的任意一种解码能力检测方法。
本发明实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现本发明实施例提供的任意一种解码能力检测方法。
本发明实施例具有以下有益效果:
服务器通过向播放客户端下发测试码流,由播放客户端在解码完成后将解码结果的哈希值的校验结果和平均囤积帧数上报给服务器,从而,服务器根据播放客户端上报的哈希值的校验结果和平均囤积帧数,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力。
附图说明
图1是本发明实施例提供的解码能力检测系统的一个可选的架构示意图;
图2A是本发明实施例提供的解码能力检测设备的一个可选的结构示意图;
图2B是本发明实施例提供的解码能力检测设备的一个可选的结构示意图;
图3是本发明实施例提供的解码能力检测方法的一个可选的流程示意图;
图4是本发明实施例提供的解码能力检测方法的一个可选的流程示意图;
图5是本发明实施例提供的解码能力检测方法的一个可选的流程示意图;
图6是本发明实施例提供的硬件解码能力检测方法的一个可选的流程示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
发明人在实施本发明实施例的过程中发现,相关技术在进行硬件解码能力检测时,通常是通过查阅厂家的参数说明来得到设备的硬件解码能力,然后,通过不断灰度的方式来验证用户的机型是否存在硬件解码能力的兼容性问题。但是,通过不断灰度来确定某机型的硬件解码能力是否有兼容性问题时,必然会影响到硬件解码能力不兼容的机型上的产品使用。在还未确定用户的机型是否存在硬件解码能力兼容性问题的情况下对用户的设备开启硬解功能,可能会导致不支持硬解的机型的用户在使用过程中出现应用闪退、花屏和绿屏等问题,在该类机型被列入黑名单之前,收到硬解开启配置的用户都将受到影响。
此外,相关技术还提供了通过云真机平台的方式对用户设备的硬件解码能力进行检测。通过云真机平台进行硬解能力检测的验证后,对云真机验证过程中发现有兼容性问题的用户机型不会有影响。但是,云真机平台具有局限性,大部分机型的数量都较少,甚至有的机型都没有。对于不具备稳定的硬解兼容能力的某类机型,收到硬解开启配置的部分用户将受到影响。
对此,考虑向用户的客户端下发测试码流,通过收集客户端上报的针对该测试码流的测试结果来确定不同设备的解码能力,故可以通过播放客户端接收服务器下发的符合待测试视频标准的测试码流、以及测试码流对应的期望哈希值;遍历读取所接收的测试码流中的每一帧,并进行解码;当所读取的任一帧解码成功时,确定任一帧的解码结果的哈希值、以及当前囤积在播放客户端的解码器缓存区中待解码码流的帧数;当测试码流中的每一帧均解码成功、且解码结果的哈希值与服务器下发的期望哈希值一致时,向服务器上报解码成功信息、在解码过程中的平均囤积帧数、以及运行播放客户端的设备所属的设备类型,以使服务器根据播放客户端上报的数据,确定所述设备类型针对待测试视频标准的解码能力。
鉴于此,本发明实施例提供了一种解码能力检测方法、装置、电子设备及存储介质,能够确定设备所具有的解码能力。
下面说明本发明实施例提供的解码能力检测设备的示例性应用,本发明实施例提供的解码能力检测设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器或者服务器集群,还可以采用由用户终端和服务器协同的方式实施。下面,将说明本发明实施例提供的解码能力检测设备的示例性应用。
参见图1,图1是本发明实施例提供的解码能力检测系统100的一个可选的架构示意图,用户终端400(示例性示出了终端400-1和终端400-2)通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是两者的组合。
如图1所示,解码能力检测系统100中包括服务器200、网络300和用户终端400。服务器200通过网络300向用户终端400的播放客户端410发送符合待测试视频标准的测试码流、以及所述测试码流对应所成功解码的期望哈希值。用户终端400的播放客户端410在接收到服务器200下发的测试码流后,遍历读取所接收的测试码流中的每一帧,并调用用户终端400中的解码器进行解码。当所读取的任一帧解码完成时,播放客户端410确定所述任一帧的解码结果的哈希值、以及当前囤积在解码器缓存区中待解码码流的帧数。当所述测试码流中的每一帧均解码完成、且解码结果的哈希值与所述服务器对应所解码成功下发的期望哈希值一致时,播放客户端410向服务器200上报解码数据。服务器200根据播放客户端410上报的解码数据,确定用户终端400针对所述待测试视频标准的解码能力。
参见图2A,图2A是本发明实施例提供的服务器200的结构示意图,以解码能力检测设备是服务器200为例,图2A所示的服务器200包括:至少一个处理器210、存储器250、至少一个网络接口220和用户接口230。服务器200中的各个组件通过总线系统240耦合在一起。可理解,总线系统240用于实现这些组件之间的连接通信。总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2A中将各种总线都标为总线系统240。
处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口230包括使得能够呈现媒体内容的一个或多个输出装置231,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口230还包括一个或多个输入装置232,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器250可选地包括在物理位置上远离处理器210的一个或多个存储设备。
存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Me mory),易失性存储器可以是随机存取存储器(RAM,Random Access Memor y)。本发明实施例描述的存储器250旨在包括任意适合类型的存储器。
在一些实施例中,存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统251,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块252,用于经由一个或多个(有线或无线)网络接口220到达其他计算设备,示例性的网络接口220包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块253,用于经由一个或多个与用户接口230相关联的输出装置231(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块254,用于对一个或多个来自一个或多个输入装置232之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本发明实施例提供的解码能力检测装置可以采用软件方式实现,图2A示出了存储在存储器250中的解码能力检测装置255,其可以是程序和插件等形式的软件,包括以下软件模块:发送模块2551、接收模块2552和确定模块2553,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本发明实施例提供的解码能力检测装置可以采用硬件方式实现,作为示例,本发明实施例提供的解码能力检测装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的解码能力检测方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application SpecificIntegrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Comple x Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programma ble Gate Array)或其他电子元件。
参见图2B,图2B是本发明实施例提供的用户终端400的结构示意图,以解码能力检测设备是用户终端400为例,图2B所示的用户终端400包括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。
在一些实施例中,本发明实施例提供的解码能力检测装置可以采用软件方式实现,图2B示出了存储在存储器450中的解码能力检测装置455,其可以是程序和插件等形式的软件,包括以下软件模块:接收模块4551、解码模块4552、确定模块4553和上报模块4554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。当然,本发明实施例提供的解码能力检测装置455也可以采用硬件方式实现,本发明实施例在此不再赘述。
下面将结合附图说明本发明实施例提供的解码能力检测设备的示例性应用,说明本发明实施例提供的解码能力检测方法。
参见图3,图3是本发明实施例提供的解码能力检测方法的一个可选的流程示意图,可应用于图1所示的解码能力检测系统100中,以确定设备所具有的解码能力。以下是从用户终端400一侧对本发明实施例提供的解码能力检测方法的具体描述,如图3所示,本发明实施例提供的解码能力检测方法包括以下步骤:
在步骤S301中,服务器向用户终端上的播放客户端下发符合待测试视频标准的测试码流、以及所述测试码流对应的期望哈希值。
这里,所述符合待测试视频标准的测试码流包括H264、H265的标准参考测试码流,以及安卓、苹果手机等硬件编码的码流。
所述测试码流对应的期望哈希值是指所述测试码流解码成功后输出的解码结果的期望哈希值。
在一些实施例中,可以采用信息摘要算法5(MD5,Message-Digest Algor ithm5)确定所述测试码流所成功解码后输出的解码结果的期望哈希值。
在另一实施例中,也可以采用其他加密算法(例如,SHA1)确定所述测试码流所成功解码后输出的解码结果的期望哈希值。
示例的,服务器向用户终端下发H265的标准参考测试码流、以及所述H265的标准参考测试码流解码成功后输出的YUV(一种图像编码方法,“Y”表示明亮度(Luminance或Luma),也就是灰度值;“U”和“V”表示的是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色)数据的期望md5值。
示例的,服务器向用户终端下发安卓手机硬件编码的码流、以及所述安卓手机硬件编码的码流解码成功后输出的红绿蓝(RGB,一种图像编码方法,“R”表示红色,“G”表示绿色,“B”表示蓝色)数据的期望md5值。
在步骤S302中,播放客户端遍历读取所接收的测试码流中的每一帧,并进行解码。
这里,播放客户端在确认接收到服务器下发的测试码流后,开始启动用户终端中的解码能力检测模块对用户终端的解码能力进行检测。
在一些实施例中,可以调用用户终端中的图形处理器(GPU),对所读取的每一帧进行硬件解码,以确定用户终端针对待测试视频标准的硬件解码能力。
在另一些实施例中,也可以调用用户终端中的中央处理器(CPU),以通过运行解码软件的方式对所读取的每一帧进行软件解码,以确定用户终端针对待测试视频标准的软件解码能力。
示例的,假设服务器下发的测试码流是50帧,用户终端上的播放客户端在依次读取所接收的50帧测试码流中的每一帧后,调用用户终端中的GPU对所读取的每一帧进行解码。
示例的,假设服务器下发的测试码流是40帧,用户终端上的播放客户端在依次读取所接收的40帧测试码流中的每一帧后,通过解码软件调用用户终端中的CPU对所读取的每一帧进行解码。
在步骤S303中,播放客户端判断所读取的当前帧是否解码完成,如果解码失败,则执行步骤S304;如果正常解码,则执行步骤S305。
这里,播放客户端将所读取的测试码流中的当前帧送入解码器,解码器将尝试对所送入的当前帧进行解码。如果解码器在解码所述当前帧的过程中产生异常信息,表示解码失败,则执行步骤S304;如果解码器在解码所述当前帧的过程中没有返回失败,表示正常解码,则执行步骤S305。
在步骤S304中,播放客户端将解码器在解码过程中产生的异常信息发送给服务器。
这里,如果服务器接收到播放客户端在解码测试码流的过程中上报的异常信息,即确定运行所述播放客户端的用户终端所述的设备类型不具备兼容所述测试码流的解码能力。
在一些实施例中,服务器在接收到播放客户端上报的异常信息后,通知用户终端停止调用解码能力检测模块对所述用户终端的解码能力进行检测,并将所述用户终端对应的设备类型记入不具备解码能力的名单中。
示例的,假设测试码流是50帧,解码器在解码前20帧时均正常解码,但是,在解码第21帧时产生异常信息,则播放客户端将解码第21帧时产生的异常信息上报给服务器,服务器在接收到异常信息后,通知播放客户端停止对剩余的第22-50帧的解码,以减少系统资源的消耗,并直接将所述用户终端对应的设备类型记入不具备解码能力的名单中。
在另一些实施例中,服务器向多个相同类型的用户终端下发测试码流,只有当超出预定数量或预设比例的用户终端向服务器上报异常信息时,才确定所述设备类型不具备兼容待测试视频标准的解码能力,并将所述设备类型记入不具备解码能力的名单中。
在步骤S305中,播放客户端更新当前帧的解码结果的哈希值、以及当前囤积在解码器缓存区中待解码码流的帧数。
这里,当解码器正常解码当前帧后,在上一帧的解码结果的哈希值的基础上,追加当前帧的解码结果的哈希值、以及确定当前囤积在解码器缓存区中待解码码流的帧数。
在一些实施例中,每成功解码测试码流中的一帧,即可在上一帧的解码结果的哈希值的基础上,追加当前帧的解码结果的哈希值,如此,只需占据保存一帧解码结果所需的内存,减小了内存的消耗。
示例的,假设测试码流是50帧,前20帧均正常解码,当前帧是第21帧,则在确定第21帧解码完成后,在第20帧解码后的YUV数据的md5值下,追加第21帧解码后的YUV数据的md5值、以及确定在解码第21帧时囤积在解码器缓存区中待解码码流的帧数。如此,等到第50帧解码完成后,根据第49帧解码后的YUV数据的md5值,以及第50帧解码后的YUV数据,即可确定整个测试码流最终的md5值。
在步骤S306中,播放客户端校验解码结果的哈希值与服务器下发的期望哈希值是否一致,如果不一致,表示解码失败,则执行步骤S307;如果一致,表示解码成功,则执行步骤S308。
这里,当测试码流中的每一帧均解码完成后,判断所述测试码流解码完成后输出的解码结果的哈希值与服务器下发的对应所述测试码流所成功解码的期望哈希值是否一致,如果不一致,执行步骤S307;如果一致,执行步骤S308。
示例的,假设测试码流是50帧,所述测试码流的50帧均能正常解码,在解码完成后,确定所述50帧组成的测试码流解码完成后输出的YUV数据的m d5值,进而判断所述解码完成后输出的YUV数据的md5值与服务器下发的所述50帧组成的测试码流的期望md5值是否一致,如果不一致,表示解码输出的YUV数据与预期YUV数据不一致,即解码失败,执行步骤S307;如果一致,表示解码输出的YUV数据和预期YUV数据一致,即解码成功,执行步骤S308。
在步骤S307中,播放客户端向服务器上报解码失败信息。
这里,测试码流中的每一帧虽然均能正常解码,但解码结果的哈希值与服务器下发的期望哈希值不一致,说明播放客户端解码输出的视频数据与测试码流成功解码输出的期望视频数据不一致。也就是说,播放客户端无法实现对所述测试码流的成功解码,因此,当解码结果的哈希值与期望哈希值不一致时,播放客户端向服务器上报解码失败信息,服务器将所述用户终端对应的设备类型记入不具备解码能力的名单中。
在另一些实施例中,服务器向多个相同类型的用户终端下发测试码流,只有接收到超过预定数量或者预设比例的播放客户端上报的解码失败信息时,才确定该类型设备不具备兼容待测试视频标准的解码能力,并将该类型记入不具备解码能力的黑名单中。
在步骤S308中,播放客户端向服务器上报针对所述测试码流的解码数据。
这里,所述解码数据包括解码完成信息、在解码过程中的平均囤积帧数、以及运行所述播放客户端的设备所属的设备类型等。
在一些实施例中,在确定解码输出的解码结果的哈希值与服务器下发的期望哈希值一致时,播放客户端向服务器上报针对所述测试码流的解码完成信息、在解码所述测试码流的过程中囤积在解码器缓存区中的待解码码流的平均帧数、以及运行所述播放客户端的设备所属的设备类型等。
示例的,假设测试码流是50帧,在确定所述50帧组成的测试码流解码输出的YUV数据的md5值与服务器下发的所述50帧组成的测试码流成功解码输出的YUV数据的期望md5值一致时,播放客户端向服务器上报针对所述50帧组成的测试码流的解码完成信息(例如,播放客户端是通过调用设备的硬件解码器对所述测试码流进行解码完成的;或者,播放客户端是通过调用设备的软件解码器对所述测试码流进行解码完成的)、在解码所述50帧组成的测试码流的过程中囤积在解码器缓存区中的平均帧数、以及运行所述播放客户端的设备所属的设备类型。
在步骤S309中,服务器根据播放客户端上报的解码数据,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力。
这里,服务器在接收到播放客户端上报的解码数据后,对解码数据进行分析,从而判断出运行所述播放客户端的设备所属的设备类型是否具备针对所述待测试视频标准的解码能力。当确定播放客户端上报的平均囤积帧数小于预设的囤积帧数阈值时,即确定满足延时要求,则确定运行所述播放客户端的设备具备兼容待测试视频标准的解码能力;当播放客户端上报的平均囤积帧数大于预设的囤积帧数阈值时,即不满足延时要求,则确定运行所述播放客户端的设备不具备兼容待测试视频标准的解码能力。
在一些实施例中,当确定运行播放客户端的设备具备兼容待测试视频标准的解码能力时,默认同类型的其他设备均具备兼容所述待测试视频标准的解码能力。
在一些实施例中,当所述播放客户端上报的解码完成信息表示所述播放客户端是调用软件解码器解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的软件解码能力。
在另一些实施例中,当所述播放客户端上报的解码完成信息表示所述播放客户端是调用硬件解码器解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的硬件解码能力。
在确定出运行播放客户端的设备所属的设备类型具备兼容待测试视频标准的软件解码能力时,则启动设备的软件解码器对播放客户端所播放的视频进行解码;在确定出运行播放客户端的设备所属的设备类型具备兼容待测试视频标准的硬件解码能力时,则启动设备的硬件解码器对播放客户端所播放的视频进行解码;在确定出运行播放客户端的设备所属的设备类型同时具备兼容待测试视频标准的软件解码能力和硬件解码能力时,则优先开启设备的硬件解码器对播放客户端所播放的视频进行解码。
示例的,参见图4,图4是本发明实施例提供的解码能力检测方法的流程示意图。如图4所示,服务器分别向播放客户端1、播放客户端2和播放客户端3下发测试码流、以及所述测试码流成功解码后的YUV数据的期望md5值。播放客户端3在调用设备中的硬件解码器对所下发的测试码流进行解码的过程中产生了异常信息,播放客户端3将所产生的异常信息发送给服务器,服务器在接收到播放客户端3上报的异常信息时,确定播放客户端3不具备兼容所述测试码流的硬件解码能力,因此,服务器向播放客户端3下发禁用硬件解码功能的信息。播放客户端2虽然可以对测试码流中的每一帧均能正常解码,但测试码流解码输出的YUV数据的md5值与服务器下发的期望md5值不一致,从而,播放客户端2向服务器上报解码失败信息,服务器在接收到播放客户端2上报的解码失败信息时,确定播放客户端2同样不具备兼容所述测试码流的硬件解码能力,因此,服务器向播放客户端2下发类似的禁用硬件解码功能的信息。播放客户端1可以对测试码流中的每一帧均正常解码,且解码输出的YUV数据的md5值与服务器下发的期望md5值一致,从而,播放客户端1向服务器上报解码成功信息、解码过程中的平均囤积帧数、以及运行播放客户端1的设备所属的设备类型。服务器在接收到播放客户端1上报的解码数据后,判断播放客户端1上报的平均囤积帧数是否满足预设的延时要求(例如,平均囤积帧数小于等于1帧),当满足延时要求时,确定运行播放客户端1的设备具备兼容所述测试码流的硬件解码能力,因此,服务器可以向播放客户端1下发开启硬件解码功能的消息。当播放客户端1在后续进行视频播放时,可以启用硬件解码器对所播放的视频进行解码。
需要说明的是,在检测运行播放客户端的设备是否具备兼容待测试视频标准的解码能力时,可以仅检测一种待测试视频标准,当其检测通过时,默认兼容其他视频标准的测试码流。也可以对所有需要检测的待检测视频标准的测试码流进行检测,当所有的待检测视频标准的测试码流均检测通过后,确定所述设备具备兼容待测试视频标准的解码能力。例如,可以在确定用户设备具备兼容H264的标准参考测试码流的解码能力后,不检测用户设备对于其他视频标准的解码兼容性问题,默认所述设备具备兼容其他待测试视频标准的解码能力。当然,也可以在检测设备对H264的标准参考测试码流的解码能力后,继续检测设备对于其他视频标准(例如,H265)的解码能力,当所有待测试视频标准的测试码流均检测通过后,才确定所述设备具备兼容待测试视频标准的解码能力。
在另一些实施例中,服务器也可以根据多个播放客户端上报的解码数据,以便更加准确地确定运行播放客户端的设备所属的设备类型针对待测试视频标准的解码能力。
示例的,参见图5,图5是本发明实施例提供的解码能力检测方法的流程示意图。如图5所示,服务器向N个(这里,N是正整数,例如,可以是500或者1000等)播放客户端下发测试码流,并接收所述N个播放客户端上报的针对所述测试码流的解码结果。服务器在接收到所述N个播放客户端上报的解码结果后,对上报的解码结果进行汇总分析,判断同一类型的设备上报的解码成功数量是否超过定义的阈值,只有当确定同一类型的设备上报的解码成功数量大于定义的阈值时(例如,假设成功率阈值设定为80%,服务器一共接收到100台相同类型的设备上报的解码结果,其中,85台设备上报了解码成功信息,则成功率为85%,大于预先定义的成功率阈值),进一步判断所述同一类型的设备上报的平均囤积帧数是否小于囤积帧数阈值,只有上述两个条件同时满足时,才确定所述设备类型具备兼容所述待测试视频标准的解码能力,并将所述设备类型加入对应配置的白名单中。对于白名单中的设备,当所述设备的播放客户端在后续进行视频播放时,可以启用所述设备中对应的解码功能模块对所播放的视频进行解码。而对于不满足上述两个条件的设备类型,将所对应的设备类型加入对应配置的黑名单中,并对于黑名单中的设备,当所述设备的播放客户端在后续进行视频播放时,禁用所述设备中对应的解码功能模块对所播放的视频进行解码。
示例的,在确定出某一类型的设备不具备兼容待测试视频标准的硬件解码能力时,则禁用该类型设备的硬件解码能力,启用软件解码模块对所播放的视频进行解码。
下面说明本发明实施例提供的解码能力检测装置255实施为软件模块的示例性结构,可以运行于图1所示的服务器200中。在一些实施例中,如图2A所示,存储在存储器250的解码能力检测装置255中的软件模块可以包括:发送模块2551、接收模块2552和确定模块2553。
所述发送模块2551,用于将符合待测试视频标准的测试码流、以及所述测试码流对应的期望哈希值至播放客户端,以使所述播放客户端遍历读取所述测试码流中的每一帧,并进行解码,以及
当所读取的任一帧解码完成时,确定所述任一帧的解码结果的哈希值、以及当前囤积在解码器缓存区中待解码码流的帧数;
所述接收模块2552,用于接收所述播放客户端上报的针对所述测试码流的解码数据,其中,所述解码数据是当所述测试码流中的每一帧均解码完成、且解码结果的哈希值与所述服务器对应解码成功所下发的期望哈希值一致时,由所述播放客户端生成;
所述确定模块2553,用于根据所述播放客户端上报的解码数据,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力。
在一些实施例中,所述解码数据包括解码完成信息、在解码过程中的平均囤积帧数、以及运行所述播放客户端的设备所属的设备类型;所述确定模块2553,还用于当根据所述解码完成信息确定所述播放客户端解码所述测试码流完成,且所述播放客户端上报的在解码过程中的平均囤积帧数小于囤积帧数阈值时,确定所述设备类型具备兼容所述待测试视频标准的解码能力;将所述设备类型加入白名单中,当符合所述白名单的设备通过所运行的播放客户端进行视频播放或者视频通话时,通知所述设备开启所述解码能力对应的解码器对所播放的视频或者所接收的聊天视频进行解码。
在一些实施例中,所述确定模块2553,还用于当所述播放客户端通过调用硬件解码器解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的硬件解码能力。
在一些实施例中,所述确定模块2553,还用于当所述播放客户端通过调用软件解码器解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的软件解码能力。
在一些实施例中,所述确定模块2553,还用于当接收到所述播放客户端在解码所述测试码流的过程中上报的异常信息或者解码失败信息时,确定运行所述播放客户端的设备所属的设备类型不具备兼容所述待测试视频标准的解码能力。
在一些实施例中,所述确定模块2553,还用于根据多个相同类型的设备中运行的所述播放客户端上报的解码数据,当确定每个运行播放客户端的设备具备兼容所述待测试视频标准的解码能力时,确定所述相同类型的设备均具备兼容所述待测试视频标准的解码能力。
下面继续说明本发明实施例提供的解码能力检测装置455实施为软件模块的示例性结构,可以运行于图1所示的用户终端400中。在一些实施例中,如图2B所示,存储在存储器450的解码能力检测装置455中的软件模块可以包括:接收模块4551、解码模块4552、确定模块4553和上报模块4554。
所述接收模块4551,用于通过播放客户端接收服务器下发的符合待测试视频标准的测试码流、以及所述测试码流对应的期望哈希值;
所述解码模块4552,用于遍历读取所接收的测试码流中的每一帧,并进行解码;
所述确定模块4553,用于当所读取的任一帧解码完成时,确定所述任一帧的解码结果的哈希值,以及当前囤积在播放客户端的解码器缓存区中待解码码流的帧数;
所述上报模块4554,用于当所述测试码流中的每一帧均解码完成、且解码结果的哈希值与所述服务器对应解码成功所下发的期望哈希值一致时,向所述服务器上报解码数据,以使所述服务器根据上报的解码数据,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力。
在一些实施例中,所述解码模块4552,还用于调用运行所述播放客户端的设备中的图形处理器,对所读取的每一帧进行硬件解码,或者,调用运行所述播放客户端的设备中的中央处理器,以通过运行解码软件的方式对所读取的每一帧进行软件解码。
在一些实施例中,所述上报模块4554,还用于将解码完成信息、在解码过程中的平均囤积帧数、以及运行所述播放客户端的设备的所属的设备类型上报给所述服务器,以使所述服务器执行以下操作:根据所述解码完成信息确定所述播放客户端解码所述测试码流完成、且所述平均囤积帧数小于囤积帧数阈值时,确定所述设备类型具备兼容所述待测试视频标准的解码能力;当确定所述设备类型具备兼容所述待测试视频标准的解码能力时,将所述设备类型加入白名单中,当符合所述白名单的设备通过所运行的播放客户端进行视频播放或者视频通话时,通知所述设备开启所述解码能力对应的解码器对所播放的视频或者所接收的聊天视频进行解码。
在一些实施例中,所述上报模块4554上报的解码完成信息,还用于使所述服务器执行以下操作:
当确定所述播放客户端通过调用硬件解码器来解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的硬件解码能力。
在一些实施例中,所述上报模块4554上报的解码完成信息,还用于使所述服务器执行以下操作:
当确定所述播放客户端通过调用软件解码器来解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的软件解码能力。
在一些实施例中,所述上报模块4554,还用于当所述播放客户端通过解码器在解码所接收的测试码流的过程中产生异常信息时,将所述异常信息上报给所述服务器;当所述测试码流的解码结果的哈希值与所述服务器下发的期望哈希值不一致时,将解码失败信息上报给所述服务器;其中,所述异常信息和所述解码失败信息均表征所述设备类型不具备兼容所述待测试视频标准的解码能力。
需要说明的是,对于本发明实施例提供的解码能力检测装置中未尽的技术细节,可以根据图3-6任一附图的说明而理解。
下面,将说明本发明实施例在一个实际的应用场景中的示例性应用。
针对目前各安卓厂商的系统碎片性,在正式环境使用硬件解码能力前需要进行机型兼容性的验证,是否有可能会出现花屏、绿屏、以及解码失败等问题。
相关技术在进行硬件解码能力检测时,通常对于机型参数中带有硬件解码的机型,通过不断灰度的方式验证用户的机型是否有硬解能力的兼容性问题。在客户端增加是否启用某类标准码流的硬解开关,服务器根据机型分类,不断地把开启硬解的开关灰度到用户,在客户端上报硬解的状态给服务器,如果某类机型硬解标准码流(例如H264、H265)的失败上报数量超过定义的阈值,则不再对这类机型下发该类码流的硬解启用配置,将该机型记入H264或者H265硬解能力配置的黑名单。如果某类机型硬解标准码流的失败上报数量一直在定义的阈值以下,则将该机型记入配置的白名单。对白名单的机型不断地继续灰度直至全量,对黑名单的机型关闭硬解的功能。上述方案的硬件解码能力信息来源是通过查阅厂家的参数说明得到的,但是,在通过不断灰度来确定某机型的硬件解码能力的兼容性的过程中,必然会影响硬件解码能力不兼容的机型上的产品使用。在还未确定用户机型是否兼容硬解能力的情况下对用户启用硬解功能,可能会导致不支持硬解的机型的用户在使用过程中出现应用闪退、花屏、以及绿屏等问题,在该类机型被列入黑名单之前,收到硬解开启配置的用户都将受到影响。
此外,相关技术还提供了通过类似wetest.qq.com的云真机平台安装验证d emo,在demo中尝试硬解一系列的测试码流。对于H264或者H265标准的测试码流,首先比较每个码流硬解输出的YUV和通过ffmpeg软解输出的YUV是否每一帧都完全一致,如果完全一致,则把这台手机对应的机型判断为具备硬解能力,将该机型记入硬解成功的白名单。如果硬解失败或者硬解输出的Y UV和通过ffmpeg软解输出的YUV不完全一致,则把该手机对应的机型记入硬解失败的黑名单。在客户端增加是否启用某类标准码流的硬解开关,对云真机平台验证得到的白名单机型列表,向使用该机型的用户灰度下发硬解能力开关。如果某类机型硬解H264或H265标准码流的失败上报数量超过定义的阈值,则不再对这类机型下发H264或H265的硬解启用配置,并将该机型从白名单中删除,记入硬解的黑名单。通过云真机平台对硬件解码能力进行验证,对验证过程中发现有兼容性问题的用户机型不会有影响。然而,云真机平台也具有局限性,首先,大部分机型的数量都较少,有的机型甚至没有;其次,仅在几台手机上的验证也不能很好地判断该机型是否具备稳定的硬解兼容能力。对于不具备稳定的硬解兼容能力的某类机型,收到硬解开启配置的部分用户将受到影响。
本发明实施例提出了一种基于md5校验的安卓硬件解码能力检测方法。服务器对用户的客户端随机下发一条测试码流,客户端对该测试码流进行硬解,并校验硬解输出的YUV的md5值,同时计算硬解过程中的平均囤积帧数,将md5值的校验结果和平均囤积帧数上报到服务器,服务器根据每类机型上报的所有md5值的校验结果和平均囤积帧数来确定一款机型是否具备稳定的硬件解码能力。在安卓碎片化生态下,本发明实施例通过对安卓硬件解码能力进行检测提供了可靠的支持硬解能力机型列表。
参见图6,图6是本发明实施例提供的硬件解码能力检测方法的流程示意图,如图6所示,所述方法包括以下步骤:
步骤S601:服务器向客户端下发测试码流、以及该测试码流解码后的YU V数据的期望md5值。
这里,测试码流包括H264、H265的标准参考测试码流,以及安卓、苹果手机等硬件编码的码流。
步骤S602:客户端在确认接收到服务器下发的测试码流后,开始启动硬件解码能力检测。
步骤S603:客户端所在设备的硬件解码检测模块循环读取所接收的测试码流中的每一帧。
步骤S604:判断测试码流文件是否读取结束,若是,则执行步骤S909;若否,则执行步骤S605。
步骤S605:将所读取的测试码流中的当前帧送入硬件解码器进行解码。
步骤S606:判断所述测试码流中的当前帧是否正常解码,若硬件解码器没有返回失败,则执行步骤S607;若硬件解码器抛出异常,则执行步骤S608。
步骤S607:更新当前帧解码后的YUV数据的md5状态、以及当前囤积在硬件解码器缓存区中的待解码码流的帧数。
步骤S608:中断检测过程,并将错误码上报给服务器。
步骤S609:硬解结束。
这里,硬解结束是指测试码流中的每一帧均能正常硬解,且完成对测试码流中所有帧的硬解。
步骤S610:判断硬解输出的YUV的md5值与服务器下发的期望md5值是否一致,若不一致,则执行步骤S611;若一致,则执行步骤S612。
步骤S611:向服务器上报硬解失败的消息。
步骤S612:向服务器上报硬解成功的消息、硬解过程中的平均囤积帧数、以及客户端对应的机型。
步骤S613:服务器通过收集客户端的硬解能力上报,对上报的数据进行汇总分析,仅当某类机型上报的某类标准码流的硬解成功率在定义的阈值以上,且硬解过程中的平均囤积帧数满足延时要求时,将该类机型加入对应标准的硬解配置白名单中。
本发明实施例提供的基于md5校验的硬件解码能力检测方法,服务器对用户的客户端随机下发一条测试码流,客户端对该测试码流进行硬解,并校验硬解输出的YUV的md5值,同时也计算硬解过程中的平均囤积帧数,将md5值的校验结果和平均囤积帧数上报到服务器,服务器根据每类机型上报的所有m d5值的校验结果和平均囤积帧数来确定一款机型是否具备稳定的硬件解码能力。在实际应用中,可以将本发明实施例提供的硬解能力检测方法作为产品应用的一个功能模块,当用户在移动终端(例如:手机或者pad)上使用产品应用时,服务器向用户随机下发一条测试码流,客户端单独起一个线程对该测试码流进行硬解,通过md5校验解码是否成功,并将检验的结果上报到服务器。通过分析服务器收到的报表数据,判断某类机型是否具备H264或者H265标准的硬件解码能力。当用户在进行视频聊天或者播放视频时,对通过硬解能力检测的机型开启视频通话或者视频播放时的硬解功能,以提高相应机型的硬解使用率。
本发明实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本发明实施例提供的任意一种解码能力检测方法,例如,如图3-6示出的解码能力检测方法。
在一些实施例中,存储介质可以是FRAM、ROM、PROM、EPROM、EE PROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(H TML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本发明实施例具有以下有益效果:
服务器通过向播放客户端下发测试码流,由播放客户端在解码完成后将解码结果的哈希值的校验结果和平均囤积帧数上报给服务器,从而,服务器根据播放客户端上报的哈希值的校验结果和平均囤积帧数,确定运行所述播放客户端的设备所属的设备类型针对待测试视频标准的解码能力。进一步的,服务器可以向同一类型的多个播放客户端下发测试码流,对多个播放客户端上报的测试结果进行统计分析,以更加准确地确定运行播放客户端的设备所属的设备类型针对待测试视频标准的解码能力。针对目前各厂商提供的碎片化生态下,通过本发明实施例提供的解码能力检测方法可以提供可靠的支持解码功能的设备类型列表。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
Claims (13)
1.一种解码能力检测方法,其特征在于,所述方法包括:
通过播放客户端接收服务器下发的符合待测试视频标准的测试码流、以及所述测试码流解码成功时对应的期望哈希值;
遍历读取所接收的测试码流中的每一帧,并进行解码;
当所读取的任一帧解码完成时,确定所述任一帧的解码结果的哈希值、以及当前囤积在解码器缓存区中待解码码流的帧数;
当所述测试码流中的每一帧均解码完成、且解码结果的哈希值与所述服务器对应解码成功所下发的期望哈希值一致时,向所述服务器上报包括解码完成信息、在解码过程中的平均囤积帧数、以及运行所述播放客户端的设备所属的设备类型的解码数据,以使
所述服务器根据所述播放客户端上报的解码数据,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力。
2.根据权利要求1所述的方法,其特征在于,
所述期望哈希值基于信息摘要算法生成;
所述确定所述任一帧的解码结果的哈希值,包括:
基于所述信息摘要算法确定所述任一帧的解码结果的哈希值。
3.根据权利要求1所述的方法,其特征在于,所述遍历读取所接收的测试码流中的每一帧,并进行解码,包括:
调用运行所述播放客户端的设备中的图形处理器,对所读取的每一帧进行硬件解码;或者,
调用运行所述播放客户端的设备中的中央处理器,以通过运行解码软件的方式对所读取的每一帧进行软件解码。
4.根据权利要求1所述的方法,其特征在于,
所述解码数据用于使所述服务器执行以下操作:
当根据所述解码完成信息确定所述播放客户端解码所述测试码流完成、且所述平均囤积帧数小于囤积帧数阈值时,确定所述设备类型具备兼容所述待测试视频标准的解码能力;
所述解码完成信息还用于使所述服务器执行以下操作:
当所述播放客户端的解码完成信息表示所述播放客户端调用硬件解码器解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的硬件解码能力;
当所述播放客户端的解码完成信息表示所述播放客户端调用软件解码器解码完成所述测试码流时,确定运行所述播放客户端的设备所属的设备类型具备兼容所述待测试视频标准的软件解码能力;
所述设备类型具备兼容所述待测试视频标准的解码能力,用于使所述服务器执行以下操作:
将具备兼容所述待测试视频标准的解码能力的设备类型加入白名单中,并当符合所述白名单的设备通过所运行的播放客户端进行视频播放或者视频通话时,通知所述设备开启所述解码能力对应的解码器对所播放的视频或者所接收的聊天视频进行解码。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述播放客户端在解码所接收的测试码流的过程中产生异常信息时,将所述异常信息上报给所述服务器;
当所述测试码流的解码结果的哈希值与所述服务器下发的期望哈希值不一致时,向所述服务器上报解码失败信息;
其中,所述异常信息和所述解码失败信息均表示所述设备类型不具备兼容所述待测试视频标准的解码能力。
6.根据权利要求1至5任一项所述的方法,其特征在于,
多个相同类型的设备中运行的所述播放客户端向所述服务器上报的解码数据,还用于使所述服务器执行以下操作:
当根据每个播放客户端上报的解码数据,确定每个运行播放客户端的设备具备兼容所述待测试视频标准的解码能力时,确定所述相同类型的设备均具备兼容所述待测试视频标准的解码能力。
7.一种解码能力检测方法,其特征在于,所述方法包括:
发送符合待测试视频标准的测试码流、以及所述测试码流解码成功时对应的期望哈希值至播放客户端,以使所述播放客户端遍历读取所述测试码流中的每一帧,并进行解码,以及
当所读取的任一帧解码完成时,确定所述任一帧的解码结果的哈希值、以及当前囤积在解码器缓存区中待解码码流的帧数;接收所述播放客户端上报的针对所述测试码流的解码数据;
其中,所述解码数据是当所述测试码流中的每一帧均解码完成、且解码结果的哈希值与服务器对应解码成功所下发的期望哈希值一致时,由所述播放客户端生成,且所述解码数据包括解码完成信息、在解码过程中的平均囤积帧数、以及运行所述播放客户端的设备所属的设备类型;
根据所述播放客户端上报的解码数据,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力。
8.根据权利要求7所述的方法,其特征在于,
所述期望哈希值基于信息摘要算法生成,所述确定所述任一帧的解码结果的哈希值,包括:基于所述信息摘要算法确定所述任一帧的解码结果的哈希值;
所述根据所述播放客户端上报的解码数据,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力,包括:当根据所述解码完成信息确定所述播放客户端解码所述测试码流完成、且所述平均囤积帧数小于囤积帧数阈值时,确定所述设备类型具备兼容所述待测试视频标准的解码能力。
9.一种解码能力检测装置,其特征在于,所述装置包括:
接收模块,用于通过播放客户端接收服务器下发的符合待测试视频标准的测试码流、以及所述测试码流解码成功时对应的期望哈希值;
解码模块,用于遍历读取所接收的测试码流中的每一帧,并进行解码;
确定模块,用于当所读取的任一帧解码完成时,确定所述任一帧的解码结果的哈希值,以及当前囤积在播放客户端的解码器缓存区中待解码码流的帧数;
上报模块,用于当所述测试码流中的每一帧均解码完成、且解码结果的哈希值与所述服务器对应解码成功所下发的期望哈希值一致时,向所述服务器上报包括解码完成信息、在解码过程中的平均囤积帧数、以及运行所述播放客户端的设备所属的设备类型的解码数据,以使所述服务器根据上报的解码数据,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力。
10.一种解码能力检测装置,其特征在于,所述装置包括:
发送模块,用于将符合待测试视频标准的测试码流、以及所述测试码流解码成功时对应的期望哈希值发送 至播放客户端,以使所述播放客户端遍历读取所述测试码流中的每一帧,并进行解码,以及
当所读取的任一帧解码完成时,确定所述任一帧的解码结果的哈希值、以及当前囤积在解码器缓存区中待解码码流的帧数;
接收模块,用于接收所述播放客户端上报的针对所述测试码流的解码数据,其中,所述解码数据是当所述测试码流中的每一帧均解码完成、且解码结果的哈希值与服务器对应解码成功所下发的期望哈希值一致时,由所述播放客户端生成,且所述解码数据包括解码完成信息、在解码过程中的平均囤积帧数、以及运行所述播放客户端的设备所属的设备类型;
确定模块,用于根据所述播放客户端上报的解码数据,确定运行所述播放客户端的设备所属的设备类型针对所述待测试视频标准的解码能力。
11.一种用户终端,其特征在于,所述用户终端包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至6任一项所述的解码能力检测方法。
12.一种服务器,其特征在于,所述服务器包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求7至8任一项所述的解码能力检测方法。
13.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时,实现权利要求1至6任一项、或权利要求7至8任一项所述的解码能力检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911026111.9A CN110636284B (zh) | 2019-10-25 | 2019-10-25 | 解码能力检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911026111.9A CN110636284B (zh) | 2019-10-25 | 2019-10-25 | 解码能力检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110636284A CN110636284A (zh) | 2019-12-31 |
CN110636284B true CN110636284B (zh) | 2021-11-09 |
Family
ID=68977873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911026111.9A Active CN110636284B (zh) | 2019-10-25 | 2019-10-25 | 解码能力检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110636284B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111669577A (zh) * | 2020-06-30 | 2020-09-15 | 广州市百果园信息技术有限公司 | 一种硬件解码检测方法、装置、电子设备及存储介质 |
CN112527616A (zh) * | 2020-12-14 | 2021-03-19 | 北京达佳互联信息技术有限公司 | 数据处理方法及其装置 |
CN112911337B (zh) * | 2021-01-28 | 2023-06-20 | 北京达佳互联信息技术有限公司 | 用于配置终端设备的视频封面图片的方法和装置 |
CN114025240B (zh) * | 2021-10-12 | 2024-04-23 | 山东百盟信息技术有限公司 | 电视设备能力的确定方法和装置、存储介质、电子装置 |
CN114390336A (zh) * | 2021-12-13 | 2022-04-22 | 百度在线网络技术(北京)有限公司 | 视频的解码方法、装置、电子设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101287122A (zh) * | 2008-05-23 | 2008-10-15 | 清华大学 | 一种具有主动式缓存管理和复杂度控制功能的视频解码方法 |
CN102917242A (zh) * | 2012-09-10 | 2013-02-06 | 福州瑞芯微电子有限公司 | 一种多格式视频解码器的测试系统和测试方法 |
CN105959678A (zh) * | 2016-04-20 | 2016-09-21 | 杭州当虹科技有限公司 | 一种基于音视频解码器hash特征值检测的高效回归测试方法 |
CN107920259A (zh) * | 2017-10-31 | 2018-04-17 | 深信服科技股份有限公司 | 虚拟化平台视频播放加速方法、虚拟机服务器及存储介质 |
-
2019
- 2019-10-25 CN CN201911026111.9A patent/CN110636284B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101287122A (zh) * | 2008-05-23 | 2008-10-15 | 清华大学 | 一种具有主动式缓存管理和复杂度控制功能的视频解码方法 |
CN102917242A (zh) * | 2012-09-10 | 2013-02-06 | 福州瑞芯微电子有限公司 | 一种多格式视频解码器的测试系统和测试方法 |
CN105959678A (zh) * | 2016-04-20 | 2016-09-21 | 杭州当虹科技有限公司 | 一种基于音视频解码器hash特征值检测的高效回归测试方法 |
CN107920259A (zh) * | 2017-10-31 | 2018-04-17 | 深信服科技股份有限公司 | 虚拟化平台视频播放加速方法、虚拟机服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110636284A (zh) | 2019-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110636284B (zh) | 解码能力检测方法及装置 | |
CN110740313B (zh) | 硬件编码能力检测方法及装置 | |
US11336953B2 (en) | Video processing method, electronic device, and computer-readable medium | |
US11930197B2 (en) | Video decoding method and apparatus, computer device, and storage medium | |
CN111135569A (zh) | 云游戏处理方法、装置、存储介质与电子设备 | |
CN113230660B (zh) | 应用程序更新方法、装置及设备 | |
US20150182857A1 (en) | System and Method for Delivering Media over Network | |
CN107454447B (zh) | 一种播放器的插件加载方法,装置及电视机 | |
CN112799891A (zh) | iOS设备测试方法、装置、系统、存储介质及计算机设备 | |
WO2018171548A1 (zh) | 一种解码方法、终端以及计算机可读存储介质 | |
CN108235075A (zh) | 视频质量等级匹配方法、计算机可读存储介质及终端 | |
CN111552453B (zh) | 音效场景的控制方法、终端及存储介质 | |
US20200329096A1 (en) | Interactive system, terminal apparatus, server apparatus, control method, program, and recording medium | |
WO2020248873A1 (zh) | 电视机频道预置方法、装置、计算机设备及可读存储介质 | |
CN113709447B (zh) | 一种终端设备播放性能的检测方法和装置 | |
CN114025170A (zh) | 视频播放方法、装置、计算机设备和计算机可读存储介质 | |
CN113596583A (zh) | 视频流子弹时间数据处理方法及装置 | |
CN109985387B (zh) | 自动化测试方法和装置 | |
CN115460189B (zh) | 处理设备测试方法、装置、计算机及存储介质 | |
CN112243135B (zh) | 一种多媒体播放的方法和装置 | |
KR101499194B1 (ko) | 적응형 스트리밍 방법 | |
CN114025240B (zh) | 电视设备能力的确定方法和装置、存储介质、电子装置 | |
CN113225495B (zh) | 消除视频播放杂音的方法以及装置 | |
CN114979772B (zh) | 解码器的配置方法、装置、介质以及电子设备 | |
US20220046237A1 (en) | Methods of parameter set selection in cloud gaming system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40020180 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |