视频处理方法、装置、电子设备及计算机可读取存储介质
技术领域
本申请涉及视频处理技术领域,更具体地,涉及一种视频处理方法、装置、电子设备及计算机可读取存储介质。
背景技术
随着电子技术和信息技术的发展,越来越多的设备能够播放视频。网络视频以其便捷的访问体验、多样化的影片来源、迅捷的更新速度吸引了广大用户,并在用户日常生活中起着也越来越不可缺少的作用。但是,受到网络性能的影响,设备在开始播放网络视频时会存在较多的耗时。
发明内容
本申请提出了一种视频处理方法、装置、电子设备及计算机可读取存储介质,以改善上述缺陷。
第一方面,本申请实施例提供了一种视频处理方法。该方法包括:获取网络播放请求,所述网络播放请求包括音视频文件标识;确定是否首次获取所述网络播放请求;若非首次获取所述网络播放请求,根据所述网络播放请求,查找预先存储的与所述音视频文件标识对应的目标音频文件和目标视频文件;所述目标音频文件和目标视频文件为上一次获取所述网络播放请求时,对所述音视频文件标识对应的音视频文件进行解封装处理后得到的目标音频文件和目标视频文件;根据所述目标音频文件和所述目标视频文件的时间戳,对所述目标音频文件和所述目标视频文件进行播放。
第二方面,本申请实施例还提供了一种视频处理装置,包括:请求获取模块,用于获取网络播放请求,所述网络播放请求包括音视频文件标识;请求确定模块,用于确定是否首次获取所述网络播放请求;文件查找模块,用于若非首次获取所述网络播放请求,根据所述网络播放请求,查找预先存储的与所述音视频文件标识对应的目标音频文件和目标视频文件;文件播放模块,用于根据所述目标音频文件和所述目标视频文件的时间戳,对所述目标音频文件和所述目标视频文件进行播放。
第三方面,本申请实施例还提供了一种电子设备,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述方法。
第四方面,本申请实施例还提供了一种计算机可读取存储介质,计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述方法。
本申请实施例提供的视频处理方法、装置、电子设备及计算机可读取存储介质,通过获取网络播放请求,其中,网络播放请求包括音视频文件标识,然后确定是否首次获取网络播放请求,并在非首次获取网络播放请求时,根据网络播放请求,查找预先存储的与音视频文件标识对应的目标音频文件和目标视频文件,其中,目标音频文件和目标视频文件为上一次获取网络播放请求时,对音视频文件标识对应的音视频文件进行解封装处理后得到的目标音频文件和目标视频文件,最后根据目标音频文件和目标视频文件的时间戳,对目标音频文件和目标视频文件进行播放。由此,本申请实施例通过在非首次获取包括音视频文件标识的网络播放请求时,可查找预先存储的目标音频文件和目标视频文件进行播放,不仅可降低甚至省去解封装耗时,还可降低甚至省去网络耗时,从而可大大降低首屏耗时,降低用户等待时间,减少启播时长,更即时地响应网络播放请求。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的视频播放架构的模块框图;
图2示出了本申请一实施例提供的视频播放方法的方法流程图;
图3示出了本申请另一实施例提供的视频播放方法的方法流程图;
图4示出了本申请另一实施例提供的视频播放方法中S310至S340的方法流程图;
图5示出了本申请另一实施例提供的视频播放方法中S410至S440的方法流程图;
图6示出了本申请又一实施例提供的视频播放方法的方法流程图;
图7示出了本申请实施例提供的视频播放装置的模块框图;
图8示出了本申请实施例提供的电子设备的结构框图;
图9示出了本申请实施例的用于保存或者携带实现根据本申请实施例的视频处理方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
请参阅图1,图1为适用于本申请实施例的应用场景示意图。本申请实施例提供的视频处理方法可以应用于如图1所示的视频处理系统10中。如图1所示,视频处理系统10包括服务器200和终端设备100。
终端设备100包括但不限于笔记本电脑、台式电脑、平板电脑、智能手机、可穿戴电子设备等。
在一些实施例中,客户端安装在终端设备100内,例如,可以是安装在终端设备100的应用程序。用户操作客户端时产生的数据可以存储在服务器200的存储空间内。其中,服务器200可以是单独的服务器,也可以是服务器集群,可以是本地服务器,也可以是云端服务器,在此不作限定。
终端设备100和服务器200位于无线网络或有线网络中,终端设备100和服务器200可以进行数据交互。在一些实施方式中,服务器200可以与多个终端设备100通信连接,终端设备100之间可以相互通过互联网进行通信连接,也可以将服务器200作为传输中介,并通过互联网来实现相互间的数据交互。另外,在一些实施方式中,终端设备200可以于多个服务器200通信连接,以根据需求向不同的服务器200请求数据。
在一些实施例中,终端设备100安装的客户端可接收服务器200发送的数据,并对接收的数据进行存储、显示,例如终端设备100可以向服务器200请求音视频文件的数据,服务器200接收到请求后可以向终端设备100返回对应该音视频文件的数据,终端设备100可对接收到的数据进行存储、播放等。在一些实施方法中,终端设备100可根据所请求的音视频文件的不同,而向不同的服务器200请求该音视频文件的数据。
另外,终端设备100包括系统播放模块和音视频输出模块,客户端可调用系统播放模块、音视频输出模块处理音视频文件。
客户端在获取到待播放视频文件时,将该视频文件发送至系统播放模块,系统播放模块在获取到待播放的数据时,需要解析音视频数据。一般的音视频文件可以由视频流和音频流封装组成,不同视频格式的音视频文件的封装格式不一样。将音频流和视频流合成音视频文件的过程称为封装(muxer),反之从音视频文件中分离音频流和视频流的过程称为解封装(demuxer)。封装的格式种类很多,例如MP4、MKV、FLV、AVI等,作用是将音频流和视频流按一定格式放到一起。在一个示例中,MP4格式的音视频文件经过解封装后,输出H.264编码的视频流和AAC编码的音频流,其中H.264是一种视频编码格式,AAC是一种音频编码格式。在一些实施方式中,视频流、音频流还可以采用其他编码格式,例如视频流还可以采用其他编码格式如MPEG2、VC-1等,音频流还可以采用其他编码格式如MP3、AC-3等。在一种实施方式中,于安卓系统内,该系统播放模块可以是MediaPlayer模块。
但是,发明人在研究中发现,在针对音视频文件的点播业务中,除了音视频文件自身的参数属性外,网络耗时也会影响首屏耗时,导致音视频启播时长较长。需要说明的是,首屏耗时指开始播放(如触发音视频文件的网络播放请求时)至显示出首个视频帧即第一帧画面之间所需的耗时,播放界面在未显示第一帧画面前可能处于黑屏状态,即若耗时越长,用户观看黑屏的时间越长,启播时长越长,造成用户等待时间越久。
因此,为了克服上述缺陷,请参阅图2,本申请实施例提供了一种视频处理方法,可应用于上述终端设备,具体地,该方法包括:S110至S140。
S110:获取网络播放请求。
其中,网络播放请求包括音视频文件标识,音视频文件标识与音视频文件对应,根据音视频文件标识可确定对应的音视频文件。其中,音视频文件可以是MP4格式、也可以是MKV、FLV、AVI等格式,前述格式为音视频文件的封装协议格式,例如,MP4格式的音视频文件,是基于MP4封装协议格式封装得到的音视频文件。
具体地,客户端为安装在终端设备内的应用程序,具有视频播放的功能。客户端在系统桌面设有图标,用户点击该客户端的图标,能够将该客户端打开。客户端的音视频列表界面内显示有多个音视频文件对应的显示内容,显示内容可包括文本、图像中的至少一种。用户通过选中音视频文件对应的显示内容,可触发对该音视频文件的网络播放请求,客户端通过监听用户的输入操作,获取该网络播放请求,网络播放请求携带该音视频文件的音视频文件标识。
在一个示例中,多个音视频文件对应的显示内容可包括每个音视频文件对应的缩略图,该缩略图可以作为一个触摸按键使用,用户点击该缩略图,客户端能够检测到用户所点击的缩略图,也就能够确定用户欲播放的音视频文件。
客户端在获取网络播放请求后,可将网络播放请求发送至系统播放模块,以便系统播放模块对该音视频文件进行播放。在一种实施方式中,客户端还可将网络播放请求中的音视频文件标识发送至系统播放模块,以便系统播放模块根据音视频文件标识对音视频文件标识对应的音视频文件进行播放。
S120:确定是否首次获取网络播放请求。
网络播放请求包括音视频文件标识。在一些实施方式中,通过音视频文件标识,可在存储的日志记录查询是否存在该音视频文件标识,若存在,可判定为首次获取网络播放请求,若不存在,可判定为非首次获取网络播放请求。
在一个示例中,客户端获取网络播放请求后可存储该网络播放请求的音视频文件标识,以用于查询是否首次获取该音视频文件标识,即通过存储的音视频文件标识中查询是否存在当前获取的网络播放请求中的音视频文件标识,以确定是否首次获取网络播放请求。
S130:若非首次获取网络播放请求,根据网络播放请求,查找预先存储的与音视频文件标识对应的目标音频文件和目标视频文件。
网络播放请求包括音视频文件标识,根据网络播放请求,可查找预先存储的与音视频文件标识对应的目标音频文件和目标视频文件。目标音频文件与音视频文件标识预先对应存储,目标视频文件与音视频文件标识预先对应存储,系统播放模块根据音视频文件标识,可查找预先存储的与音视频文件标识对应的目标音频文件和目标视频文件。
其中,目标音频文件和目标视频文件可以为上一次获取网络播放请求时,对音视频文件标识对应的音视频文件进行解封装处理后得到的目标音频文件和目标视频文件。也就是说,目标音频文件、目标视频文件是在对音视频文件解封装处理后得到的。
在一种实施方式中,解封装处理包括基于封装格式协议对音视频文件进行解封装得到原始码流(Elementary Streams)的操作,得到的原始码流包括音频原始码流和视频原始码流,再根据音频原始码流得到目标音频文件,根据视频原始码流得到目标视频文件,并将目标音频文件和目标视频文件分别进行存储。由此,使得在下一次获取对应该音视频文件标识的网络播放请求时,根据播放请求网络播放请求,查找预先存储的与音视频文件标识对应的目标音频文件和目标视频文件,从而可以无需根据网络播放请求重新对音视频文件标识对应的音视频文件进行解封装,因此,可降低甚至省去解封装的耗时。
并且由于目标音频文件和目标视频文件可在上一次获取网络播放请求时预先存储,因此在网络信号较差甚至无网络时,仍可播放该音视频文件标识对应的音视频文件,响应用户的播放需求,从而还可降低甚至省去通过网络请求音视频文件所需的网络耗时。
由此,通过在上一次获取网络播放请求时对音视频文件进行解封装处理后存储,使得下次播放可获取存储的目标音频文件和目标视频文件进行播放,不仅可降低甚至省去解封装耗时,还可降低甚至省去网络耗时,从而可大大降低首屏耗时,降低用户等待时间,减少启播时长,更即时地响应网络播放请求,以进行播放。
S140:根据目标音频文件和目标视频文件的时间戳,对目标音频文件和目标视频文件进行播放。
目标音频文件包括多个音频帧,目标视频文件包括多个视频帧,每一个音频帧和每一个视频帧均有对应的时间戳,从而根据时间戳,可将多个音频帧和多个视频帧对齐,并将多个音频帧发送至音频输出模块、多个视频帧发送至视频输出模块,以实现对目标音频文件和目标视频文件的音画同步播放,并实现对音视频文件的播放,响应网络播放请求。
系统播放模块在对目标音频文件和目标视频文件进行播放时,需对目标音频文件和目标视频文件进行解码,还需要根据目标音频文件和目标视频文件的时间戳进行音画同步。在一种实施方式中,可先解码再音画同步进行播放。在另一种实施方式中,也可先音画同步再解码播放。可以理解的是,采用何种实施方式,与系统所采用的架构和涉及有关,本实施例对此不做限定。
在其他一些实施方式中,还可对音频帧和视频帧的时间戳进行设置,从而可调整音频帧和视频帧的同步情况,使得音频帧对应的视频帧发生变化,从而在根据目标音频文件和目标视频文件的时间戳,对目标音频文件和目标视频文件进行播放时,可根据时间戳的不同实现不同的播放效果,以满足用户的播放需求。
本实施例通过获取网络播放请求,其中,网络播放请求包括音视频文件标识,然后确定是否首次获取网络播放请求,并在非首次获取网络播放请求时,根据网络播放请求,查找预先存储的与音视频文件标识对应的目标音频文件和目标视频文件,其中,目标音频文件和目标视频文件为上一次获取网络播放请求时,对音视频文件标识对应的音视频文件进行解封装处理后得到的目标音频文件和目标视频文件,最后根据目标音频文件和目标视频文件的时间戳,对目标音频文件和目标视频文件进行播放。由此,本申请实施例通过在上一次获取网络播放请求时对音视频文件进行解封装处理后存储,使得下次播放可获取存储的目标音频文件和目标视频文件进行播放,不仅可降低甚至省去解封装耗时,还可降低甚至省去网络耗时,从而可大大降低首屏耗时,降低用户等待时间,减少启播时长,更即时地响应网络播放请求,提升用户体验。
请参阅图3,示出了本申请实施例提供的一种视频处理方法,可应用于上述终端设备,具体地,该方法包括:S210至S270。
S210:获取网络播放请求。
S220:确定是否首次获取网络播放请求。
S230:若非首次获取网络播放请求,根据网络播放请求,查找预先存储的与音视频文件标识对应的目标音频文件和目标视频文件。
在一些实施例中,音视频文件标识为音视频文件的网络地址,目标音频文件和网络地址预先对应存储,目标视频文件和网络地址预先对应存储,由此可根据音视频文件标识,查找到目标音频文件和目标视频文件。
在一些实施方式中,网络地址可包括md5值,终端设备预先存储网络地址的md5值和目标音频文件、md5值和目标视频文件的对应关系,从而根据网络地址,可基于网络地址的md5值查找预先存储的与md5值对应的目标音频文件和目标视频文件。
其中,S210至S230的具体描述与前述实施例中对S110至S130的描述大致相同,在此不再赘述。
在一些实施例中,在上一次获取网络播放请求时,可根据网络播放请求的音视频文件标识,获取音视频文件,并对音视频文件进行解封装处理后得到的目标音频文件和目标视频文件,以供在非首次获取该网络播放请求时,可直接查找预先存储好的目标音频文件和目标视频文件进行播放。具体地,在S230之前,还可包括S310至S340,请参阅图4,图4示出了S310至S340的方法流程图,具体地,包括:
S310:获取音视频文件。
在一些实施方式中,在上一次获取网络播放请求时,网络播放请求可以包括音视频文件的网络地址,获取音视频文件的具体实施方式可以为:根据网络地址,确定目标服务器;向目标服务器发送数据请求,指示目标服务器基于数据请求返回音视频文件。其中,网络地址与音视频文件对应,对网络地址中的域名进行解析,可获得目标服务器的IP地址,以确定目标服务器,并向目标服务器建立通信,发送数据请求,指示目标服务器基于数据请求返回音视频文件。由此,通过用户点播音视频文件,客户端获取包括该音视频文件的网络地址的网络播放请求,可根据音视频文件所对应的网络地址,向对应的目标服务器请求该音视频文件,以进行播放。
在一些实施例中,目标音频文件和目标视频文件也可以是首次获取网络播放请求时存储的。由此,在获取网络播放请求后,可确定是否首次获取该网络播放请求,即确定是否首次获取该网络播放请求的音视频文件标识,若为首次获取该网络播放请求,可根据网络播放请求中音视频文件的网络地址,确定目标服务器,向目标服务器发送数据请求,指示目标服务器基于数据请求返回音视频文件。
S320:对音视频文件进行解封装处理,获得音频原始码流和视频原始码流。
具体地,对音视频文件进行解封装处理,获得音频原始码流和视频原始码流;对音频流进行解析,获得音频数据,对视频流进行解析,获得视频数据。其中,可基于封装格式协议对音视频文件进行解封装处理,例如,当音视频文件是MP4格式的文件时,可基于MP4封装格式协议对音视频文件进行解封装处理,获得音频原始码流和视频原始码流。
例如,一个MP4格式的音视频文件,基于MP4封装格式协议对该音视频文件进行解封装处理,可获得AAC编码格式的音频原始码流和H.264编码格式的视频原始码流。
需要说明的是,原始码流在其他一些实施例中,也可称为裸流,其名称并不能对本申请各实施例构成任何限制。具体地,原始码流为基于封装格式协议对音视频文件进行解封装处理后得到的数据流,可包括音频原始码流和视频原始码流,也可称为音频裸流和视频裸流。
S330:根据音频编码协议组装音频原始码流,获得目标音频原始码流,并存储于目标音频文件。
S340:根据视频编码协议组装视频原始码流,获得目标视频原始码流,并存储于目标视频文件。
在一些实施例中,音频原始码流包括音频帧数据和音频媒体元数据,视频原始码流包括视频帧数据和视频媒体元数据。
音频原始码流可以包括音频媒体元数据和音频帧数据,视频原始码流可以包括视频媒体元数据和视频帧数据。需要说明的是,媒体元数据用于解码帧数据,例如,根据音频媒体元数据,可为音频帧数据配置对应的音频解码器进行解码播放,根据视频媒体元数据,可为视频帧数据配置对应的视频解码器进行解码播放。在一些实施方式中,音频媒体元数据可以包括音频帧数据的时间戳、采样率、通道数、包长度等等,视频媒体元数据可以包括视频的分辨率、码率、帧率、时间戳、包长度等。
需要说明的是,媒体元数据、帧数据等仅是本申请实施例所采用的词语,其代表的含义在本申请实施例中已经记载,其名称并不能对本申请各实施例构成任何限制;另外,在本申请其他一些实施例中,媒体元数据也可被称为例如媒体数据等其他名字,帧数据也可被称为例如帧、包等其他名字,例如音频帧数据可称为音频包、音频帧等,视频帧数据可称为视频包、视频帧等。
由于目前对音视频文件的缓存策略中缓存的对象为利用完整的标准协议封装的音视频文件,例如MP4格式的音视频文件。在每次获取音视频文件的网络播放请求时,若要获取缓存的音视频文件进行播放,均需要对音视频文件进行解封装处理,才可获取音频原始码流、视频原始码流进行解析、解码后播放,因此在每次获取该音视频文件的网络播放请求时,即便之前已缓存过,基于目前的缓存策略,仍需要大量的解封装耗时,而这会导致首屏耗时较大。
并且基于完整的标准协议,通常除了音频媒体元数据、音频帧数据、视频媒体元数据、视频帧数据外,还包括封装格式协议如MP4、FLV等索引(moov)数据等。其中,索引数据包含轨道(track)的数量(例如,轨道的数量可以为1条,仅包括一条音频帧数据;再如,轨道的数量可以为2条,包括1条音频帧数据和1条视频帧数据)、帧数据中关键帧数据的偏移、帧数据与流轨道的关系,关键帧数据的时间戳等等信息。因此目前缓存音视频文件需占用较大的存储空间。
由此,通过对音视频文件进行解封装处理,获得音频原始码流和视频原始码流后,对音频原始码流和视频原始码流进行组装后存储,可使得最终存储的目标音频文件、目标视频文件轻量化,并且大大降低甚至还可省去解封装处理的耗时,从而大大降低首屏耗时。
在一些实施方式中,音频编码协议和视频编码协议可采用标准编码协议。例如音频编码协议可以是AAC编码协议等,根据音频编码协议对音频原始码流进行组装,获得目标音频原始码流,并存储于目标音频文件。视频编码协议可以是H.264编码协议等,根据视频编码协议对视频原始码流进行组装,获得目标视频原始码流,并存储于目标视频文件,以在需要对目标音频文件和目标视频文件进行播放时,可基于标准编码协议解析目标音频文件和目标视频文件,获得音频媒体元数据配置解码器以对音频帧数据进行解码,获得视频媒体元数据配置解码器以对视频帧数据进行解码。
由此,本实施例通过对音视频文件进行解封装处理,获得音频原始码流和视频原始码流后,再根据音频编码协议组装音频原始码流,获得目标音频原始码流,并存储于目标音频文件,根据视频编码协议组装视频原始码流,获得目标视频原始码流,并存储于目标视频文件,从而目标音频文件主要存储音频帧数据以及音频媒体元数据,目标视频文件主要存储视频帧数据以及视频媒体元数据,无需存储封装格式协议等、索引数据等其他数据,降低存储压力,使得存储和数据传输轻量化,并且省去可解封装处理的耗时,大大降低首屏耗时。
另外,由于标准编码协议如AAC、H.264等,为了适用于各个平台、各种播放器,为了更高的通用性,往往需要按照既定规则写入各种各样的数据,一般要占用几十个字节。因此,在另一些实施方式中,音频编码协议、视频编码协议也可以是非标准、非通用的编码协议,以减少协议字节数,使得存储和传输轻量化。例如,音频编码协议、视频编码协议可以是用户自定义的编码协议,或者不同平台自定义的编码协议。具体地,根据用户所使用的或平台自身的解码模块或播放器,采用自定义的一套编码规则形成的编码协议来组装原始码流,使得解码模块或播放器可通过解析编码协议,确定配置解码器所需的媒体元数据。由于要实现播放,需根据原始码流中的媒体元数据为帧数据配置解码器以解码帧数据进行播放,因此,通过自定义的音频编码协议组装音频原始码流后得到的目标音频文件、通过自定义的视频编码协议组装视频原始码流后得到的目标视频文件,不能被其他用户或平台随意解码播放,从而可提高数据安全性,防止被其他平台或用户拦截音视频文件、目标音频文件、目标视频文件等。
在一些示例中,音频编码协议、视频编码协议可以是平台自定义的编码协议,如YY平台使用的YY协议,可通过YY平台的解码模块或播放器解析YY协议,确定配置解码器所需的媒体元数据,以解码播放。自定义的编码协议可以利用数字编号来映射标准编码协议中各个字段对应的值,从而通过解析编码协议可确定媒体元数据,由此,自定义的编码协议不需要定义多个字段,往往只需要几个字节,可使得解码模块或播放器可通过解析该编码协议获得媒体元数据,不仅使得目标音频文件、目标视频文件轻量化,而且还可提高解析协议的效率。
另外,对于交叉存储异常的音视频文件,即音视频文件的首个视频帧较首个音频帧靠后,本实施例还可进一步地降低首屏耗时。由于音频帧数据、视频帧数据经过编码、封装后写入音视频文件时,存在文件偏移位置,例如如果音视频文件中首个视频帧之前存在长达20s的音频帧数据,那么就需要先把前面的索引数据和音频帧数据都读取完,才会读取到该首个视频帧,那么首屏耗时即首个视频帧出现的时间自然就长了,因此通过音频编码协议组装音频原始码流并存储于目标音频文件、通过视频编码协议组装视频原始码流并存储于目标视频文件,使得目标音频文件、目标视频文件可不存储索引数据等,使得存储、传输更轻量化,可更大程度地降低首屏耗时。在一些实施方式中,还可采用自定义的编码协议进行组装,使得存储字节更少,实现更进一步的轻量化存储、传输。
另外,在一些实施方式中,音频编码协议可先对音频媒体元数据进行组装,视频编码协议可先对视频媒体元数据进行组装,使得解码播放前,需基于编码协议先解析获得音频媒体元数据和视频媒体元数据。具体地,S330、S340的具体实施方式可包括S410至S440,请参阅图5,图5示出了S410至S440的方法流程图,具体地,包括:
S410:基于音频编码协议,对音频媒体元数据进行组装,获得音频协议帧头。
S420:基于视频编码协议,对视频媒体元数据进行组装,获得视频协议帧头。
通过对音频媒体元数据进行组装,可使得在无法解析音频编码协议时,无法对音频帧数据配置解码器进行解码,也就无法播放目标音频文件。同理,通过对视频媒体元数据进行组装,可使得在无法解析视频编码协议时,无法对视频帧数据配置解码器进行解码,也就无法播放目标视频文件。从而通过基于音频编码协议,对音频媒体元数据进行组装,获得音频协议帧头,基于视频编码协议,对视频媒体元数据进行组装,获得视频协议帧头,可提高目标音频文件和目标视频文件的存储安全性。
在一些实施方式中,根据所采用的音频编码协议、视频编码协议的不同,可不同程度地提高文件安全性,防止被拦截。例如,在采用非标准、非通用的音频编码协议、视频编码协议进行组装时,可防止其他无法获知该非标准、非通用的音频编码协议或视频编码协议的平台或用户无法解析目标音频文件、目标视频文件,也就无法得到音频媒体元数据和视频媒体元数据,进而无法进行解码、播放,因此可进一步提高目标音频文件、目标视频文件的数据安全性,防止被其他用户或平台拦截。
S430:将音频协议帧头和音频帧数据进行拼接处理,获得拼接后的音频原始码流作为目标音频原始码流,并存储于目标音频文件。
在一种实施方式中,将音频协议帧头和音频帧数据进行拼接处理,包括将音频协议帧头封装在音频帧数据之前。由此获得拼接后的音频原始码流作为目标音频原始码流,并存储于目标音频文件。在一些示例中,目标音频原始码流的形式可以为音频协议帧头+音频帧数据的形式。由此,获取到音视频文件对应的网络播放请求时,无需再作解封装处理,仅需基于音频编码协议对目标音频文件进行解析获得音频帧数据和音频媒体元数据,以进行解码播放,可以省去通过标准的封装格式协议进行解封装处理所需的解封装处理耗时,因此可降低首屏耗时。
S440:将视频协议帧头和视频帧数据进行拼接处理,获得拼接后的视频原始码流作为目标视频原始码流,并存储于目标视频文件。
在一种实施方式中,将视频协议帧头和视频帧数据进行拼接处理,包括将视频协议帧头拼接在视频帧数据之前。由此获得拼接后的视频原始码流作为目标视频原始码流,并存储于目标视频文件。在一些示例中,目标视频原始码流的形式可以为视频协议帧头+视频帧数据的形式。由此,获取到音视频文件对应的网络播放请求时,无需再作解封装处理,在仅需基于视频编码协议对目标视频文件进行解析获得视频帧数据和视频媒体元数据,以进行解码播放,可以省去通过标准的封装格式协议进行解封装处理所需的解封装处理耗时,因此可降低首屏耗时。
由此在需要播放目标音频文件、目标视频文件时,需先解析音频协议帧头和视频协议帧头,才可为音频帧数据、视频帧数据配置解码器进行解码。
另外,在一些实施例中,音频编码协议、视频编码协议还可采用平台自定义的编码协议,可使得所存储的目标音频文件和目标视频文件无法在其他平台的播放器进行播放,防止其他平台或用户拦截,提高数据安全性。
在一些可能的实施方式中,平台自定义的编码协议可以是YY协议,相较于标准协议只需使用更少的字节,即可组装媒体元数据。在一个示例中,YY协议可包括YY音频协议和YY视频协议,经YY音频协议组装音频媒体元数据得到的音频协议帧头主要包括音频编码信息参数,例如,音频的时间戳、采样率、通道数、包长度等;经YY视频协议组装视频媒体元数据得到的视频协议帧头主要包括视频编码信息参数,例如,视频的分辨率、码率、帧率、时间戳、包长度等。由此,通过采用平台自定义的编码协议分别组装音频媒体元数据和视频媒体元数据,可使得目标音频文件和目标视频文件不仅无需包括其他通过标准协议封装所需的数据,例如索引(moov)数据等,从而在一定程度上节省存储空间,而且还可防止其他平台或用户拦截,提高数据安全性,提高解析协议的效率。
在一些实施例中,可将目标音频文件、目标视频文件存入与音视频文件标识对应的文件缓存,其中,文件缓存对应设置有存储期限,在到达存储期限时,文件缓存内的数据被清除。因此,在存储期限内,存储的目标音频文件、目标视频文件可保存在终端设备的文件缓存内,在下次获取包括音视频文件标识的网络播放请求时,可从文件缓存中取目标音频文件、目标视频文件,以进行播放,从而可在非首次获取该音视频文件标识对应的网络播放请求时,省去网络耗时。
其中,存储期限可以是程序预设的,也可自定义,可以是一个月,也可以是10天、2个月等,在此不作限定。在一个示例中,若存储期限为10天,在目标音频文件、目标视频文件首次存储入文件缓存开始,10天内再获取音视频文件标识对应的网络播放请求时,可从文件缓存中查找目标音频文件、目标视频文件进行播放,可以无需向服务器请求音视频文件,从而可省去网络耗时。而在10天后,文件缓存内的数据被清除。
S240:基于音频编码协议对目标音频文件进行解析,获得音频媒体元数据和音频帧数据。
基于音频编码协议对目标音频文件进行解析,可获取音频协议帧头和音频帧数据,并对音频协议帧头进行解析,获得音频媒体元数据。
S250:基于视频编码协议对目标视频文件进行解析,获得视频媒体元数据和视频帧数据。
基于视频编码协议对目标视频文件进行解析,可获取视频协议帧头和视频帧数据,并解析视频封装协议对视频数据协议帧头进行解析,获得视频媒体元数据。
由于目前文件缓存策略,一般存储的是基于标准封装格式协议封装的音视频文件,则在下次播放时,还需基于标准封装格式协议进行解封装处理,而解封装处理的耗时较长。由此,本实施例通过在上一次获取网络播放请求时,对音视频文件进行解封装处理,获得音频原始码流和视频原始码流,并基于音频编码协议再组装音频原始码流,得到目标音频原始码流并存储与目标音频文件,基于视频编码协议再组装视频原始码流后,得到目标视频原始码流并存储于目标视频文件,并且将目标音频文件以及目标视频文件和音视频文件标识对应存储,可在获取网络播放请求时,获取预先存储的目标音频文件和目标视频文件进行解析、解码播放,省去目前文件缓存策略所需的解封装处理的耗时,大大降低首屏耗时。
S260:基于音频媒体元数据,为音频帧数据配置音频解码器并对音频帧数据进行解码以获取音频播放数据,基于视频媒体元数据,为视频帧数据配置视频解码器并对视频帧数据进行解码以获取视频播放数据。
在一些实施方式中,解码器包括音频解码器和视频解码器,解码器可以是预先创建的,并每个解码器具有解码器标识。例如,通过预先存储音频媒体元数据和解码器标识的音频解码映射关系,可基于该音频解码映射关系,通过音频媒体元数据确定对应的音频解码器,为音频帧数据配置该音频解码器并对音频帧数据进行解码以获取音频播放数据。例如,通过预先存储视频媒体元数据和解码器标识的视频解码映射关系,可基于该视频解码映射关系,通过视频媒体元数据确定对应的视频解码器,为视频帧数据配置该视频解码器并对视频帧数据进行解码以获取视频播放数据。
其中,解码后获得的音频播放数据可以为非压缩的数据,例如可以是PCM格式的数据等。音频播放数据可被终端设备的音频输出模块播放。例如,音频输出模块可根据PCM编码驱动声卡播放音频播放数据。解码后获得的视频播放数据可以为非压缩的数据,如YUV420P、RGB格式的数据等。视频播放数据经渲染合成后可显示于终端设备的显示屏上。在一个示例中,通过将视频播放数据发送至图层传递模块(SurfaceFlinger)可渲染合成出显示画面,并在终端设备的显示屏上显示。
在另一些实施方式中,解码器也可以是根据媒体元数据创建的。例如,基于音频媒体元数据,可创建与音频媒体元数据对应的音频解码器,并为音频帧数据配置该音频解码器,基于该音频解码器对音频帧数据进行解码以获取音频播放数据。例如,基于视频媒体元数据,可创建与视频媒体元数据对应的视频解码器,并为视频帧数据配置该视频解码器,基于该视频解码器对视频帧数据进行解码以获取视频播放数据。
S270:根据目标音频文件和目标视频文件的时间戳,播放音频播放数据和视频播放数据。
根据目标音频文件和目标视频文件的时间戳,可将音频播放数据和视频播放数据对齐,并将音频播放数据发送至音频输出模块、将视频播放数据发送至视频输出模块,实现音画同步播放。
需要说明的是,上述步骤中未详细描述的部分,可参考前述实施例,在此不再赘述。
由于目前点播业务的首屏耗时主要由网络耗时、解封装、解码、设备渲染延时等组成,本实施例通过预先存储目标音频文件和目标视频文件,可在获取包括音视频文件标识的网络播放请求后,确定是否首次获取该网络播放请求,并在非首次获取该网络播放请求时,查找预先存储的目标音频文件和目标视频文件进行播放,可省去网络耗时。
并且,在上一次获取包括该音视频文件标识的网络播放请求时,通过对音视频文件进行解封装处理,获得音频原始码流和视频原始码流,并基于音频编码协议再组装音频原始码流,得到目标音频原始码流并存储于目标音频文件,基于视频编码协议再组装视频原始码流后,得到目标视频原始码流并存储于目标视频文件,再将目标音频文件和目标视频文件与音视频文件标识对应存储。
由此,在非首次获取包括该音视频文件标识的网络播放请求时,可查找预先存储的目标音频文件、目标视频文件,无需再获取完整的音视频文件作解封装处理,仅需基于音频编码协议解析目标音频文件,基于视频编码协议解析目标视频文件,可获得音频媒体元数据和音频帧数据、视频媒体元数据和视频帧数据,以分别解码播放。因此本实施例还可省去目前文件缓存策略所需的解封装处理耗时。由此,本实施例可省去点播业务中的网络耗时、解封装处理耗时,从而大大降低首屏耗时,减少启播时长。
此外,由于若无法解析自定义的编码协议,就无法获得媒体元数据,也就无法为帧数据配置解码器进行解码播放,因此通过自定义的音频编码协议组装音频媒体元数据后得到的目标音频文件、和通过自定义的视频编码协议组装视频媒体元数据后得到的目标视频文件,可起到防止其他平台或用户拦截的作用。同时,在一些实施例中,由于最后存储的目标音频文件包括音频协议帧头和音频帧数据,目标视频文件包括视频协议帧头和视频帧数据,而不包括其他一些通过标准协议封装所需的数据,例如索引(moov)数据,因此还可在一定程度上节省终端设备的存储空间,使得存储和数据传输轻量化。
在一些实施例中,音频编码协议、视频编码协议可以是用户自定义的编码协议,或者不同平台自定义的编码协议。自定义的编码协议往往对应自定义的解码模块,从而解码模块可解析根据自定义的协议组装的数据,从而配置对应的解码器,对帧数据进行解码、播放。具体地,请参阅图6,示出了本申请一个实施例提供的信息推送方法,该方法包括:S510至S570。
S510:获取网络播放请求。
S520:确定是否首次获取网络播放请求。
S530:若非首次获取网络播放请求,根据网络播放请求,查找预先存储的与音视频文件标识对应的目标音频文件和目标视频文件。
S540:基于音频编码协议对目标音频文件进行解析,获得音频帧数据以及音频协议帧头对应的音频解码器标识。
其中,音频编码协议为自定义的音频编码协议,对应有自定义的解码模块,该解码模块可解析音频编码协议,具体地,对目标音频文件的目标音频原始码流,并获取目标音频原始码流的音频协议帧头和音频帧数据,解析基于音频编码协议组装的音频协议帧头,获得音频协议帧头对应的音频解码器标识,由此获得音频帧数据以及音频协议帧头对应的音频解码器标识。在一种实施方式中,可预先存储有音频编码映射表,解码模块基于音频编码映射表,可查找音频协议帧头对应的音频解码器标识。
S550:基于视频编码协议对目标视频文件进行解析,获得视频帧数据以及视频协议帧头对应的视频解码器标识。
其中,视频编码协议为自定义的视频编码协议,对应有自定义的解码模块,该解码模块可解析视频编码协议,具体地,对目标视频文件的目标视频原始码流,并获取目标视频原始码流的视频协议帧头和视频帧数据,解析基于视频编码协议组装的视频协议帧头,获得视频协议帧头对应的视频解码器标识,由此获得视频帧数据以及视频协议帧头对应的视频解码器标识。在一种实施方式中,可预先存储有视频编码映射表,解码模块基于视频编码映射表,可查找视频协议帧头对应的视频解码器标识。
S560:为音频帧数据配置音频解码器标识对应的音频解码器,并对音频帧数据进行解码以获取音频播放数据,为视频帧数据配置视频解码器标识对应的视频解码器,并对视频帧数据进行解码以获取视频播放数据。
S570:根据目标音频文件和目标视频文件的时间戳,播放音频播放数据和视频播放数据。
需要说明的是,上述步骤中未详细描述的部分,可参考前述实施例,在此不再赘述。
请参阅图7,其示出了本申请实施例提供的一种视频处理装置700的结构框图,该视频处理装置700可以包括:请求获取模块710、请求确定模块720、文件查找模块730以及文件播放模块740。
请求获取模块710,用于获取网络播放请求,所述网络播放请求包括音视频文件标识;
请求确定模块720,用于确定是否首次获取所述网络播放请求;
文件查找模块730,用于若非首次获取所述网络播放请求,根据所述网络播放请求,查找预先存储的与所述音视频文件标识对应的目标音频文件和目标视频文件;
文件播放模块740,用于根据所述目标音频文件和所述目标视频文件的时间戳,对所述目标音频文件和所述目标视频文件进行播放。
进一步地,所述根据所述网络播放请求,查找预先存储的与所述音视频文件对应的目标音频文件和目标视频文件之前,所述视频处理装置700还包括:音视频获取模块、音视频处理模块、音频封装模块以及视频封装模块,其中:
音视频获取模块,用于获取所述音视频文件;
音视频处理模块,用于对所述音视频文件进行解封装处理,获得音频原始码流和视频数据原始码流;
音频封装模块,用根据音频编码协议组装所述音频原始码流,获得目标音频原始码流,并存储于目标音频文件;
视频封装模块,用于根据视频编码协议组装所述视频原始码流,获得目标视频原始码流,并存储于目标视频文件。
进一步地,所述音频原始码流包括音频帧数据和音频媒体元数据,所述视频原始码流包括视频帧数据和视频媒体元数据,所述音频封装模块、所述视频封装模块包括:音频协议子模块、视频协议子模块、音频封装子模块以及视频封装子模块,其中:
音频协议子模块,用于基于音频编码协议,对所述音频媒体元数据进行组装,获得音频协议帧头;
视频协议子模块,用于基于视频编码协议,对所述视频媒体元数据进行组装,获得视频协议帧头;
音频封装子模块,用于将所述音频协议帧头和所述音频帧数据进行拼接处理,并存储于目标音频文件;
视频封装子模块,用于将所述视频协议帧头和对所述视频帧数据进行拼接处理,并存储于目标视频文件。
进一步地,文件播放模块740可包括:第一解析子模块、第二解析子模块、解码子模块以及播放子模块,其中:
第一解析子模块,用于基于所述音频编码协议对所述目标音频文件进行解析,获得所述音频媒体元数据和所述音频帧数据;
第二解析子模块,用于基于所述视频编码协议对所述目标视频文件进行解析,获得所述视频媒体元数据和所述视频帧数据;
第一解码子模块,用于基于所述音频媒体元数据,为所述音频帧数据配置音频解码器并对所述音频帧数据进行解码以获取音频播放数据,基于所述视频媒体元数据,为所述视频帧数据配置视频解码器并对所述视频帧数据进行解码以获取视频播放数据;
第一播放子模块,用于根据所述目标音频文件和所述目标视频文件的时间戳,播放所述音频播放数据和所述视频播放数据。
进一步地,文件播放模块740可包括:第三解析子模块、第四解析子模块、第二解码子模块以及第二播放子模块,其中:
第三解析子模块,用于基于所述音频编码协议对所述目标音频文件进行解析,获得所述音频帧数据以及所述音频协议帧头对应的音频解码器标识;
第四解析子模块,用于基于所述视频编码协议对所述目标视频文件进行解析,获得所述视频帧数据以及所述视频协议帧头对应的视频解码器标识;
第二解码子模块,用于为所述音频帧数据配置所述音频解码器标识对应的音频解码器,并对所述音频帧数据进行解码以获取音频播放数据,为所述视频帧数据配置所述视频解码器标识对应的视频解码器,并对所述视频帧数据进行解码以获取视频播放数据;
第二播放子模块,用于根据所述目标音频文件和所述目标视频文件的时间戳,播放所述音频播放数据和所述视频播放数据。
进一步地,所述网络播放请求包括所述音视频文件的网络地址,所述音视频获取模块包括:服务器确定子模块以及数据请求子模块,其中:
服务器确定子模块,用于根据所述网络地址,确定目标服务器;
数据请求子模块,用于向所述目标服务器发送数据请求,指示所述目标服务器基于所述数据请求返回所述音视频文件。
进一步地,所述播放请求网络播放请求包括所述音视频文件的网络地址,所述确定是否首次获取所述网络播放请求之后,所述视频处理装置700还包括:
首次确定模块,用于若为首次获取所述网络播放请求,根据所述网络地址,确定目标服务器;
首次请求模块,用于向所述目标服务器发送数据请求,指示所述目标服务器基于所述数据请求返回所述音视频文件。
进一步地,所述根据所述网络播放请求,查找预先存储的与所述音视频文件标识对应的目标音频文件和目标视频文件之前,所述视频处理装置700还包括:文件缓存模块,其中:
文件缓存模块,用于将所述目标音频文件、所述目标视频文件存入与所述音视频文件标识对应的文件缓存,所述文件缓存对应设置有存储期限,在到达所述存储期限时,所述文件缓存内的数据被清除。本申请实施例提供的视频处理装置用于实现前述方法实施例中相应的视频处理方法,并具有相应的方法实施例的有益效果,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参考图8,其示出了本申请实施例提供的一种电子设备的结构框图。该电子设备800可以是智能手机、平板电脑、电子书等能够运行应用程序的电子设备。本申请中的电子设备800可以包括一个或多个如下部件:处理器810、存储器820以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器820中并被配置为由一个或多个处理器810执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器810可以包括一个或者多个处理核。处理器810利用各种接口和线路连接整个电子设备800内的各个部分,通过运行或执行存储在存储器820内的指令、程序、代码集或指令集,以及调用存储在存储器820内的数据,执行电子设备800的各种功能和处理数据。可选地,处理器810可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器810可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器810中,单独通过一块通信芯片进行实现。
另外,处理器810可包括系统播放模块,则系统播放模块的具体实施方式可参考前述实施例,在此不再赘述。
存储器820可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器820可用于存储指令、程序、代码、代码集或指令集。存储器820可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备800在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图9,其示出了本申请实施例提供的一种计算机可读取存储介质的结构框图。该计算机可读取存储介质900中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读取存储介质900可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读取存储介质900包括非易失性计算机可读取存储介质(non-transitory computer-readable storage medium)。计算机可读取存储介质900具有执行上述方法中的任何方法步骤的程序代码910的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码910可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。