CN109788372A - 一种流媒体的播放方法及相关装置 - Google Patents
一种流媒体的播放方法及相关装置 Download PDFInfo
- Publication number
- CN109788372A CN109788372A CN201910066582.6A CN201910066582A CN109788372A CN 109788372 A CN109788372 A CN 109788372A CN 201910066582 A CN201910066582 A CN 201910066582A CN 109788372 A CN109788372 A CN 109788372A
- Authority
- CN
- China
- Prior art keywords
- video
- file
- index
- subfile
- 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.)
- Granted
Links
Landscapes
- Information Transfer Between Computers (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请公开了一种流媒体的播放方法及相关装置。方法包括:获取目标流媒体的索引文件;下载索引文件中预设字段之后首个索引项对应的视频文件;若视频文件中的视频帧不属于同一个画面组,则将视频文件拆分成第一视频子文件和第二视频子文件,第一视频子文件中的视频帧属于同一个画面组,第二视频子文件中的视频帧属于另一个画面组;生成第一视频子文件在本地的第一索引项和第二视频子文件在本地的第二索引项;将第一索引项和第二索引项更新至索引文件。本申请能够对HLS协议的索引文件进行修复,解决同一画面组下的视频文件的索引信息被字段(如#EXT‑X‑DISCONTINUITY字段)相隔的问题,可避免终端设备在播放画面组下的视频流时误清除当前缓存的视频解码数据。
Description
技术领域
本申请涉及多媒体播放技术领域,尤其是一种流媒体的播放方法及相关装置。
背景技术
超文本直播流(HTTP Live Streaming,HLS)是苹果公司的动态码率自适应技术。相对于常规的流媒体直播协议,支持HLS协议的流媒体服务器把整个流媒体拆分成一个个小的多媒体文件进行存储。拆分后的多媒体文件的索引信息会记录在m3u8文件(索引文件)中,终端设备可以基于m3u8文件选择不同的速率对拆分后的多媒体文件进行下载播放。
现有技术中,m3u8文件会引入#EXT-X-DISCONTINUITY字段以标记流媒体的音视频编码参数发生改变。一般情况下,一个流媒体的m3u8文件会存在多个#EXT-X-DISCONTINUITY字段。终端设备在播放流媒体的过程中,遇到#EXT-X-DISCONTINUITY字段会清除当前缓存的视频解码数据。
目前HLS协议对同一画面组(Group of Pictures,GOP)的视频流切分没有考虑到m3u8文件中#EXT-X-DISCONTINUITY字段对播放带来的影响。因此m3u8文件经常会出现#EXT-X-DISCONTINUITY字段将同一GOP下的不同视频文件的索引信息相隔,从而导致终端设备在加载播放被隔开的后半段GOP的视频流时,因之前缓存的视频解码数据丢失而无法正常进行解码,致使播放画面出现异常现象。
发明内容
本申请实施例的目的是提供一种流媒体的播放方法及相关装置,用于在终端设备播放GOP下的视频流的过程中,避免终端设备误清除当前缓存的视频解码数据。
为了实现上述目的,本申请实施例采用下述技术方案:
第一方面,提供了一种流媒体的播放方法,包括:
获取目标流媒体的索引文件;
下载所述索引文件中预设字段之后的首个索引项对应的视频文件;
若所述视频文件中的视频帧不属于同一个画面组,则将所述视频文件拆分成第一视频子文件和第二视频子文件,所述第一视频子文件中的视频帧属于同一个画面组,所述第二视频子文件中的视频帧属于另一个画面组;
生成所述第一视频子文件在本地的第一索引项和所述第二视频子文件在本地的第二索引项;
将所述第一索引项和所述第二索引项更新至所述索引文件。
第二方面,提供一种流媒体的播放装置,包括:
获取模块,用于获取目标流媒体的索引文件;
下载模块,用于下载所述索引文件中预设字段之后的首个索引项对应的视频文件;
拆分模块,用于若所述视频文件中的视频帧不属于同一个画面组,则将所述视频文件拆分成第一视频子文件和第二视频子文件,所述第一视频子文件中的视频帧属于同一个画面组,所述第二视频子文件中的视频帧属于另一个画面组;
索引生成模块,用于生成所述第一视频子文件在本地的第一索引项和所述第二视频子文件在本地的第二索引项
修复模块,用于将所述第一索引项和所述第二索引项更新至所述索引文件。
第三方面,提供了一种终端设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被该处理器执行时实现第一方面所述的播放方法中的步骤。
本申请实施例的方案可以修复HLS协议的索引文件中同一画面组下的视频文件的索引信息被字段(如#EXT-X-DISCONTINUITY字段)相隔的问题,从而避免终端设备在播放画面组下的视频流时误清除当前缓存的视频解码数据,进而改善播放画面的质量。由于不需对终端设备的播放器进行改进,因此本申请实施例的方案易于实现,具有较高的实用性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例提供的流媒体的播放方法的步骤示意图;
图2是本申请实施例提供的播放方法中检索流程的步骤示意图;
图3是本申请实施例提供的播放方法中修复流程的步骤示意图;
图4是本申请实施例提供的流媒体的播放装置的逻辑结构示意图;
图5是本申请实施例提供的终端设备的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如前所述,现有技术中终端设备在播放流媒体的过程中,遇到#EXT-X-DISCONTINUITY字段,会清除所缓存的视频解码数据,这样一来,若同一GOP的视频流的索引信息在m3u8文件中被#EXT-X-DISCONTINUITY字段相隔,则会导致终端设备无法正常对被隔开的后半段视频流进行解码,造成播放画面出现花屏等异常现象。针对这一问题,本申请实施例提供一种解决方案。
一方面,本申请实施例提供一种流媒体的播放方法,该播放方法应用于终端设备,如图1所示,包括:
步骤S102,获取目标流媒体的索引文件;
针对步骤S102而言:
目标流媒体为基于HLS协议的流媒体数据,索引文件即上文所述的m3u8文件。本步骤可以向网络侧获取目标流媒体的索引文件。比如,终端设备在播放直播时,可以向直播平台获取直播相关的流媒体的索引文件。
步骤S104,下载索引文件中预设字段之后的首个索引项对应的视频文件;
针对步骤S104而言:
上述预设字段可以为#EXT-X-DISCONTINUITY字段,本步骤具体从索引文件中#EXT-X-DISCONTINUITY字段之后的首个#EXTINF字段中获取URL,并基于该URL下载视频文件。
步骤S106,若视频文件中的视频帧不属于同一个画面组,则将视频文件拆分成第一视频子文件和第二视频子文件,第一视频子文件中的视频帧属于同一个画面组,第二视频子文件中的视频帧属于另一个画面组;
针对步骤S106而言:
i帧是每个画面组GOP的第一帧,因此本步骤可以判断视频文件中的首帧是否为i帧;若不是i帧,则可以确定视频文件中的视频帧属于不同的GOP。
即,视频文件i帧之前的视频帧属于上一GOP的视频流,其余视频帧属于当前GOP的视频流。
因此,本步骤拆分获得的第一视频子文件包含视频文件中首个i帧之前的所有视频帧,第二视频子文件包含视频文件中除第一视频子文件外的所有视频帧。
步骤S108,生成第一视频子文件在本地的第一索引项和第二视频子文件在本地的第二索引项;
针对步骤S108而言:
本步骤可以对第一视频子文件和第一视频子文件的本地路径进行HTTP格式转化,得到基于HLS协议描述的第一视频子文件和第一视频子文件的本地索引项。
步骤S110,将第一索引项和第二索引项更新至索引文件。
针对步骤S110而言:
本步骤可以将第一索引项添加至索引文件中针对该第一视频子文件的GOP的记录位置,并将第二索引项添加至索引文件中针对该第二视频子文件的GOP的记录位置。
应理解,终端设备基于该索引文件,即可正常播放目标流媒体的视频内容。
通过图1所示的播放方法可以知道,本申请实施例的方案可以修复HLS协议的索引文件中同一GOP下的视频文件的索引信息被#EXT-X-DISCONTINUITY字段相隔的问题,从而避免终端设备在播放GOP下的视频流时误清除当前缓存的视频解码数据,进而改善播放画面的质量。由于不需对终端设备的播放器进行改进,因此本申请实施例的方案易于实现,具有较高的实用性。
需要说明的是,本申请实施例不限定预设字段一定为EXT-X-DISCONTINUITY字段,任何字段将同一GOP下的不同视频文件的索引信息相隔的应用场景均可以适用于本申请实施例的播放方法。
下面对本申请实施例的播放方法的原理进行详细介绍。
具体地,本申请在获取目标流媒体的索引文件后,获取索引文件中第N个预设字段之后的首个索引项,并基于该索引项所记载的URL,下载对应的视频文件;
之后,判断该视频文件中首帧是否为i帧;
若是i帧,则表示该视频文件自成一个GOP,不需要进行修复;
若不是i帧,则表示该视频文件首个i帧之前的所有视频帧属于该第N个预设字段之前的GOP,因此将该视频文件拆分成第一视频子文件和第二视频子文件;
如前所述,第一视频子文件包含视频文件首个i帧之前的所有视频帧;第二视频文件包含该视频文件剩余的所有数据,包括首个i帧、首个i帧之后的所有视频帧以及视频文件的所有音频流。
之后,对第一视频文件和第二视频文件在本地下载后的路径进行HTTP格式转化,生成第一视频文件和第二视频文件在本地的URL,并生成第一视频文件的第一字段和二视频文件的第二字段,第一字段作为第一视频文件在本地的第一索引项,第二字段作为第二视频文件在本地的第二索引项。
其中,第一字段可以但不限于记录有第一视频子文件的视频帧的总时长以及第一视频子文件在本地的URL;第二字段可以但不限于记录有第二视频子文件的视频帧的总时长以及第二视频子文件在本地的URL;
之后,在索引文件中的第一位置添加上述第一索引项,以及在索引文件中的第二位置添加上述第二索引项;
其中,第一位置位于索引文件中第N个预设字段之前且第N-1个预设字段之后。第二位置位于索引文件中第N个预设字段之后且第N个预设字段后的首个索引项之前。
应理解,上述第N个预设字段可以是索引文件中除了第一个预设字段外的其他任意预设字段,因此N为大于1的正整数。
下面对申请实施例播放方法的应用进行详细介绍。
在实际应用中,本申请实施例的播放方法可以包括检测流程和修复流程。检测流程主要负责检查索引文件中是否有同一GOP的视频流的索引信息被#EXT-X-DISCONTINUITY字段相隔。修复流程主要负责修复索引文件中同一GOP的视频流的索引信息被#EXT-X-DISCONTINUITY字段相隔的问题。
其中,如图2所示,检测流程主要包括:
步骤S201,获取目标流媒体的索引文件,并对索引文件进行解析。
步骤S202,顺序选取索引文件一个#EXT-X-DISCONTINUITY字段(即预设字段)。
步骤S203,获取当前#EXT-X-DISCONTINUITY后首个视频文件,并对视频文件解析。
步骤S204,判断视频文件的首帧是否为i帧;是则执行步骤S205,否则执行步骤S206。
步骤S205,执行修复流程。
步骤S206,判断当前#EXT-X-DISCONTINUITY字段是否为最后一个EXT-X-DISCONTINUITY字段是则结束,否则执行步骤S202。
如图3所示,修复流程主要包括:
步骤S301,新建空的第一视频文件和第二视频文件。
步骤S302,将视频文件首个i帧之前的所有视频帧写入第一视频文件。
步骤S303,将视频文件的剩余数据写入至第二视频文件。
步骤S304,对第一视频文件和第二视频文件的本地路径进行HTTP格式转换,得到第一视频文件和第二视频文件在本地的索引项。
步骤S305,将第一视频文件和第二视频文在本地的索引项更新至索引文件。
下面结合一个应用场景,对本申请实施例的播放方法的原理进行介绍。
假设某平台所提供的基于HLS协议的流媒体内容对应的M3U8文件tag_list.m3u8内容如下:
#EXTM3U
……
#EXTINF:5,
400-clipA-100.ts
#EXT-X-DISCONTINUITY
#EXTINF:15,
400-clipB-0.ts
……
#EXT-X-ENDLIST
其中,400-clipA-100.t和400-clipB-0.ts的视频帧排列分别如表一和表二所示:
表一
表二
可以看出,400-clipA-100.ts的90-100帧与400-clipB-0.ts的1-10帧属于一组GOP,被#EXT-X-DISCONTINUITY字段相隔。若按照现有技术的流程,400-clipB-0.ts前面10帧会无法解码或解码异常。
经过本申请实施例的播放方法处理后,终端播放器会使用生成的local_m3u8_url获取更新后的本地tag_list.m3u8索引来获取媒体内容。
其中,更新过程如下:
解析#EXT-X-DISCONTINUITY字段之后的TS格式小媒体文件,查找第一个i帧,以第一个i帧为断点,切分TS格式小媒体文件视频流,生成两个独立的TS格式小媒体文件Pre.ts和Post.ts。其中,Pre.ts只包含源小媒体文件第一个i帧之前的视频帧,Post.ts包含源小媒体文件第一个i帧之后的视频帧和全部音频流。
通过终端本地IP地址和HTTP服务及其数据传输的活动端口,将此两个TS格式小媒体文件的本地路径进行HTTP格式转化,生成相应的本地URL:Pre-TS-URL和Post-TS-URL。
获取Pre.ts和Post.ts的总时长,在M3U8格式文本索引文件的此#EXT-X-DISCONTINUITY字段之前插入所标记的分段媒体内容时长为Pre.ts的总时长,且URL为Pre-TS-URL的#EXTINF字段(即上文所述的第一字段),且此#EXT-X-DISCONTINUITY字段之后的第一个#EXTINF字段(即上文所述的第二字段)的分段媒体内容时长更新为Post.ts的总时长,相应的URL更新为Post-TS-URL。
更新后的本地tag_list.m3u8内容如下:
#EXTM3U
……
#EXTINF:5,
clipA-100.ts
#EXTINF:(pre.ts-duration),
pre.ts-local-url//本地pre.ts视频文件对应的url
#EXT-X-DISCONTINUITY
#EXTINF:(post.ts-duration),
post.ts-local-url//本地post.ts视频文件对应的url
#EXTINF:15,
400-clipB-1.ts
……
#EXT-X-ENDLIST
对应地,pre.ts-local-url和post.ts-local-url指向的本地pre.ts和post.ts视频帧排列分别如表三和表四所示:
表三
表四
以上是对本申请实施例的播放方法的示例性介绍,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
与上述播放方法相对应地,如图4所示,本申请实施例还提供一种流媒体的播放装置4000,包括:
获取模块4001,用于获取目标流媒体的索引文件;
下载模块4002,下载所述索引文件中预设字段之后的首个索引项对应的视频文件;
拆分模块4003,用于若所述视频文件中的视频帧不属于同一个画面组,则将所述视频文件拆分成第一视频子文件和第二视频子文件,所述第一视频子文件中的视频帧属于同一个画面组,所述第二视频子文件中的视频帧属于另一个画面组;
索引生成模块4004,用于生成所述第一视频子文件在本地的第一索引项和所述第二视频子文件在本地的第二索引项
修复模块4005,用于将所述第一视频子文件在本地的索引项和所述第二视频子文件在本地的索引项更新至索引文件。
通过图4所示的播放装置可以知道,本申请实施例的方案可以修复HLS协议的索引文件中同一GOP下的视频文件的索引信息被#EXT-X-DISCONTINUITY字段相隔的问题,从而避免终端设备在播放GOP下的视频流时误清除当前缓存的视频解码数据,进而改善播放画面的质量。由于不需对终端设备的播放器进行改进,因此本申请实施例的方案易于实现,具有较高的实用性。
可选地,本申请实施例的播放装置,还包括:
判断模块,用于判断所述视频文件中的首帧是否为i帧,若不是i帧,则确定所述视频文件中的视频帧不属于同一个画面组。
可选地,所述第一视频子文件包含所述视频文件中首个i帧之前的所有视频帧,所述第二视频子文件包含所述视频文件中除所述第一视频子文件外的所有视频帧。
可选地,所述下载模块具体用于:
下载所述索引文件中第N个预设字段之后的首个索引项对应的视频文件;
所述拆分模块具体用于:
在所述索引文件中的第一位置添加所述第一索引项,以及在所述索引文件中的第二位置添加所述第二索引项;其中,所述第一位置位于所述索引文件中第N个预设字段之前且第N-1个预设字段之后,所述第二位置位于所述索引文件中第N个预设字段之后且第N个预设字段后的首个索引项之前;N为大于1的正整数。
可选地,所述索引生成模块具体用于:
生成第一视频子文件的第一字段,并将所述第一字段作为所述第一视频子文件在本地的第一索引项,所述第一字段记录有所述第一视频子文件的视频帧的总时长以及所述第一视频子文件在本地的URL;
生成第二视频子文件的第二字段,所述第二字段作为所述第二视频子文件在本地的第二索引项,所述第二字段记录有所述第二视频子文件的视频帧的总时长以及所述第二视频子文件在本地的URL。
应理解,本申请实施例的播放装置可以作为图1所示的播放方法的执行主体,因此该播放方法在图1-图3所实现的功能,本申请实施例的播放装置同样能够实现。由于原理相同,本文不再赘述。
此外,如图5所示,本申请实施例还提供一种终端设备500,该终端设备500包括但不限于:射频单元501、网络模块502、音频输出单元503、输入单元504、传感器505、显示单元506、用户输入单元507、接口单元508、存储器509、处理器510、以及电源511等部件。本领域技术人员可以理解,图5中示出的终端结构并不构成对终端设备500的限定,终端设备500可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本申请实施例中,终端设备500包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
其中,处理器510,用于:
获取目标流媒体的索引文件;
下载所述索引文件中预设字段之后的首个索引项对应的视频文件;
若所述视频文件中的视频帧不属于同一个画面组,则将所述视频文件拆分成第一视频子文件和第二视频子文件,所述第一视频子文件中的视频帧属于同一个画面组,所述第二视频子文件中的视频帧属于另一个画面组;
生成所述第一视频子文件在本地的第一索引项和所述第二视频子文件在本地的第二索引项;
将所述第一索引项和所述第二索引项更新至所述索引文件。
本申请实施例的方案可以修复HLS协议的索引文件中同一GOP下的视频文件的索引信息被#EXT-X-DISCONTINUITY字段相隔的问题,从而避免终端设备在播放GOP下的视频流时误清除当前缓存的视频解码数据,进而改善播放画面的质量。由于不需对终端设备的播放器进行改进,因此本申请实施例的方案易于实现,具有较高的实用性。
应理解,本申请实施例中,射频单元501可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器510处理;另外,将上行的数据发送给基站。通常,射频单元501包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元501还可以通过无线通信系统与网络和其他设备通信。
终端设备500通过网络模块502为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
音频输出单元503可以将射频单元501或网络模块502接收的或者在存储器509中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元503还可以提供与终端500执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元503包括扬声器、蜂鸣器以及受话器等。
输入单元504用于接收音频或视频信号。输入单元504可以包括图形处理器(Graphics Processing Unit,GPU)5051和麦克风5042,图形处理器5051对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元506上。经图形处理器5051处理后的图像帧可以存储在存储器509(或其它存储介质)中或者经由射频单元501或网络模块502进行发送。麦克风5042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元501发送到移动通信基站的格式输出。
终端设备500还包括至少一种传感器505,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板5061的亮度,接近传感器可在终端设备500移动到耳边时,关闭显示面板5061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器505还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
显示单元506用于显示由用户输入的信息或提供给用户的信息。显示单元506可包括显示面板5061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板5061。
用户输入单元507可用于接收输入的数字或字符信息,以及产生与终端设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元507包括触控面板5071以及其他输入设备5072。触控面板5071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板5071上或在触控面板5071附近的操作)。触控面板5071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器510,接收处理器510发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板5071。除了触控面板5071,用户输入单元507还可以包括其他输入设备5072。具体地,其他输入设备5072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
进一步的,触控面板5071可覆盖在显示面板5061上,当触控面板5071检测到在其上或附近的触摸操作后,传送给处理器510以确定触摸事件的类型,随后处理器510根据触摸事件的类型在显示面板5061上提供相应的视觉输出。虽然在图5中,触控面板5071与显示面板5061是作为两个独立的部件来实现终端的输入和输出功能,但是在某些实施例中,可以将触控面板5071与显示面板5061集成而实现终端的输入和输出功能,具体此处不做限定。
接口单元508为外部装置与终端设备500连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元508可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到终端设备500内的一个或多个元件或者可以用于在终端500和外部装置之间传输数据。
存储器509可用于存储软件程序以及各种数据。存储器509可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器509可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器510是终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器509内的软件程序和/或模块,以及调用存储在存储器509内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。处理器510可包括一个或多个处理单元;优选的,处理器510可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器510中。
终端设备500还可以包括给各个部件供电的电源511(比如电池),优选的,电源511可以通过电源管理系统与处理器510逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,终端设备500还可执行图1所示的播放方法,并实现播放装置在图1-图3所示实施例的功能,本文不再赘述。
此外,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述图1的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
应理解,本申请实施例的计算机可读存储介质中的计算机程序被处理器执行时,能够实现图1所示的播放方法,并实现播放装置在图1-图3所示实施例的功能,本文不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (11)
1.一种流媒体的播放方法,其特征在于,包括:
获取目标流媒体的索引文件;
下载所述索引文件中预设字段之后的首个索引项对应的视频文件;
若所述视频文件中的视频帧不属于同一个画面组,则将所述视频文件拆分成第一视频子文件和第二视频子文件,所述第一视频子文件中的视频帧属于同一个画面组,所述第二视频子文件中的视频帧属于另一个画面组;
生成所述第一视频子文件在本地的第一索引项和所述第二视频子文件在本地的第二索引项;
将所述第一索引项和所述第二索引项更新至所述索引文件。
2.根据权利要求1所述的播放方法,其特征在于,还包括:
判断所述视频文件中的首帧是否为i帧;
若不是i帧,则确定所述视频文件中的视频帧不属于同一个画面组。
3.根据权利要求2所述的播放方法,其特征在于,
所述第一视频子文件包含所述视频文件中首个i帧之前的所有视频帧,所述第二视频子文件包含所述视频文件中除所述第一视频子文件外的所有视频帧。
4.根据权利要求3所述的播放方法,其特征在于,
所述下载所述索引文件中预设字段之后的首个索引项对应的视频文件,包括:
下载所述索引文件中第N个预设字段之后的首个索引项对应的视频文件;
所述将所述第一索引项和所述第二索引项更新至所述索引文件,包括:
在所述索引文件中的第一位置添加所述第一索引项,以及在所述索引文件中的第二位置添加所述第二索引项;其中,所述第一位置位于所述索引文件中第N个预设字段之前且第N-1个预设字段之后,所述第二位置位于所述索引文件中第N个预设字段之后且第N个预设字段后的首个索引项之前;N为大于1的正整数。
5.根据权利要求1-4中任一项所述的播放方法,其特征在于,
所述生成所述第一视频子文件在本地的第一索引项和所述第二视频子文件在本地的第二索引项,包括:
生成第一视频子文件的第一字段,并将所述第一字段作为所述第一视频子文件在本地的第一索引项,所述第一字段记录有所述第一视频子文件的视频帧的总时长以及所述第一视频子文件在本地的URL;
生成第二视频子文件的第二字段,所述第二字段作为所述第二视频子文件在本地的第二索引项,所述第二字段记录有所述第二视频子文件的视频帧的总时长以及所述第二视频子文件在本地的URL。
6.一种流媒体的播放装置,其特征在于,包括:
获取模块,用于获取目标流媒体的索引文件;
下载模块,用于下载所述索引文件中预设字段之后的首个索引项对应的视频文件;
拆分模块,用于若所述视频文件中的视频帧不属于同一个画面组,则将所述视频文件拆分成第一视频子文件和第二视频子文件,所述第一视频子文件中的视频帧属于同一个画面组,所述第二视频子文件中的视频帧属于另一个画面组;
索引生成模块,用于生成所述第一视频子文件在本地的第一索引项和所述第二视频子文件在本地的第二索引项
修复模块,用于将所述第一索引项和所述第二索引项更新至所述索引文件。
7.根据权利要求6所述的播放装置,其特征在于,还包括:
判断模块,用于判断所述视频文件中的首帧是否为i帧,若不是i帧,则确定所述视频文件中的视频帧不属于同一个画面组。
8.根据权利要求7所述的播放装置,其特征在于,
所述第一视频子文件包含所述视频文件中首个i帧之前的所有视频帧,所述第二视频子文件包含所述视频文件中除所述第一视频子文件外的所有视频帧。
9.根据权利要求8所述的播放装置,其特征在于,
所述下载模块具体用于:
下载所述索引文件中第N个预设字段之后的首个索引项对应的视频文件;
所述拆分模块具体用于:
在所述索引文件中的第一位置添加所述第一索引项,以及在所述索引文件中的第二位置添加所述第二索引项;其中,所述第一位置位于所述索引文件中第N个预设字段之前且第N-1个预设字段之后,所述第二位置位于所述索引文件中第N个预设字段之后且第N个预设字段后的首个索引项之前;N为大于1的正整数。
10.根据权利要求6-9中任一项所述的播放装置,其特征在于,
所述索引生成模块具体用于:
生成第一视频子文件的第一字段,并将所述第一字段作为所述第一视频子文件在本地的第一索引项,所述第一字段记录有所述第一视频子文件的视频帧的总时长以及所述第一视频子文件在本地的URL;
生成第二视频子文件的第二字段,所述第二字段作为所述第二视频子文件在本地的第二索引项,所述第二字段记录有所述第二视频子文件的视频帧的总时长以及所述第二视频子文件在本地的URL。
11.一种终端设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被该处理器执行时实现如权利要求1-5任一项所述的播放方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910066582.6A CN109788372B (zh) | 2019-01-24 | 2019-01-24 | 一种流媒体的播放方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910066582.6A CN109788372B (zh) | 2019-01-24 | 2019-01-24 | 一种流媒体的播放方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109788372A true CN109788372A (zh) | 2019-05-21 |
CN109788372B CN109788372B (zh) | 2021-06-08 |
Family
ID=66502304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910066582.6A Active CN109788372B (zh) | 2019-01-24 | 2019-01-24 | 一种流媒体的播放方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109788372B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114449316A (zh) * | 2021-12-02 | 2022-05-06 | 北京快乐茄信息技术有限公司 | 一种视频处理方法、装置、电子设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1980390A (zh) * | 2005-12-07 | 2007-06-13 | 联合信源数字音视频技术(北京)有限公司 | 支持精确定位的音视频媒体数据组织实现方法 |
US20110268178A1 (en) * | 2009-08-18 | 2011-11-03 | Anthony Neal Park | Encoding video streams for adaptive video streaming |
US20120189048A1 (en) * | 2011-01-26 | 2012-07-26 | Panasonic Corporation | Image recording device, image reproduction device, and image recovery device |
CN103442259A (zh) * | 2013-08-21 | 2013-12-11 | 杭州浦禾通信技术有限公司 | 媒体数据的重组方法和装置 |
CN106231348A (zh) * | 2016-09-19 | 2016-12-14 | 浙江宇视科技有限公司 | 一种gop数据的回放方法、装置和系统 |
CN106686409A (zh) * | 2015-11-09 | 2017-05-17 | 中国移动通信集团公司 | 一种流媒体码率自适应方法及装置、服务器、终端 |
CN107566851A (zh) * | 2017-09-05 | 2018-01-09 | 成都索贝数码科技股份有限公司 | 一种应用于媒体数据访问的视频切片存储方法和系统 |
US20180020243A1 (en) * | 2016-07-13 | 2018-01-18 | Yahoo Holdings, Inc. | Computerized system and method for automatic highlight detection from live streaming media and rendering within a specialized media player |
CN107979621A (zh) * | 2016-10-24 | 2018-05-01 | 杭州海康威视数字技术股份有限公司 | 一种视频文件的存储、定位播放方法及装置 |
CN108540868A (zh) * | 2018-05-16 | 2018-09-14 | 北京百度网讯科技有限公司 | Hls直播的处理方法、装置、服务器、终端及存储介质 |
CN109151494A (zh) * | 2017-06-19 | 2019-01-04 | 杭州萤石网络有限公司 | 多媒体数据传输方法、多媒体采集设备及服务器 |
-
2019
- 2019-01-24 CN CN201910066582.6A patent/CN109788372B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1980390A (zh) * | 2005-12-07 | 2007-06-13 | 联合信源数字音视频技术(北京)有限公司 | 支持精确定位的音视频媒体数据组织实现方法 |
US20110268178A1 (en) * | 2009-08-18 | 2011-11-03 | Anthony Neal Park | Encoding video streams for adaptive video streaming |
US20120189048A1 (en) * | 2011-01-26 | 2012-07-26 | Panasonic Corporation | Image recording device, image reproduction device, and image recovery device |
CN103442259A (zh) * | 2013-08-21 | 2013-12-11 | 杭州浦禾通信技术有限公司 | 媒体数据的重组方法和装置 |
CN106686409A (zh) * | 2015-11-09 | 2017-05-17 | 中国移动通信集团公司 | 一种流媒体码率自适应方法及装置、服务器、终端 |
US20180020243A1 (en) * | 2016-07-13 | 2018-01-18 | Yahoo Holdings, Inc. | Computerized system and method for automatic highlight detection from live streaming media and rendering within a specialized media player |
CN106231348A (zh) * | 2016-09-19 | 2016-12-14 | 浙江宇视科技有限公司 | 一种gop数据的回放方法、装置和系统 |
CN107979621A (zh) * | 2016-10-24 | 2018-05-01 | 杭州海康威视数字技术股份有限公司 | 一种视频文件的存储、定位播放方法及装置 |
CN109151494A (zh) * | 2017-06-19 | 2019-01-04 | 杭州萤石网络有限公司 | 多媒体数据传输方法、多媒体采集设备及服务器 |
CN107566851A (zh) * | 2017-09-05 | 2018-01-09 | 成都索贝数码科技股份有限公司 | 一种应用于媒体数据访问的视频切片存储方法和系统 |
CN108540868A (zh) * | 2018-05-16 | 2018-09-14 | 北京百度网讯科技有限公司 | Hls直播的处理方法、装置、服务器、终端及存储介质 |
Non-Patent Citations (1)
Title |
---|
王伟强,高文: "《一种MPEG-2流的索引模型及其应用》", 《软件学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114449316A (zh) * | 2021-12-02 | 2022-05-06 | 北京快乐茄信息技术有限公司 | 一种视频处理方法、装置、电子设备及存储介质 |
CN114449316B (zh) * | 2021-12-02 | 2023-09-22 | 北京快乐茄信息技术有限公司 | 一种视频处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109788372B (zh) | 2021-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103905885B (zh) | 视频直播方法及装置 | |
JP6522014B2 (ja) | ビデオリモートコメンタリー同期方法及びシステム並びにターミナルデバイス | |
CN106791958B (zh) | 位置标记信息生成方法及装置 | |
CN107948664A (zh) | 直播间视频播放控制方法、装置及终端 | |
CN108446085A (zh) | 一种投屏显示方法及移动终端 | |
CN108762640A (zh) | 一种弹幕信息的显示方法和终端 | |
CN104935955B (zh) | 一种传输直播视频流的方法、装置和系统 | |
CN107707976A (zh) | 一种视频解码方法及移动终端 | |
CN109445894A (zh) | 一种截图方法及电子设备 | |
CN110177296A (zh) | 一种视频播放方法及移动终端 | |
CN107635110A (zh) | 一种视频截图方法及终端 | |
CN107018448A (zh) | 数据处理方法及装置 | |
CN109168038A (zh) | 一种资源的处理方法、装置及设备 | |
CN109194899A (zh) | 一种音视频同步的方法和终端 | |
CN108391123A (zh) | 一种生成视频的方法及终端 | |
CN109993821A (zh) | 一种表情播放方法及移动终端 | |
CN109144703A (zh) | 一种多任务的处理方法及其终端设备 | |
CN103581762A (zh) | 一种播放网络视频的方法、装置及终端设备 | |
CN108763540A (zh) | 一种文件浏览方法及终端 | |
CN110069675A (zh) | 一种检索方法及移动终端 | |
CN108009031A (zh) | 一种应用程序的控制方法及移动终端 | |
CN109271262A (zh) | 一种显示方法和终端 | |
CN108769202A (zh) | 一种消息推送方法及其服务器和终端设备 | |
CN109032699A (zh) | 一种修改应用程序环境变量的方法和终端 | |
CN109063079A (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 |