CN110418186A - 音视频播放方法、装置、计算机设备和存储介质 - Google Patents

音视频播放方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN110418186A
CN110418186A CN201910104484.7A CN201910104484A CN110418186A CN 110418186 A CN110418186 A CN 110418186A CN 201910104484 A CN201910104484 A CN 201910104484A CN 110418186 A CN110418186 A CN 110418186A
Authority
CN
China
Prior art keywords
audio
video
decoded
buffer queue
target
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.)
Granted
Application number
CN201910104484.7A
Other languages
English (en)
Other versions
CN110418186B (zh
Inventor
翁名为
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910104484.7A priority Critical patent/CN110418186B/zh
Publication of CN110418186A publication Critical patent/CN110418186A/zh
Application granted granted Critical
Publication of CN110418186B publication Critical patent/CN110418186B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/44012Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47217End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for controlling playback functions for recorded or on-demand content, e.g. using progress bars, mode or play-point indicators or bookmarks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/482End-user interface for program selection
    • H04N21/4825End-user interface for program selection using a list of items to be played back in a given order, e.g. playlists
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content

Abstract

本申请涉及一种音视频播放方法、装置、计算机设备和存储介质,获取目标播放位置信息;当根据所述目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除所述已解码缓存队列中所述目标解码音视频帧之前的解码音视频帧;取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。由于可以从目标播放位置信息在已解码缓存队列中、对应的目标解码音视频帧的位置开始渲染播放,如此,可以降低实际播放位置与目标播放位置之间的时间偏差。

Description

音视频播放方法、装置、计算机设备和存储介质
技术领域
本申请涉及多媒体技术领域,特别是涉及一种音视频播放方法、装置、计算机设备和存储介质。
背景技术
多媒体技术是专指于电脑程序中处理图形、图像、影音、声讯、动画等的电脑应用技术。音视频播放方法是指对影音、动画等包括音频或/即视频的多媒体数据的播放方法。
传统的音视频播放方法,在播放过程中,若发生播放进度拖动操作,拖动之目标位置信息对应的目标位置处,需获取目标位置信息,从数据源当中寻找目标位置前面的一个关键帧,从该关键帧开始播放。
由于从目标位置前面的一个关键帧开始播放,因此,传统的音视频播放方法,存在实际播放位置与目标播放位置之间的时间偏差大的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种降低实际播放位置与目标位置之间的时间偏差的音视频播放方法、装置、计算机设备和存储介质。
一种音视频播放方法,所述方法包括:
获取目标播放位置信息;
当根据所述目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除所述已解码缓存队列中所述目标解码音视频帧之前的解码音视频帧;
取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。
一种视频播放装置,所述装置包括:
目标位置获取模块,用于获取目标播放位置信息;
已解码帧删除模块,用于当根据所述目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除所述已解码缓存队列中所述目标解码音视频帧之前的解码音视频帧;
已解码帧渲染模块,用于取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下的步骤:
获取目标播放位置信息;
当根据所述目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除所述已解码缓存队列中所述目标解码音视频帧之前的解码音视频帧;
取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下的步骤:
获取目标播放位置信息;
当根据所述目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除所述已解码缓存队列中所述目标解码音视频帧之前的解码音视频帧;
取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。
上述的音视频播放方法、装置、计算机设备和存储介质,获取目标播放位置信息;当根据所述目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除所述已解码缓存队列中所述目标解码音视频帧之前的解码音视频帧;取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。由于可以从目标播放位置信息在已解码缓存队列中、对应的目标解码音视频帧的位置开始渲染播放,如此,可以降低实际播放位置与目标播放位置之间的时间偏差。
附图说明
图1为一个实施例中音视频播放方法的应用环境图;
图2为一个实施例中音视频播放方法的流程示意图;
图3为一个实施例的截图;
图4为传统方式与本申请的音视频播放方法的效果说明图;
图5为传统方式的音视频播放方法中与图3对应的一个截图;
图6为一个实施例的音视频播放方法中与图3对应的一个截图;
图7为一个具体实施例中音视频播放方法的工作原理示意图;
图8为一个具体实施例中音视频播放方法的流程示意图;
图9为一个实施例中音视频播放装置的结构框图;
图10为一个实施例中计算机结构的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中音视频播放方法的应用环境图。本申请提供的音视频播放方法,可应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。本申请实施例的音视频播放方法可以运行在终端102上,音视频的一般播放过程为:服务器104可通过网络发送音视频数据源至终端102,终端102或者设置在终端102上的音视频播放类APP(应用程序)获取音视频数据源;根据所述音视频数据源的封装格式进行解复用,得到音视频数据包,并将解复用得到的音视频数据包添加至未解码缓存队列;取出所述未解码缓存队列中的音视频数据包进行解码,得到解码音视频帧,并将解码得到的解码音视频帧添加至已解码缓存队列;取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,展示渲染结果。当播放进度发生拖动等改变时,终端102获取目标播放位置信息;当根据所述目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除所述已解码缓存队列中所述目标解码音视频帧之前的解码音视频帧;取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。其中,终端102可以但不限于是个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
如图2所示,在一个实施例中,提供了一种音视频播放方法。本实施例主要以该方法应用于上述图1中的终端102来举例说明。该音视频播放方法,包括以下步骤:
S202,获取目标播放位置信息。
目标播放位置信息是指音视频的目标播放位置的信息。目标播放位置可以是在播放过程中,用户改变播放进度时,输入至终端的目标进度位置。该目标播放位置可以通过播放时间轴上的播放时间的形式体现。例如,如图3所示,用户可以在播放界面的播放时间轴上,通过拖动播放时间点的形式输入目标播放位置信息,如14:48。终端接收该目标播放位置信息。
具体如,终端可以接收播放进度改变请求,该播放进度改变请求中携带目标播放位置信息。该播放进度改变请求用于请求终端根据该目标播放位置信息,改变音视频的播放进度。终端在对该播放进度改变请求进行响应时,可以通过通用接口的拖动函数(其命名可以为seekTo)作为响应函数。终端可以从该播放进度改变请求中获取到目标播放位置信息。
目标播放位置还可以是音视频播放之前的预设播放位置,该初始播放位置可以是默认值,如可以是时间为0的位置,又如可以是预设的一个关键音视频帧位置,再如,可以是预设的任意一个音视频帧的位置。
S204,当根据目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除已解码缓存队列中目标解码音视频帧之前的解码音视频帧。
已解码缓存队列用于对在音视频播放过程中的每一个已解码音视频帧按照先进先出的顺序进行缓存。目标解码音视频帧为已解码缓存队列中与目标播放位置信息对应的解码音视频帧。如,目标解码音视频帧可以是已解码缓存队列中时间戳等于目标播放位置信息对应的时间戳的解码音视频帧。更具体如,由于同一时间戳可能会对应多个音视频帧,目标解码音视频帧可以是已解码缓存队列中时间戳第一个等于目标播放位置信息对应的时间戳的解码音视频帧。又如,目标解码音视频帧可以是已解码缓存队列中时间戳小于或等于目标时间戳,且其下一解码音视频帧的时间戳大于目标时间戳的解码音视频帧,其中目标时间戳为目标播放位置信息对应的时间戳。
已解码缓存队列中目标解码音视频帧之前的解码音视频帧,是指在已解码缓存队列里面,排在目标解码音视频帧之前的所有解码音视频帧。可以是按照音视频帧解码时间的先后顺序进行排列。假设视频按照顺序播放,目标解码音视频帧为第8个已解码音视频帧,那么在解码时间上排在第8个已解码音视频帧之前的已解码音视频帧(第1-7个已解码音视频帧),即为已解码缓存队列中目标解码音视频帧之前的解码音视频帧。
当终端根据目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除已解码缓存队列中目标解码音视频帧之前的解码音视频帧。如此,使得下一次从已解码缓存队列取出解码音视频帧时,可以从已解码缓存队列中取出目标解码音视频帧。
S206,取出已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。
终端可以在所述已经删除了目标解码音视频帧之前的解码音视频帧的已解码缓存队列中,取出解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。该取出的第一个解码音视频帧是目标播放位置信息对应的解码音视频帧。
在从已解码缓存队列中查找到目标解码音视频帧的实施例中,该取出的第一个解码音视频帧实质就是目标解码音视频帧。其后续取出的解码音视频帧为目标播放位置信息之后的播放位置对应的解码音视频帧。该已解码缓存队列为音视频播放过程中、对每一个已解码音视频帧按照先进先出的顺序进行缓存的缓存队列。
对该取出的解码音视频帧进行渲染,并展示渲染结果,如此,对取出的解码音视频帧进行播放。由于取出的解码音视频帧即为目标解码音视频帧,因此,实际播放的位置即为目标解码音视频帧对应的时间戳,也即目标播放位置信息在已解码缓存队列中对应的已解码音视频帧的时间戳。如此,可以从目标播放位置信息在已解码缓存队列中、对应的目标解码音视频帧的位置开始渲染播放。
基于本实施例的音视频播放方法,获取目标播放位置信息;当根据目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除已解码缓存队列中目标解码音视频帧之前的解码音视频帧;取出已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。由于可以从目标播放位置信息在已解码缓存队列中、对应的目标解码音视频帧的位置开始渲染播放,如此,可以降低实际播放位置与目标播放位置之间的时间偏差。
为了更清楚地描述本申请的有益效果,请参阅图4,假设目标播放位置对应的时间戳在第15秒(s)处,其附近的关键音视频帧对应的时间戳分别在第10s和第18s处。若采用传统方式的音视频播放方法,在获取到目标播放位置信息之后,将从上一关键音视频帧对应的时间戳,也即第10s处开始播放。而若采用本申请的音视频播放方法,在获取到目标播放位置信息后,若第15s对应的音视频帧在已解码缓存队列中,则将从第15s处开始播放。
在一个具体示例中,如图3所示,将目标播放位置设置为14:48处,若采用传统方式的音视频播放方法,其实际播放位置如图5所示,为14:39处。若采用本申请的音视频播放方法,其实际播放位置如图6所示,为14:48处。
在其中一个实施例中,取出已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果之前,还包括:当根据目标播放位置信息,从已解码缓存队列中未查找到目标解码音视频帧时,清空已解码缓存队列。
如果在已解码缓存队列中,未能查找到与目标位置信息对应的目标解码音视频帧,说明在最近解码的解码音视频帧中,没有目标播放位置信息对应的解码音视频帧。因此,可以清空该已解码缓存队列。该被清空的已解码缓存队列可以供音视频播放过程中、获取目标播放位置信息之后解码的解码音视频帧进行缓存。
由于每次渲染都需要从已解码缓存队列中,取出已解码缓存队列中的最先存入已解码缓存队列的解码音视频帧,也即取出的解码音视频帧是在已解码缓存队列中一段连续的解码音视频帧里时间戳最早的解码音视频帧。因此,当根据目标播放位置信息,从已解码缓存队列中未查找到目标解码音视频帧时,清空已解码缓存队列,可以使得通过其它方式找到目标播放位置信息对应的音视频帧,对其进行解码后得到解码音视频帧,并添加到已解码缓存队列中后,该解码音视频帧可以被第一个取出并进行渲染播放。如此,避免在播放目标播放位置信息对应的音视频帧之前,得先播放已解码缓存队列已有的解码音视频帧。从而,提高音视频播放的准确性。
在其中一实施例中,在清空已解码缓存队列之后,还包括:若根据目标播放位置信息,从未解码缓存队列中查找到目标未解码音视频包,则删除未解码缓存队列中目标未解码音视频包之前的未解码音视频包。
未解码缓存队列为在音视频数据播放过程中,对音视频数据源进行解复用得到的音视频数据包、按照先进先出的方式进行缓存的缓存队列。音视频数据源为从服务器发送到终端的数据源。解复用用于从音视频数据源中分流出不同类型的音视频数据包,音视频数据包的类型包括:音频数据包和视频数据包。音视频数据源的格式可以是AVC(AdvancedVideo Coding,即H.264编码标准),也可以是HEVC(High Efficiency Video Coding,即H.265编码标准),还可以是HLS(HTTP Live Streaming,苹果公司的动态码率自适应技术),或MP4,或AAC(Advanced Audio Coding,高级音频编码)。
目标未解码音视频包为在未解码缓存队列中与目标播放位置信息对应的未解码音视频包。如,目标未解码音视频包可以是未解码缓存队列中时间戳等于目标播放位置信息对应的时间戳的未解码音视频包。更具体如,由于同一时间戳可能会对应多个音视频帧,目标未解码音视频包可以是未解码缓存队列中时间戳第一个等于目标播放位置信息对应的时间戳的未解码音视频包。又如,目标未解码音视频包可以是未解码缓存队列中时间戳小于或等于目标时间戳,且其下一未解码音视频包的时间戳大于目标时间戳的未解码音视频包,其中目标时间戳为目标播放位置信息对应的时间戳。
当根据目标播放位置信息,从已解码缓存队列中未查找到目标解码音视频帧时,在清空已解码缓存队列之后,若根据目标播放位置信息,从未解码缓存队列中查找到目标未解码音视频包,则删除未解码缓存队列中目标未解码音视频包之前的未解码音视频包。如此,使得下一次从未解码缓存队列取出未解码音视频包时,可以从未解码缓存队列中取出目标未解码音视频包,也即在删除了目标未解码音视频包之前的未解码音视频包的未解码缓存队列中,取出未解码音视频包。进而对该取出的未解码音视频包进行解码得到解码音视频帧之后,添加到已解码缓存队列时,其在缓存队列中的位置必然是第一个将被取出的位置。因此,基于本实施例的音视频播放方法,可以降低实际播放位置与目标播放位置之间的时间偏差。
在其中一实施例中,若根据目标播放位置信息,从未解码缓存队列中查找到目标未解码音视频包,则删除未解码缓存队列中目标未解码音视频包之前的未解码音视频包,包括:若根据目标播放位置信息,在预设映射关系中查找到目标关键帧,则根据预设映射关系、目标关键帧及目标播放位置信息,确定未解码缓存队列中的目标未解码音视频包;预设映射关系为将关键音视频帧映射到未解码缓存队列中的位置信息的关系;删除未解码缓存队列中目标未解码音视频包之前的未解码音视频包。
该预设映射关系中记录有关键音视频帧及该关键音视频帧在未解码缓存队列中的位置信息。关键音视频帧可以是在音视频数据源进行解复用时,根据音视频数据源的封装格式确定的关键帧。如,MP4格式的音视频数据源,可以根据MOOV BOX(移动容器)中的信息确定关键音视频帧。更具体如,可以MOOV BOX中定义的IDR帧索引信息确定关键音视频帧。又如,HLS格式的音视频数据源可以根据M3U8文件(HLS中的索引文件),定位到分片头部的IDR帧,也即可以根据M3U8文件确定关键音视频帧。
预设映射关系可以通过关键帧索引表的形式体现。预设映射关系按照对音视频数据源解复用的时间顺序存储。如果可以根据该预设映射关系查找到目标播放位置信息在预设映射关系中对应的关键音视频帧,即目标关键帧,则说明目标播放位置信息在未解码缓存队列中存储有对应的未解码音视频包,即目标未解码音视频包。目标关键帧时间戳小于或等于目标时间戳,且预设映射关系中目标关键帧的下一关键音视频帧的时间戳大于目标时间戳,目标时间戳为目标播放位置信息对应的时间戳。
根据预设映射关系及目标关键帧,可以确定未解码缓存队列中的目标关键帧对应的位置信息,再从该位置信息对应的位置开始查找未解码缓存队列中、与目标播放位置信息对应的目标未解码音视频包。根据预设映射关系、目标关键帧及目标播放位置信息,确定未解码缓存队列中的目标未解码音视频包,可以更为快速地确定未解码缓存队列中的目标未解码音视频包。终端可以在删除了目标未解码音视频包之前的未解码音视频包的未解码缓存队列中,取出未解码音视频包,并对取出的未解码音视频包进行解码得到解码音视频帧;然后将解码得到的解码音视频帧添加至所述已解码缓存队列。进而对该取出的未解码音视频包进行解码得到解码音视频帧之后,添加到已解码缓存队列时,其在缓存队列中的位置必然是第一个将被取出的位置。因此,基于本实施例的音视频播放方法,可以降低实际播放位置与目标播放位置之间的时间偏差的同时提高视频播放的响应速度。
在其中一实施例中,在清空已解码缓存队列之后,还包括:若根据目标播放位置信息,从未解码缓存队列中未查找到目标未解码音视频包,则清空未解码缓存队列。
当根据目标播放位置信息,从已解码缓存队列中未查找到目标解码音视频帧时,在清空已解码缓存队列之后,若根据目标播放位置信息,从未解码缓存队列中未查找到目标未解码音视频包,则清空未解码缓存队列。
若未解码缓存队列中未存储有与目标播放位置信息对应的未解码音视频包,则根据目标播放位置信息,不能从未解码缓存队列中查找到目标未解码音视频包,即,从已解码缓存队列中未能查找到目标解码音。此时,需要清空未解码缓存队列,该被清空的未解码缓存队列可以供音视频播放过程中,获取目标位置信息之后对音视频数据源解复用之后的未解码音视频包进行缓存。
由于每次解码都需要从未解码缓存队列中,取出未解码缓存队列中的最先存入未解码缓存队列的未解码音视频包,也即取出的未解码音视频包是在未解码缓存队列中一段连续的未解码音视频包里时间戳最早的未解码音视频包。因此,若根据目标播放位置信息,从未解码缓存队列中未查找到目标未解码音视频包,清空未解码缓存队列。如此,可以使得通过其它方式找到目标播放位置信息对应的音视频,对其进行解复用后得到未解码音视频包,添加到未解码缓存队列中时,该音视频数据包可以被第一个取出并进行后续解码、渲染等操作。如此,避免在解码、渲染目标播放位置信息对应的音视频数据包之前,得先解码、渲染未解码缓存队列中已有的未解码音视频包。从而,提高音视频播放的准确性。
在其中一实施例中,在清空未解码缓存队列之后,还包括:从音视频数据源中确定目标播放位置信息对应的关键音视频帧数据;根据音视频数据源的封装格式对关键音视频帧数据进行解复用,得到未解码音视频包,并将得到的未解码音视频包添加至未解码缓存队列。
若根据目标播放位置信息,从未解码缓存队列中未查找到目标未解码音视频包,则在清空未解码缓存队列之后,还需要从音视频数据源中,确定与目标播放位置对应的关键音视频帧数据,即目标关键帧数据。可以根据音视频数据源的封装格式,确定与目标播放位置对应的关键音视频帧数据。
可以理解地,在从音视频数据源中,确定目标播放位置信息对应的关键音视频帧数据之前,还需要获取音视频数据源。获取音视频数据源的方式可以是发送音视频数据源请求至服务器,通过接收服务器根据该音视频数据源请求返回的音视频数据源的方式,获取到音视频数据源。该音视频数据源请求可以携带目标播放位置信息。该音视频数据源请求也可以携带地址信息,该地址信息为音视频数据源对应的请求地址的信息。
在确定与目标播放位置对应的关键音视频帧数据之后,还可以根据音视频数据源的封装格式对关键音视频帧数据进行解复用,得到未解码音视频包,并将得到的未解码音视频包添加至清空了的未解码缓存队列中。如此,对该关键音视频数据帧进行解复用,并可进一步对解复用结果,即对解复用得到的未解码音视频包,依次进行解码、渲染等操作,从而,保证在更新目标播放位置信息时,从已解码缓存队列中第一个取出的解码音视频帧,必然是该关键音视频帧数据对应的已解码音视频帧,使得音视频从该关键音视频帧数据开始播放。
在其中一实施例中,取出已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果之前,还包括:取出未解码缓存队列中的未解码音视频包,并对取出的未解码音视频包进行解码得到解码音视频帧;将解码得到的解码音视频帧添加至已解码缓存队列。如此,形成二级缓存,每次渲染都需要从已解码缓存队列中取出解码音视频帧,每次解码都需要从未解码缓存队列中取出未解码音视频包。其中,未解码缓存队列为一级缓存,已解码缓存队列为二级缓存。
当可以在已解码缓存队列中查找到目标解码音视频帧时,删除已解码缓存队列中目标解码音视频帧之前的解码音视频帧,从该删除了目标解码音视频帧之前的解码音视频帧的已解码缓存队列中取出解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。当在已解码缓存队列中未查找到目标解码音视频帧时,清空已解码缓存队列,并到未解码缓存队列中去查找目标未解码音视频包。从未解码缓存队列中查找到目标未解码音视频包,则删除未解码缓存队列中目标未解码音视频包之前的未解码音视频包,再从删除了目标未解码音视频包之前的未解码音视频包的未解码缓存队列中,取出未解码音视频包,对其进行解码后添加到该清空了的已解码缓存队列中;否则,清空未解码缓存队列,并到音视频数据源中的关键中去查找目标播放位置信息对应的关键音视频帧数据,对其解复用得到未解码音视频包后,将未解码音视频包添加到该清空了的未解码缓存队列,再从该添加了未解码音视频包的未解码缓存队列中,取出未解码音视频包,对其进行解码后添加到该清空了的已解码缓存队列中。其中,对关键音视频帧数据解复用,可以是根据所述音视频数据源的封装格式对所述关键音视频帧数据进行解复用。如此,使得该音视频播放方法,层次分明,逻辑严谨,从而能够提高音视频播放方法的鲁棒性。
在其中一实施例中,将解码得到的解码音视频帧添加至已解码缓存队列,包括:当解码得到的解码音视频帧的时间戳大于或等于目标时间戳时,将解码得到的解码音视频帧添加至已解码缓存队列,目标时间戳为目标播放位置信息对应的时间戳。
可以理解地,当解码得到的解码音视频帧的时间戳小于目标时间戳时,说明还未到目标播放位置,此时,需要丢弃该解码音视频帧。因此,当确定解码得到的解码音视频帧的时间戳大于或等于目标时间戳时,才将解码得到的解码音视频帧添加至已解码缓存队列,可以无需渲染、播放解码得到的目标播放位置之前的解码音视频帧,从而,可以降低实际播放位置与目标播放位置之间的时间偏差,保证实际播放位置与目标播放位置之间的偏差不大于一个音视频帧。
在其中一实施例中,目标解码音视频帧包括目标解码音频帧和/或目标解码视频帧;目标解码音视频帧的时间戳小于或等于目标时间戳,且已解码缓存队列中目标解码音视频帧的下一帧解码音视频帧的时间戳大于目标时间戳,目标时间戳为目标播放位置信息对应的时间戳。
在本实施例中,目标解码音视频帧可以为目标解码音频帧;目标解码音视频帧也可以为目标解码视频帧;目标解码音视频帧还可以为目标解码音频帧及目标解码视频帧。由于一个时间戳可能对应多个音视频帧,因此,目标解码音视频帧的时间戳小于或等于目标时间戳,且已解码缓存队列中目标解码音视频帧的下一帧解码音视频帧的时间戳大于目标时间戳的方式,可以更为准确地定位到一个目标解码音视频帧。如此,可以进一步提高音视频播放的准确性。
在其中一实施例中,目标解码音视频帧包括目标解码音频帧及目标解码视频帧;已解码缓存队列包括已解码视频缓存队列及已解码音频缓存队列。
在本实施例中,目标解码音视频帧包括目标解码音频帧及目标解码视频帧。对应地,已解码缓存队列包括已解码视频缓存队列及已解码音频缓存队列。其中,目标解码视频帧的格式可以为YUV(一种视频解码之后的图像格式)。目标解码音频帧的格式可以为PCM(脉码调制录音,一种音频解码之后的音频格式)。对于包括音频和视频两种类型数据的音视频播放方法,在已解码音视频缓存队列中查找目标解码音视频帧时,对于是否查找到目标解码音视频帧可以采用更多的灵活的方式,如后续实施例的几种方式,因此,基于本实施例的音视频播放方法,能够提高音视频播放的灵活性。
在其中一实施例中,当根据目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除已解码缓存队列中目标解码音视频帧之前的解码音视频帧,包括:当根据目标播放位置信息,从已解码视频缓存队列中查找到目标解码视频帧时,删除已解码视频缓存队列中目标解码视频帧之前的解码视频帧;若从已解码音频缓存队列中查找到目标解码音频帧,则删除已解码音频缓存队列中目标解码视音频帧之前的解码音频帧。如此,在目标解码音视频帧包括目标解码音频帧及目标解码视频帧,已解码缓存队列包括已解码视频缓存队列及已解码音频缓存队列的情况下,对从已解码缓存队列中查找到目标解码音视频帧的方式进行进一种定义。
在其它实施例中,所述当根据所述目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除所述已解码缓存队列中所述目标解码音视频帧之前的解码音视频帧,可以包括:当根据所述目标播放位置信息,从已解码视频缓存队列中查找到目标解码视频帧且从已解码音频缓存队列中查找到目标解码音频帧时,删除所述已解码视频缓存队列中所述目标解码视频帧之前的解码视频帧,删除所述已解码音频缓存队列中所述目标解码视音频帧之前的解码音频帧。如此,在目标解码音视频帧包括目标解码音频帧及目标解码视频帧,已解码缓存队列包括已解码视频缓存队列及已解码音频缓存队列的情况下,对从已解码缓存队列中查找到目标解码音视频帧的方式进行另一种定义。
在其中一实施例中,当根据目标播放位置信息,从已解码视频缓存队列中未查找到目标解码视频帧时,清空已解码音频缓存队列及已解码视频缓存队列。如此,在目标解码音视频帧包括目标解码音频帧及目标解码视频帧,已解码缓存队列包括已解码视频缓存队列及已解码音频缓存队列的情况下,对从已解码缓存队列中未查找到目标解码音视频帧进行一种定义。在该方式下,当根据目标播放位置信息,从已解码视频缓存队列中未查找到目标解码视频帧时,便定义为从已解码缓存队列中未查找到目标解码音视频帧,如此,可以无需继续对已解码音频缓存队列继续查找,从而可以节约资源,提高音视频播放的响应速度。
在其它实施例中,当根据目标播放位置信息,从已解码音频缓存队列中未查找到目标解码音频帧时,清空已解码音频缓存队列及已解码视频缓存队列。如此,可以无需继续对已解码视频缓存队列继续查找,也可以节约资源,提高音视频播放的响应速度。
在其中一实施例中,当根据目标播放位置信息,从已解码视频缓存队列中查找到目标解码视频帧时,若从已解码音频缓存队列中未查找到目标解码音频帧,则清空已解码音频缓存队列及已解码视频缓存队列。如此,在目标解码音视频帧包括目标解码音频帧及目标解码视频帧,已解码缓存队列包括已解码视频缓存队列及已解码音频缓存队列的情况下,对从已解码缓存队列中未查找到目标解码音视频帧进行另一种定义。
在其中一实施例中,在获取目标播放位置信息之前,还可以包括:获取音视频数据源;根据所述音视频数据源的封装格式进行解复用,得到未解码音视频包,并将所述未解码音视频包添加至未解码缓存队列;从所述未解码缓存队列中取出未解码音视频包进行解码,得到解码音视频帧,并将得到的解码音视频帧添加至已解码缓存队列;从所述已解码缓存队列取出解码音视频帧,对取出的解码音视频帧进行渲染,展示渲染结果。这些步骤为音视频播放的正常播放过程,即没有获取目标播放位置信息的音视频播放过程,或者说,是没有发生播放位置进度改变的音视频播放过程。
在其中一具体实施例中,如图7所示,通过读包线程从音视频数据源进行读包,根据音视频数据源的封装格式进行解复用得到未解码音视频包;如,未解码音视频包可以是未解码视频包,具体如,视频格式的AVC/HEVE,又如,未解码音视频包也可以是未解码音频包,具体如,音频格式的ACC。若未解码音视频包为未解码音频包,则加入未解码音视频缓存队列(可以用PacketQueue表示);若未解码音视频包为未解码视频包,则加入未解码音视频缓存队列,并在根据音视频数据源的封装格式,如封装格式中音视频包的数据包类型字段,确定该未解码音视频包包括关键音视频帧(如可以为IDR帧)时,将该关键音视频帧的索引信息存入索引信息表。可以通过音频读包线程从未解码音频缓存队列(可以用PacketQueue表示)中取出一个未解码音频包进行解码,得到解码音频帧后,将该解码音频帧添加到解码音频缓存队列(可以用VideoFrameQueue表示)中。可以通过视频读包线程从未解码视频缓存队列中取出一个未解码视频包进行解码,得到解码视频帧后,将该解码视频帧添加到解码视频缓存队列(可以用AudioFrameQueue表示)中。可以通过音频渲染线程从解码音频缓存队列中取出一个解码音频帧,同步到系统时候后,渲染输出。可以通过视频渲染线程从解码视频缓存队列中取出一个解码视频帧,同步到系统时候后,渲染输出。
在其中一具体实施例中,索引信息定义可以为(以C语言为例):
其中,timestamp是IDR帧的时间戳,refer是指向IDR帧数据包的指针。
如图8所示,在一个具体实施例中,音视频播放方法包括以下步骤:
S801,获取目标播放位置信息(可以记为seek_target,简写为s_t);
当在S802,根据所述目标播放位置信息,判定从所述已解码视频缓存队列中查找到所述目标解码视频帧时,执行S803时删除所述已解码视频缓存队列中所述目标解码视频帧之前的解码视频帧,继续执行S802,若在S802,从已解码音频缓存队列中查找到目标解码音频帧,则继续执行S803时删除所述已解码音频缓存队列中所述目标解码视音频帧之前的解码音频帧;目标解码音视频帧的时间戳小于或等于目标时间戳,且已解码缓存队列中目标解码音视频帧的下一帧解码音视频帧的时间戳大于目标时间戳,目标时间戳为目标播放位置信息对应的时间戳;即,在执行S802时,可以采用从前向后的方式遍历已解码视频缓存队列,当已解码视频缓存队列中存在一解码视频帧的时间戳<=seek_target<下一解码视频帧的时间戳,则执行S803,删除所述已解码视频缓存队列中所述目标解码视频帧之前的解码视频帧;在删除所述已解码视频缓存队列中所述目标解码视频帧之前的解码视频帧之后,继续执行S802,采用从前向后的方式遍历已解码音频缓存队列,若已解码音频缓存队列中存在一解码音频帧的时间戳<=seek_target<下一解码音频帧的时间戳,则继续执行S803,删除所述已解码音频缓存队列中所述目标解码视音频帧之前的解码音频帧;
当在S802,根据所述目标播放位置信息,判定从所述已解码视频缓存队列中未查找到所述目标解码视频帧时,执行S804,清空所述已解码音频缓存队列及所述已解码视频缓存队列;或,当在S802,根据所述目标播放位置信息,从所述已解码视频缓存队列中查找到所述目标解码视频帧时,若从所述已解码音频缓存队列中未查找到所述目标解码音频帧,则执行S804,清空所述已解码音频缓存队列及所述已解码视频缓存队列;在步骤S805,可以通过遍历预设映射关系的方式查找目标关键帧,若根据所述目标播放位置信息,在预设映射关系中查找到目标关键帧,则执行步骤S806,根据所述预设映射关系、所述目标关键帧及所述目标播放位置信息,确定所述未解码缓存队列中的所述目标未解码音视频包,并删除所述未解码缓存队列中所述目标未解码音视频包之前的未解码音视频包;若在步骤S805,根据所述目标播放位置信息,从未解码缓存队列中未查找到目标未解码音视频包,则执行步骤S807,清空所述未解码缓存队列,在执行步骤S808时,可以通过读包线程从音视频数据源中确定所述目标播放位置信息对应的关键音视频帧数据,在执行步骤S809时,根据所述音视频数据源的封装格式对所述关键音视频帧数据进行解复用,得到未解码音视频包,并将得到的未解码音视频包添加至所述未解码缓存队列;在执行步骤S810时,从所述未解码缓存队列中取出未解码音视频包,并对取出的未解码音视频包进行解码得到解码音视频帧;所述解码音视频帧对应包括解码音频帧及解码视频帧;当解码得到的解码音视频帧的时间戳大于或等于目标时间戳时,将解码得到的解码音视频帧添加至所述已解码缓存队列;所述已解码缓存队列对应包括已解码音频缓存队列及已解码视频缓存队列;
在执行步骤S811时,可以通过渲染线程取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。
应该理解的是,虽然图2、8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、8中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图9所示,提供了一种运行于图1中的终端的音视频播放装置,该音视频播放装置与上述音视频播放方法对应,包括:
目标位置获取模块902,用于获取目标播放位置信息;
已解码帧删除模块904,用于当根据所述目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除所述已解码缓存队列中所述目标解码音视频帧之前的解码音视频帧;
已解码帧渲染模块906,用于取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。
基于本实施例的音视频播放装置,获取目标播放位置信息;当根据目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除已解码缓存队列中目标解码音视频帧之前的解码音视频帧;取出已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。由于可以从目标播放位置信息在已解码缓存队列中、对应的目标解码音视频帧的位置开始渲染播放,如此,可以降低实际播放位置与目标播放位置之间的时间偏差。
在其中一实施例中,还包括:
已解队列清空模块,用于当根据所述目标播放位置信息,从所述已解码缓存队列中未查找到所述目标解码音视频帧时,清空所述已解码缓存队列。
在其中一实施例中,还包括:
未解码包删除模块,用于在已解队列清空模块清空所述已解码缓存队列之后,若根据所述目标播放位置信息,从未解码缓存队列中查找到目标未解码音视频包,则删除所述未解码缓存队列中所述目标未解码音视频包之前的未解码音视频包。
在其中一实施例中,还包括:
目标码包确定模块,用于若根据所述目标播放位置信息,在预设映射关系中查找到目标关键帧,则根据所述预设映射关系、所述目标关键帧及所述目标播放位置信息,确定所述未解码缓存队列中的所述目标未解码音视频包;所述预设映射关系为将关键音视频帧映射到所述未解码缓存队列中的位置信息的关系;
未解码包删除模块,用于删除所述未解码缓存队列中所述目标未解码音视频包之前的未解码音视频包。
在其中一实施例中,还包括:
未解队列清空模块,用于在已解队列清空模块清空所述已解码缓存队列之后,若根据所述目标播放位置信息,从未解码缓存队列中未查找到目标未解码音视频包,则清空所述未解码缓存队列。
在其中一实施例中,还包括目标关键帧确定模块及数据源解复用模块;
目标关键帧确定模块,用于在未解队列清空模块清空所述未解码缓存队列之后,从音视频数据源中确定所述目标播放位置信息对应的关键音视频帧数据;
数据源解复用模块,用于根据所述音视频数据源的封装格式对所述关键音视频帧数据进行解复用,得到未解码音视频包,并将得到的未解码音视频包添加至所述未解码缓存队列。
在其中一实施例中,还包括:
未解包解码模块,用于取出所述未解码缓存队列中的未解码音视频包,并对取出的未解码音视频包进行解码得到解码音视频帧;并将解码得到的解码音视频帧添加至所述已解码缓存队列。
在其中一实施例中,未解包解码模块,用于从所述未解码缓存队列中取出未解码音视频包,并对取出的未解码音视频包进行解码得到解码音视频帧;并在解码得到的解码音视频帧的时间戳大于或等于目标时间戳时,将解码得到的解码音视频帧添加至所述已解码缓存队列,所述目标时间戳为所述目标播放位置信息对应的时间戳。
在其中一实施例中,所述目标解码音视频帧包括目标解码音频帧和/或目标解码视频帧;所述目标解码音视频帧的时间戳小于或等于目标时间戳,且所述已解码缓存队列中所述目标解码音视频帧的下一帧解码音视频帧的时间戳大于所述目标时间戳,所述目标时间戳为所述目标播放位置信息对应的时间戳。
在其中一实施例中,所述目标解码音视频帧包括目标解码音频帧及目标解码视频帧;所述已解码缓存队列包括已解码视频缓存队列及已解码音频缓存队列。
在其中一实施例中,所述已解码帧删除模块包括已解视频帧删除单元及已解音频帧删除单元;
已解视频帧删除单元,用于当根据所述目标播放位置信息,从所述已解码视频缓存队列中查找到所述目标解码视频帧时,删除所述已解码视频缓存队列中所述目标解码视频帧之前的解码视频帧;
已解音频帧删除单元,用于在已解视频帧删除单元删除所述已解码视频缓存队列中所述目标解码视频帧之前的解码视频帧之后,若从已解码音频缓存队列中查找到目标解码音频帧,则删除所述已解码音频缓存队列中所述目标解码视音频帧之前的解码音频帧。
在其中一实施例中,未解队列清空模块,用于当根据所述目标播放位置信息,从所述已解码视频缓存队列中未查找到所述目标解码视频帧时,清空所述已解码音频缓存队列及所述已解码视频缓存队列;或,未解队列清空模块,用于当根据所述目标播放位置信息,从所述已解码视频缓存队列中查找到所述目标解码视频帧时,若从所述已解码音频缓存队列中未查找到所述目标解码音频帧,则清空所述已解码音频缓存队列及所述已解码视频缓存队列。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器1001、存储器、网络接口1002、显示屏1003和输入装置1004。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质1005、内存储器1006。该非易失性存储介质1005存储有操作系统和计算机程序。该内存储器1006为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口1002用于与外部的终端通过网络连接通信。该计算机程序被处理器1001执行时以实现一种音视频播放方法。该计算机设备的显示屏1003可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置1004可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述音视频播放方法的步骤。
在一个实施例中,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述音视频播放方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (15)

1.一种音视频播放方法,所述方法包括:
获取目标播放位置信息;
当根据所述目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除所述已解码缓存队列中所述目标解码音视频帧之前的解码音视频帧;
取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。
2.根据权利要求1所述的方法,其特征在于,所述取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果之前,还包括:
当根据所述目标播放位置信息,从所述已解码缓存队列中未查找到所述目标解码音视频帧时,清空所述已解码缓存队列。
3.根据权利要求2所述的方法,其特征在于,在清空所述已解码缓存队列之后,还包括:
若根据所述目标播放位置信息,从未解码缓存队列中查找到目标未解码音视频包,则删除所述未解码缓存队列中所述目标未解码音视频包之前的未解码音视频包。
4.根据权利要求3所述的方法,其特征在于,所述若根据所述目标播放位置信息,从未解码缓存队列中查找到目标未解码音视频包,则删除所述未解码缓存队列中所述目标未解码音视频包之前的未解码音视频包,包括:
若根据所述目标播放位置信息,在预设映射关系中查找到目标关键帧,则根据所述预设映射关系、所述目标关键帧及所述目标播放位置信息,确定所述未解码缓存队列中的所述目标未解码音视频包;所述预设映射关系为将关键音视频帧映射到所述未解码缓存队列中的位置信息的关系;
删除所述未解码缓存队列中所述目标未解码音视频包之前的未解码音视频包。
5.根据权利要求2所述的方法,其特征在于,在清空所述已解码缓存队列之后,还包括:
若根据所述目标播放位置信息,从未解码缓存队列中未查找到目标未解码音视频包,则清空所述未解码缓存队列。
6.根据权利要求5所述的方法,其特征在于,在清空所述未解码缓存队列之后,还包括:
从音视频数据源中确定所述目标播放位置信息对应的关键音视频帧数据;
根据所述音视频数据源的封装格式对所述关键音视频帧数据进行解复用,得到未解码音视频包,并将得到的未解码音视频包添加至所述未解码缓存队列。
7.根据权利要求3、4或6所述的方法,其特征在于,所述取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果之前,还包括:
取出所述未解码缓存队列中的未解码音视频包,并对取出的未解码音视频包进行解码得到解码音视频帧;
将解码得到的解码音视频帧添加至所述已解码缓存队列。
8.根据权利要求7所述的方法,其特征在于,所述将解码得到的添加至所述已解码缓存队列,包括:
当解码得到的的时间戳大于或等于目标时间戳时,将解码得到的添加至所述已解码缓存队列,所述目标时间戳为所述目标播放位置信息对应的时间戳。
9.根据权利要求1所述的方法,其特征在于,所述目标解码音视频帧包括目标解码音频帧和/或目标解码视频帧;所述目标解码音视频帧的时间戳小于或等于目标时间戳,且所述已解码缓存队列中所述目标解码音视频帧的下一帧的时间戳大于所述目标时间戳,所述目标时间戳为所述目标播放位置信息对应的时间戳。
10.根据权利要求1所述的方法,其特征在于,所述目标解码音视频帧包括目标解码音频帧及目标解码视频帧;所述已解码缓存队列包括已解码视频缓存队列及已解码音频缓存队列。
11.根据权利要求10所述的方法,其特征在于,所述当根据所述目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除所述已解码缓存队列中所述目标解码音视频帧之前的解码音视频帧,包括:
当根据所述目标播放位置信息,从所述已解码视频缓存队列中查找到所述目标解码视频帧时,删除所述已解码视频缓存队列中所述目标解码视频帧之前的解码视频帧;
若从已解码音频缓存队列中查找到目标解码音频帧,则删除所述已解码音频缓存队列中所述目标解码视音频帧之前的解码音频帧。
12.根据权利要求10所述的方法,其特征在于:
当根据所述目标播放位置信息,从所述已解码视频缓存队列中未查找到所述目标解码视频帧时,清空所述已解码音频缓存队列及所述已解码视频缓存队列;
或,
当根据所述目标播放位置信息,从所述已解码视频缓存队列中查找到所述目标解码视频帧时,若从所述已解码音频缓存队列中未查找到所述目标解码音频帧,则清空所述已解码音频缓存队列及所述已解码视频缓存队列。
13.一种视频播放装置,所述装置包括:
目标位置获取模块,用于获取目标播放位置信息;
已解码帧删除模块,用于当根据所述目标播放位置信息,从已解码缓存队列中查找到目标解码音视频帧时,删除所述已解码缓存队列中所述目标解码音视频帧之前的解码音视频帧;
已解码帧渲染模块,用于取出所述已解码缓存队列中的解码音视频帧,对取出的解码音视频帧进行渲染,并展示渲染结果。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12中任一项所述方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
CN201910104484.7A 2019-02-01 2019-02-01 音视频播放方法、装置、计算机设备和存储介质 Active CN110418186B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910104484.7A CN110418186B (zh) 2019-02-01 2019-02-01 音视频播放方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910104484.7A CN110418186B (zh) 2019-02-01 2019-02-01 音视频播放方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN110418186A true CN110418186A (zh) 2019-11-05
CN110418186B CN110418186B (zh) 2022-03-29

Family

ID=68357517

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910104484.7A Active CN110418186B (zh) 2019-02-01 2019-02-01 音视频播放方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN110418186B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110913272A (zh) * 2019-12-03 2020-03-24 腾讯科技(深圳)有限公司 视频播放方法、装置、计算机可读存储介质和计算机设备
CN111107104A (zh) * 2019-12-31 2020-05-05 广州酷狗计算机科技有限公司 视频发送方法、视频接收方法、装置、设备及存储介质
CN111510759A (zh) * 2020-03-17 2020-08-07 视联动力信息技术股份有限公司 视频显示方法、装置及可读存储介质
CN112929755A (zh) * 2021-01-21 2021-06-08 稿定(厦门)科技有限公司 进度拖动过程中的视频文件播放方法及装置
CN113038156A (zh) * 2021-03-04 2021-06-25 百果园技术(新加坡)有限公司 直播数据管理系统、方法、设备及存储介质
CN114071224A (zh) * 2020-07-31 2022-02-18 腾讯科技(深圳)有限公司 视频数据处理方法、装置、计算机设备及存储介质
CN114302202A (zh) * 2021-12-22 2022-04-08 深圳创维-Rgb电子有限公司 音视频投屏方法、装置、设备、系统及存储介质
CN114339430A (zh) * 2021-12-10 2022-04-12 中国船舶重工集团公司第七0九研究所 一种基于硬解码的视频重定位播放方法及系统
EP4216558A4 (en) * 2020-10-22 2024-01-24 Huawei Tech Co Ltd METHOD FOR PLAYING AUDIO/VIDEO ONLINE AND ELECTRONIC DEVICE

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014193161A1 (ko) * 2013-05-28 2014-12-04 삼성전자 주식회사 멀티미디어 콘텐츠 검색을 위한 사용자 인터페이스 방법 및 장치
CN104837063A (zh) * 2014-07-15 2015-08-12 腾讯科技(北京)有限公司 请求处理方法、装置及电子设备
CN104918120A (zh) * 2014-03-12 2015-09-16 联想(北京)有限公司 一种播放进度调节方法及电子设备
CN105898535A (zh) * 2015-12-30 2016-08-24 乐视致新电子科技(天津)有限公司 提高起播速度的方法、视频播放器及电子装置
CN106686445A (zh) * 2015-11-05 2017-05-17 北京中广上洋科技股份有限公司 对多媒体文件进行按需跳转的方法
CN107205174A (zh) * 2017-07-14 2017-09-26 广东工业大学 一种快速回放视频文件方法及系统
CN107948735A (zh) * 2017-12-06 2018-04-20 北京金山安全软件有限公司 一种视频播放方法、装置及电子设备
CN108401188A (zh) * 2018-03-05 2018-08-14 青岛海信传媒网络技术有限公司 一种媒体播放的方法及装置
CN108737908A (zh) * 2018-05-21 2018-11-02 腾讯科技(深圳)有限公司 一种媒体播放方法、装置及存储介质
CN108737874A (zh) * 2018-06-05 2018-11-02 武汉斗鱼网络科技有限公司 一种视频播放方法及电子设备

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014193161A1 (ko) * 2013-05-28 2014-12-04 삼성전자 주식회사 멀티미디어 콘텐츠 검색을 위한 사용자 인터페이스 방법 및 장치
CN104918120A (zh) * 2014-03-12 2015-09-16 联想(北京)有限公司 一种播放进度调节方法及电子设备
CN104837063A (zh) * 2014-07-15 2015-08-12 腾讯科技(北京)有限公司 请求处理方法、装置及电子设备
CN106686445A (zh) * 2015-11-05 2017-05-17 北京中广上洋科技股份有限公司 对多媒体文件进行按需跳转的方法
CN105898535A (zh) * 2015-12-30 2016-08-24 乐视致新电子科技(天津)有限公司 提高起播速度的方法、视频播放器及电子装置
WO2017113705A1 (zh) * 2015-12-30 2017-07-06 乐视控股(北京)有限公司 提高起播速度的方法、视频播放器及电子装置
CN107205174A (zh) * 2017-07-14 2017-09-26 广东工业大学 一种快速回放视频文件方法及系统
CN107948735A (zh) * 2017-12-06 2018-04-20 北京金山安全软件有限公司 一种视频播放方法、装置及电子设备
CN108401188A (zh) * 2018-03-05 2018-08-14 青岛海信传媒网络技术有限公司 一种媒体播放的方法及装置
CN108737908A (zh) * 2018-05-21 2018-11-02 腾讯科技(深圳)有限公司 一种媒体播放方法、装置及存储介质
CN108737874A (zh) * 2018-06-05 2018-11-02 武汉斗鱼网络科技有限公司 一种视频播放方法及电子设备

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110913272A (zh) * 2019-12-03 2020-03-24 腾讯科技(深圳)有限公司 视频播放方法、装置、计算机可读存储介质和计算机设备
CN111107104A (zh) * 2019-12-31 2020-05-05 广州酷狗计算机科技有限公司 视频发送方法、视频接收方法、装置、设备及存储介质
CN111107104B (zh) * 2019-12-31 2022-02-18 广州酷狗计算机科技有限公司 视频发送方法、视频接收方法、装置、设备及存储介质
CN111510759A (zh) * 2020-03-17 2020-08-07 视联动力信息技术股份有限公司 视频显示方法、装置及可读存储介质
CN111510759B (zh) * 2020-03-17 2023-10-13 视联动力信息技术股份有限公司 视频显示方法、装置及可读存储介质
CN114071224B (zh) * 2020-07-31 2023-08-25 腾讯科技(深圳)有限公司 视频数据处理方法、装置、计算机设备及存储介质
CN114071224A (zh) * 2020-07-31 2022-02-18 腾讯科技(深圳)有限公司 视频数据处理方法、装置、计算机设备及存储介质
EP4216558A4 (en) * 2020-10-22 2024-01-24 Huawei Tech Co Ltd METHOD FOR PLAYING AUDIO/VIDEO ONLINE AND ELECTRONIC DEVICE
CN112929755A (zh) * 2021-01-21 2021-06-08 稿定(厦门)科技有限公司 进度拖动过程中的视频文件播放方法及装置
WO2022156166A1 (zh) * 2021-01-21 2022-07-28 稿定(厦门)科技有限公司 进度拖动过程中的视频文件播放方法及装置
CN113038156A (zh) * 2021-03-04 2021-06-25 百果园技术(新加坡)有限公司 直播数据管理系统、方法、设备及存储介质
CN113038156B (zh) * 2021-03-04 2023-04-25 百果园技术(新加坡)有限公司 直播数据管理系统、方法、设备及存储介质
CN114339430A (zh) * 2021-12-10 2022-04-12 中国船舶重工集团公司第七0九研究所 一种基于硬解码的视频重定位播放方法及系统
CN114339430B (zh) * 2021-12-10 2023-04-28 中国船舶重工集团公司第七0九研究所 一种基于硬解码的视频重定位播放方法及系统
CN114302202B (zh) * 2021-12-22 2023-03-14 深圳创维-Rgb电子有限公司 音视频投屏方法、装置、设备、系统及存储介质
CN114302202A (zh) * 2021-12-22 2022-04-08 深圳创维-Rgb电子有限公司 音视频投屏方法、装置、设备、系统及存储介质

Also Published As

Publication number Publication date
CN110418186B (zh) 2022-03-29

Similar Documents

Publication Publication Date Title
CN110418186A (zh) 音视频播放方法、装置、计算机设备和存储介质
CN112291627B (zh) 一种视频编辑方法、装置、移动终端和存储介质
WO2018076952A1 (zh) 一种视频文件的存储、定位播放方法及装置
US8886896B2 (en) Storage format for media streams
CN112653700B (zh) 一种基于webrtc网页视频通信的方法
CN113163230B (zh) 视频消息生成方法、装置、电子设备及存储介质
US20050132417A1 (en) Method and apparatus for buffering streaming media
BR112014007669B1 (pt) método e dispositivo para transmissão de mídia de transmissão contínua
US11356739B2 (en) Video playback method, terminal apparatus, and storage medium
KR20100036256A (ko) 공유 메모리 풀을 사용한 디지털 데이터 관리
CN112055254B (zh) 视频播放的方法、装置、终端及存储介质
US20230050596A1 (en) Playback mode determining method and apparatus
JP2016059015A (ja) 画像出力装置
CN110727825A (zh) 动画播放的控制方法、装置、服务器和存储介质
CN103051953A (zh) 一种利用视频播放器对视频文件进行解码方法
US11678019B2 (en) User interface (UI) engine for cloud UI rendering
US7924456B1 (en) Data distribution and buffering
WO2023083064A1 (zh) 视频处理方法、装置、电子设备及可读存储介质
CN114339289B (zh) 视频播放处理的方法
CN113096218A (zh) 动态图像播放方法、装置、存储介质和计算机设备
CN103761194A (zh) 一种内存管理方法及装置
CN112954445B (zh) 流媒体文件播放方法、装置、计算机设备和存储介质
CN115495020A (zh) 文件处理方法、装置、电子设备和可读存储介质
CN115209216A (zh) 视频的播放方法、装置及电子设备
CN111147954A (zh) 一种缩略图抽取方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant