CN113726778A - 流媒体seek方法、装置、计算设备及计算机存储介质 - Google Patents
流媒体seek方法、装置、计算设备及计算机存储介质 Download PDFInfo
- Publication number
- CN113726778A CN113726778A CN202111007044.3A CN202111007044A CN113726778A CN 113726778 A CN113726778 A CN 113726778A CN 202111007044 A CN202111007044 A CN 202111007044A CN 113726778 A CN113726778 A CN 113726778A
- Authority
- CN
- China
- Prior art keywords
- frame
- streaming media
- seek
- decoding
- timestamp
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000004891 communication Methods 0.000 claims description 16
- 230000009191 jumping Effects 0.000 claims description 8
- 238000009877 rendering Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 102000009913 Peroxisomal Targeting Signal 2 Receptor Human genes 0.000 description 1
- 108010077056 Peroxisomal Targeting Signal 2 Receptor Proteins 0.000 description 1
- 101100465559 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) PRE7 gene Proteins 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 101150076896 pts1 gene Proteins 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- GUGNSJAORJLKGP-UHFFFAOYSA-K sodium 8-methoxypyrene-1,3,6-trisulfonate Chemical compound [Na+].[Na+].[Na+].C1=C2C(OC)=CC(S([O-])(=O)=O)=C(C=C3)C2=C2C3=C(S([O-])(=O)=O)C=C(S([O-])(=O)=O)C2=C1 GUGNSJAORJLKGP-UHFFFAOYSA-K 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种流媒体seek方法,包括:读取流媒体文件包含的包信息,计算流媒体文件中相邻两个关键帧的时间差值ΔT;根据流媒体文件包含的各个流媒体片段的时长信息以及seek点的时间戳,定位并请求seek点对应的目标流媒体片段;依次读取目标流媒体片段的当前帧,判断该当前帧是否为关键帧且该当前帧的时间戳与所述ΔT之和是否大于或等于所述seek点的时间戳,若是,则将当前帧作为解码起始帧进行解码;若否,则丢弃当前帧。本发明的流媒体seek方法可以实现达到秒级的精准seek,且资源复用率低。
Description
技术领域
本发明涉及流媒体通信技术领域,具体涉及一种流媒体seek方法、装置、计算设备及计算机存储介质。
背景技术
流媒体是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏的一种技术与过程。目前,HLS(Http Live Stream)流媒体协议中没有关键帧列表,需要播放器自己进行精准seek(播放媒体文件时,播放页面跳转到指定位置播放这一过程,称之为seek)。现有技术中,为了实现精准seek,在定位流媒体片段后,从第一关键帧开始解复用,预保存第一关键帧和第二关键帧之间的码流段落,检测出遇到第二关键帧发现未达到seek点时,丢弃第一关键帧和第二关键帧之间的码流段落,保存第二关键帧和第三关键帧之间的码流段落,继续检测遇到的后续的关键帧是否发现达到seek点及是否丢弃相应的码流段落,直到发现达到seek点,确认保存的码流段落的前后关键帧为与seek点最近的前后关键帧。
现有技术至少存在以下缺陷:每请求一个新的流媒体片段都要断开/连接套接字(socket),消耗多余时间;需要缓存两个关键帧之间的数据才能定位到seek点前的关键帧,不能发挥多线程边读帧边解码的优势;精确seek到seek点前的关键帧后,所有帧都送去解码,不能依据视频帧的类型和关系解码,浪费时间。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的流媒体seek方法、装置、计算设备及计算机存储。
根据本发明的一个方面,提供了一种流媒体seek方法,包括:
读取流媒体文件包含的包信息,计算流媒体文件中相邻两个关键帧的时间差值ΔT;
根据流媒体文件包含的各个流媒体片段的时长信息以及seek点的时间戳,定位并请求seek点对应的目标流媒体片段;
依次读取目标流媒体片段的当前帧,判断该当前帧是否为关键帧且该当前帧的时间戳与ΔT之和是否大于或等于seek点的时间戳,若是,则将当前帧作为解码起始帧进行解码;若否,则丢弃当前帧。
可选地,请求seek点对应的目标流媒体片段进一步包括:
复用上一次请求流媒体片段的套接字连接,请求seek点对应的目标流媒体片段。
可选地,根据所述流媒体文件包含的各个流媒体片段的时长信息以及seek点的时间戳,定位并请求seek点对应的目标流媒体片段进一步包括:
依次读取流媒体文件包含的流媒体片段的时长信息Tn并依次累加为STn,其中,STn=T1+T2+T3+…+Tn,n为被读取的流媒体片段的数量,n为自然数;
当STn≤Tseek且STn+1>Tseek,其中Tseek为seek点的时间戳,则定位第n个流媒体片段为seek点对应的目标流媒体片段,向服务器请求目标流媒体片段。
可选地,依次读取目标流媒体片段的当前帧,判断该当前帧是否为关键帧且该当前帧的时间戳与ΔT之和是否大于或等于seek点的时间戳,若是,则将当前帧作为解码起始帧进行解码;若否,则丢弃当前帧进一步包括:
从m=1开始,执行如下步骤:
步骤S1,读取目标流媒体片段的第m帧,判断第m帧是否为关键帧,若是,则执行步骤S2;若否,则执行步骤S4;
步骤S2,判断Tm+ΔT是否大于或等于Tseek,若是,则执行步骤S3,若否,则执行步骤S4;其中,Tm为第m帧的时间戳,Tseek为seek点的时间戳;
步骤S3,将第m帧作为解码起始帧进行解码;
步骤S4,丢弃第m帧,将m赋值为m+1,跳转步骤S1。
可选地,在步骤S3之后,该流媒体seek方法还包括:
在对第m帧进行解码之后,判断第m+1帧是否为B帧,并且第m+1帧的时间戳是否小于Tseek,若是,则丢弃第m+1帧,若否,则对第m+1帧及其后续帧进行解码;
在丢弃第m+1帧之后,若第m+1帧之后的连续至少一个帧均为B帧,则丢弃第m+1帧之后的连续至少一个帧,对非B帧及其后续帧进行解码。
可选地,该流媒体seek方法还包括:
在解码完成后,将时间戳小于Tseek的帧丢弃,将时间戳大于或等于Tseek的帧作为渲染起始帧进行渲染,Tseek为seek点的时间戳。
可选地,该流媒体seek方法还包括:
帧的时间戳通过下式获得:
T=PTS/90,其中,T为帧的时间戳,所述PTS从帧的PES包中提取得到。
根据本发明的另一方面,提供了一种流媒体seek装置,包括:
计算模块,适于读取流媒体文件包含的包信息,计算流媒体文件中相邻两个关键帧的时间差值ΔT;
定位模块,适于根据流媒体文件包含的各个流媒体片段的时长信息以及seek点的时间戳,定位并请求seek点对应的目标流媒体片段;以及
判断模块,适于依次读取目标流媒体片段的当前帧,判断该当前帧是否为关键帧且该当前帧的时间戳与所述ΔT之和是否大于或等于seek点的时间戳,若是,则将当前帧作为解码起始帧进行解码;若否,则丢弃当前帧。
可选地,定位模块进一步适于:
复用上一次请求流媒体片段的套接字连接,请求seek点对应的目标流媒体片段。
可选地,定位模块进一步适于:
依次读取流媒体文件包含的流媒体片段的时长信息Tn并依次累加为STn,其中,STn=T1+T2+T3+…+Tn,n为被读取的流媒体片段的数量,n为自然数;
当STn≤Tseek且STn+1>Tseek,其中Tseek为seek点的时间戳,则定位第n个流媒体片段为seek点对应的目标流媒体片段,向服务器请求目标流媒体片段。
可选地,判断模块进一步适于:
从m=1开始,执行如下步骤:
步骤S1,读取目标流媒体片段的第m帧,判断第m帧是否为关键帧,若是,则执行步骤S2;若否,则执行步骤S4;
步骤S2,判断Tm+ΔT是否大于或等于Tseek,若是,则执行步骤S3,若否,则执行步骤S4;其中,Tm为第m帧的时间戳,Tseek为seek点的时间戳;
步骤S3,将第m帧作为解码起始帧进行解码;
步骤S4,丢弃第m帧,将m赋值为m+1,跳转步骤S1。
可选地,判断模块进一步适于:
在对第m帧进行解码之后,判断第m+1帧是否为B帧,并且第m+1帧的时间戳是否小于Tseek,若是,则丢弃第m+1帧,若否,则对第m+1帧及其后续帧进行解码;
在丢弃第m+1帧之后,若第m+1帧之后的连续至少一个帧均为B帧,则丢弃第m+1帧之后的连续至少一个帧,对非B帧及其后续帧进行解码。
可选地,判断模块进一步适于:
在解码完成后,将时间戳小于Tseek的帧丢弃,将时间戳大于或等于Tseek的帧作为渲染起始帧进行渲染,Tseek为seek点的时间戳。
可选地,计算模块进一步适于:
帧的时间戳通过下式获得:
T=PTS/90,其中,T为帧的时间戳,所述PTS从帧的PES包中提取得到。
根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述流媒体seek方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述流媒体seek方法对应的操作。
根据本发明提供的流媒体seek方法、装置、计算设备及存储介质,读取流媒体文件包含的包信息,计算流媒体文件中相邻两个关键帧的时间差值ΔT;根据流媒体文件包含的各个流媒体片段的时长信息以及seek点的时间戳,定位并请求seek点对应的目标流媒体片段;依次读取目标流媒体片段的当前帧,判断该当前帧是否为关键帧且该当前帧的时间戳与所述ΔT之和是否大于或等于所述seek点的时间戳,若是,则将当前帧作为解码起始帧进行解码;若否,则丢弃当前帧。本方案的流媒体seek方法可以实现达到秒级的精准seek,且资源复用率低。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明实施例一提供的一种流媒体seek方法的流程示意图;
图2示出了根据本发明实施例二提供的一种流媒体seek方法的流程示意图;
图3示出了根据本发明实施例二的一种流媒体seek方法中的解码过程;
图4示出了根据本发明实施例三提供的一种流媒体seek方法的流程示意图;
图5示出了根据本发明实施例四提供的一种流媒体seek装置的功能结构示意图;以及
图6示出了根据本发明实施例五提供的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
实施例一
图1示出了根据本发明实施例一提供的一种流媒体seek方法的流程示意图。如图1所示,该方法包括:
步骤S110,读取流媒体文件包含的包信息,计算流媒体文件中相邻两个关键帧的时间差值ΔT。
在流媒体文件的流媒体片段的每一个视频帧都包含一个包,该包的包信息至少包括显示时间戳,本实施例根据各个视频帧的显示时间戳得到各个视频帧的时间戳,进而根据各个视频帧的时间戳计算得到相邻关键帧的时间差值ΔT。
具体的,在seek过程中,读取HLS流媒体中的视频包,在流媒体文件的流媒体片段的每一个视频帧都包含一个PES包(PES是分组原始流(Packetized Elementary Streams)的简写,PES包是数字电视基本码流,是通过对音频压缩编码数据、视频压缩编码数据或字幕编码数据分组打包并加上PES包头形成的),PES包头中包含有该视频帧的PTS(PresentTime Stamp,显示时间戳)和DTS(Decoding Time Stamp,解码时间戳),其中PTS可通过以下公式获得:
PTS=(PTS1&0x0e)<<29+(PTS2&0xfffe)<<14+(PTS3&0xfffe)>>1
H264和HEVC(High Efficiency Video Coding)中PTS的HZ=90000,即1ms=90,由此可以计算出帧的时间戳为T=PTS/90,其中,T表示帧的时间戳,PTS从帧的PES包中提取得到。基于计算出的帧的时间戳T,可计算出相邻两个关键帧的时间差值ΔT。
步骤S120,根据流媒体文件包含的各个流媒体片段的时长信息以及seek点的时间戳,定位并请求seek点对应的目标流媒体片段。
在seek过程中分析m3u8文件后,依次读取流媒体文件中包含的流媒体片段的时长信息Tn,并依次累加为STn,其中,STn=T1+T2+T3+…+Tn,n为被读取的流媒体片段的数量,n为自然数;当STn≤Tseek且STn+1>Tseek,其中Tseek为seek点的时间戳,则定位第n个流媒体片段为seek点对应的目标流媒体片段,向服务器请求目标流媒体片段。
可选地,在定位并请求seek点对应的目标流媒体片段的过程中,复用上一次请求流媒体片段的套接字连接(scoket)来请求seek点对应的目标流媒体片段。在整个seek过程中,超文件传输协议(http)不关闭传输控制协议(tcp)的socket,而是直接发送新的流媒体片段的http请求,且从此刻读取的socket上的数据全部丢弃,直到读取到http的应答信息。该过程省去了socket的断开和重连过程,可以加速300ms左右。
步骤S130,依次读取目标流媒体片段的当前帧,判断该当前帧是否为关键帧且该当前帧的时间戳与与ΔT之和是否大于或等于seek点的时间戳,若是,则将当前帧作为解码起始帧进行解码;若否,则丢弃当前帧。
依次读取目标流媒体片段的当前帧(目标流媒体片段的第一个视频帧为关键帧),如果当前帧是关键帧且当前帧的时间戳与时间差值ΔT之和大于或等于Tseek,则证明当前帧即为距seek点最近的关键帧,则将当前帧作为解码起始帧开始解码;如果当前帧是关键帧且当前帧的时间戳与时间差值ΔT之和小于Tseek,则证明当前帧之后还有满足条件的关键帧,则丢弃当前帧。
具体地,针对目标流媒体片段,从m=1执行步骤S1-S4。步骤S1,读取目标流媒体片段的第m帧,判断第m帧是否为关键帧,若是,则执行步骤S2;若否,则执行步骤S4;步骤S2,判断Tm+ΔT是否大于或等于Tseek,若是,则执行步骤S3,若否,则执行步骤S4;其中,Tm为第m帧的时间戳,Tseek为seek点的时间戳;步骤S3,将第m帧作为解码起始帧进行解码;以及步骤S4,丢弃第m帧,将m赋值为m+1,跳转回步骤S1。
由此可见,根据本实施例的流媒体seek方法,相对于现有技术减少了缓存过程,无需缓存和重新遍历流媒体目标片段,边读取边解码,可以实现达到秒级的精准seek,且资源复用率低。
实施例二
图2示出了根据本发明实施例二提供的一种流媒体seek方法的流程示意图。如图2所示,该方法包括:
步骤S210、步骤S220分别与实施例一中的步骤S110、S120类似,在此不再赘述。
从m=1开始,执行步骤S231-S234。
步骤S231,读取目标流媒体片段的第m帧,判断第m帧是否为关键帧,若是,则执行步骤S232;若否,则执行步骤S234;
步骤S232,判断Tm+ΔT是否大于或等于Tseek,若是,则执行步骤S233,若否,则执行步骤S234;其中,Tm为第m帧的时间戳,Tseek为seek点的时间戳;
步骤S233,将第m帧作为解码起始帧进行解码;
步骤S234,丢弃第m帧,将m赋值为m+1,跳转步骤S231。
步骤S240,在对第m帧进行解码之后,判断第m+1帧是否为B帧,并且第m+1帧的时间戳是否小于Tseek,若是,则丢弃第m+1帧,若否,则对第m+1帧及其后续帧进行解码;在丢弃第m+1帧之后,若第m+1帧之后的连续至少一个帧均为B帧,则丢弃第m+1帧之后的连续至少一个帧,对非B帧及其后续帧进行解码。
图3示出了根据本发明实施例二的一种流媒体seek方法中的解码过程。依据图3所示的示例详述上述步骤S240的执行过程。参见图3,第一帧为距离seek点最近的关键帧(即上述第m帧),延时间戳T增大方向,对第一关键帧之后的当前帧依次进行判断。从图3可以看出,第二帧为双向预测编码图像帧(Bidirectionally predicted picture,简称B帧)且其时间戳小于Tseek,无需解码直接丢弃,第三帧依然是B帧,无需比较第三帧的时间戳和Tseek可直接丢弃,若接下来的视频帧依然是B帧,则均可直接丢弃,直到遇到下一个非B帧(图3中的第四帧-P帧),则对第四帧进行解码后,继续判断第五帧,第五帧依然是B帧且其时间戳小于Tseek,无需解码直接丢弃;从第六帧开始,视频帧的时间戳开始大于Tseek,但由于第六帧为B帧,且其前一帧是B帧且被丢弃,因此第六帧也应丢弃,否则会花屏,第七帧为P帧(非B帧)且其时间戳大于Tseek,因此,以第七帧为起始帧开始解码。B帧记录的是该B帧与前后帧的差别,通过前后画面的与该帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较耗时,丢弃B帧不会影响后续P帧的解码,不会产生花屏,且丢弃B帧可以减少解码的压力和时间,一般B帧占比达到2/3,因此,丢弃B帧可以减少2/3的解码时间。如果5秒一个关键帧,则可加速3.3秒。
由此可见,本实施例的流媒体seek方法,相对于现有技术减少了缓存过程,无需缓存和重新遍历流媒体目标片段,边读取边解码,且通过在解码过程中丢弃B帧,减少解码的压力和时间。
实施例三
图4示出了根据本发明实施例三提供的一种流媒体seek方法的流程示意图。如图4所示,该方法包括:
步骤S410、步骤S420、步骤S430分别与实施例一中的步骤S110、步骤S120步骤、S130类似,在此不再赘述。或者,步骤S410、步骤S420、步骤S430的执行过程可参见实施例二步骤S210至步骤S240的执行过程,不再赘述。
步骤S440,在解码完成后,将时间戳小于Tseek的帧丢弃,将时间戳大于或等于Tseek的帧作为渲染起始帧进行渲染,Tseek为seek点的时间戳。
在将视频解码成YUV后,将解码后的各视频帧的时间戳与Tseek进行比较,若当前视频帧的时间戳小于Tseek,则直接丢弃当前视频帧,并将下一视频帧的时间戳与Tseek进行比较,直到当前视频帧的时间戳大于或等于Tseek时,则以当前视频帧为起始帧开始渲染,可以达到精准seek的目的。
由此可见,根据本实施例的流媒体seek方法,相对于现有技术减少了缓存过程,无需缓存和重新遍历流媒体目标片段,边读取边解码,可以实现达到秒级的精准seek,且资源复用率低。
实施例四
图5示出了根据本发明实施例四提供的一种流媒体seek装置的功能结构示意图。如图5所示,该装置包括:计算模块51、定位模块52以及判断模块53。
计算模块51,适于读取流媒体文件包含的包信息,计算流媒体文件中相邻两个关键帧的时间差值ΔT;
定位模块52,适于根据流媒体文件包含的各个流媒体片段的时长信息以及seek点的时间戳,定位并请求seek点对应的目标流媒体片段;以及
判断模块53,适于依次读取目标流媒体片段的当前帧,判断该当前帧是否为关键帧且该当前帧的时间戳与ΔT之和是否大于或等于所述seek点的时间戳,若是,则将当前帧作为解码起始帧进行解码;若否,则丢弃所述当前帧。
可选地,定位模块52进一步适于:
复用上一次请求流媒体片段的套接字连接,请求seek点对应的目标流媒体片段。
可选地,定位模块52进一步适于:
依次读取流媒体文件包含的流媒体片段的时长信息Tn并依次累加为STn,其中,STn=T1+T2+T3+…+Tn,n为被读取的流媒体片段的数量,n为自然数;
当STn≤Tseek且STn+1>Tseek,其中Tseek为seek点的时间戳,则定位第n个流媒体片段为seek点对应的目标流媒体片段,向服务器请求目标流媒体片段。
可选地,判断模块53进一步适于:
从m=1开始,执行如下步骤:
步骤S1,读取目标流媒体片段的第m帧,判断第m帧是否为关键帧,若是,则执行步骤S2;若否,则执行步骤S4;
步骤S2,判断Tm+ΔT是否大于或等于Tseek,若是,则执行步骤S3,若否,则执行步骤S4;其中,Tm为第m帧的时间戳,Tseek为seek点的时间戳;
步骤S3,将第m帧作为解码起始帧进行解码;
步骤S4,丢弃第m帧,将m赋值为m+1,跳转步骤S1。
可选地,判断模块53进一步适于:
在对第m帧进行解码之后,判断第m+1帧是否为B帧,并且第m+1帧的时间戳是否小于Tseek,若是,则丢弃第m+1帧,若否,则对第m+1帧及其后续帧进行解码;
在丢弃第m+1帧之后,若第m+1帧之后的连续至少一个帧均为B帧,则丢弃第m+1帧之后的连续至少一个帧,对非B帧及其后续帧进行解码。
可选地,判断模块53进一步适于:
在解码完成后,将时间戳小于Tseek的帧丢弃,将时间戳大于或等于Tseek的帧作为渲染起始帧进行渲染,Tseek为seek点的时间戳。
可选地,计算模块51进一步适于:
帧的时间戳通过下式获得:
T=PTS/90,其中,T为帧的时间戳,所述PTS从帧的PES包中提取得到。
由此可见,根据本实施例的流媒体seek装置,相对于现有技术减少了缓存过程,无需缓存和重新遍历流媒体目标片段,边读取边解码,可以实现达到秒级的精准seek,且资源复用率低。
实施例五
根据本发明实施例五提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的方法。
可执行指令具体可以用于使得处理器执行以下操作:读取流媒体文件包含的包信息,计算流媒体文件中相邻两个关键帧的时间差值ΔT;根据流媒体文件包含的各个流媒体片段的时长信息以及seek点的时间戳,定位并请求seek点对应的目标流媒体片段;依次读取目标流媒体片段的当前帧,判断该当前帧是否为关键帧且该当前帧的时间戳与ΔT之和是否大于或等于seek点的时间戳,若是,则将当前帧作为解码起始帧进行解码;若否,则丢弃当前帧。
在一种可选的实施方式中,可执行指令具体可以用于使得处理器执行以下操作:
复用上一次请求流媒体片段的套接字连接,请求seek点对应的目标流媒体片段。
在一种可选的实施方式中,可执行指令具体可以用于使得处理器执行以下操作:
依次读取流媒体文件包含的流媒体片段的时长信息Tn并依次累加为STn,其中,STn=T1+T2+T3+…+Tn,n为被读取的流媒体片段的数量,n为自然数;
当STn≤Tseek且STn+1>Tseek,其中Tseek为seek点的时间戳,则定位第n个流媒体片段为seek点对应的目标流媒体片段,向服务器请求目标流媒体片段。
在一种可选的实施方式中,可执行指令具体可以用于使得处理器执行以下操作:
从m=1开始,执行如下步骤:
步骤S1,读取目标流媒体片段的第m帧,判断第m帧是否为关键帧,若是,则执行步骤S2;若否,则执行步骤S4;
步骤S2,判断Tm+ΔT是否大于或等于Tseek,若是,则执行步骤S3,若否,则执行步骤S4;其中,Tm为第m帧的时间戳,Tseek为seek点的时间戳;
步骤S3,将第m帧作为解码起始帧进行解码;
步骤S4,丢弃第m帧,将m赋值为m+1,跳转步骤S1。
在一种可选的实施方式中,可执行指令具体可以用于使得处理器执行以下操作:
在对第m帧进行解码之后,判断第m+1帧是否为B帧,并且第m+1帧的时间戳是否小于Tseek,若是,则丢弃第m+1帧,若否,则对第m+1帧及其后续帧进行解码;
在丢弃第m+1帧之后,若第m+1帧之后的连续至少一个帧均为B帧,则丢弃第m+1帧之后的连续至少一个帧,对非B帧及其后续帧进行解码。
在一种可选的实施方式中,可执行指令具体可以用于使得处理器执行以下操作:
在解码完成后,将时间戳小于Tseek的帧丢弃,将时间戳大于或等于Tseek的帧作为渲染起始帧进行渲染,Tseek为seek点的时间戳。
在一种可选的实施方式中,可执行指令具体可以用于使得处理器执行以下操作:
帧的时间戳通过下式获得:
T=PTS/90,其中,T为帧的时间戳,所述PTS从帧的PES包中提取得到。
由此可见,根据本实施例的流媒体seek方法,相对于现有技术减少了缓存过程,无需缓存和重新遍历流媒体目标片段,边读取边解码,可以实现达到秒级的精准seek,且资源复用率低。
实施例六
图6示出了根据本发明实施例五提供的一种计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
如图6所示,该计算设备可以包括:处理器(processor)602、通信接口(Communications Interface)604、存储器(memory)606、以及通信总线608。
其中:处理器602、通信接口604、以及存储器606通过通信总线608完成相互间的通信。通信接口604,用于与其它设备比如客户端或其它服务器等的网元通信。处理器602,用于执行程序610,具体可以执行上述方法实施例中的相关步骤。
具体地,程序610可以包括程序代码,该程序代码包括计算机操作指令。
处理器602可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器606,用于存放程序610。存储器606可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序610具体可以用于使得处理器602执行以下操作:
读取流媒体文件包含的包信息,计算流媒体文件中相邻两个关键帧的时间差值ΔT;
根据流媒体文件包含的各个流媒体片段的时长信息以及seek点的时间戳,定位并请求seek点对应的目标流媒体片段;
依次读取目标流媒体片段的当前帧,判断该当前帧是否为关键帧且该当前帧的时间戳与ΔT之和是否大于或等于seek点的时间戳,若是,则将当前帧作为解码起始帧进行解码;若否,则丢弃当前帧。
在一种可选的实施方式中,程序610具体可以用于使得处理器602执行以下操作:
复用上一次请求流媒体片段的套接字连接,请求seek点对应的目标流媒体片段。
在一种可选的实施方式中,程序610具体可以用于使得处理器602执行以下操作:
依次读取流媒体文件包含的流媒体片段的时长信息Tn并依次累加为STn,其中,STn=T1+T2+T3+…+Tn,n为被读取的流媒体片段的数量,n为自然数;
当STn≤Tseek且STn+1>Tseek,其中Tseek为seek点的时间戳,则定位第n个流媒体片段为seek点对应的目标流媒体片段,向服务器请求目标流媒体片段。
在一种可选的实施方式中,程序610具体可以用于使得处理器602执行以下操作:
从m=1开始,执行如下步骤:
步骤S1,读取目标流媒体片段的第m帧,判断第m帧是否为关键帧,若是,则执行步骤S2;若否,则执行步骤S4;
步骤S2,判断Tm+ΔT是否大于或等于Tseek,若是,则执行步骤S3,若否,则执行步骤S4;其中,Tm为第m帧的时间戳,Tseek为seek点的时间戳;
步骤S3,将第m帧作为解码起始帧进行解码;
步骤S4,丢弃第m帧,将m赋值为m+1,跳转步骤S1。
在一种可选的实施方式中,程序610具体可以用于使得处理器602执行以下操作:
在对第m帧进行解码之后,判断第m+1帧是否为B帧,并且第m+1帧的时间戳是否小于Tseek,若是,则丢弃第m+1帧,若否,则对第m+1帧及其后续帧进行解码;
在丢弃第m+1帧之后,若第m+1帧之后的连续至少一个帧均为B帧,则丢弃第m+1帧之后的连续至少一个帧,对非B帧及其后续帧进行解码。
在一种可选的实施方式中,程序610具体可以用于使得处理器602执行以下操作:
在解码完成后,将时间戳小于Tseek的帧丢弃,将时间戳大于或等于Tseek的帧作为渲染起始帧进行渲染,Tseek为seek点的时间戳。
在一种可选的实施方式中,程序610具体可以用于使得处理器602执行以下操作:
帧的时间戳通过下式获得:
T=PTS/90,其中,T为帧的时间戳,所述PTS从帧的PES包中提取得到。
由此可见,根据本实施例的流媒体seek方法,相对于现有技术减少了缓存过程,无需缓存和重新遍历流媒体目标片段,边读取边解码,可以实现达到秒级的精准seek,且资源复用率低。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
Claims (10)
1.一种流媒体seek方法,其特征在于,包括:
读取流媒体文件包含的包信息,计算所述流媒体文件中相邻两个关键帧的时间差值ΔT;
根据所述流媒体文件包含的各个流媒体片段的时长信息以及seek点的时间戳,定位并请求所述seek点对应的目标流媒体片段;
依次读取所述目标流媒体片段的当前帧,判断该当前帧是否为关键帧且该当前帧的时间戳与所述ΔT之和是否大于或等于所述seek点的时间戳,若是,则将所述当前帧作为解码起始帧进行解码;若否,则丢弃所述当前帧。
2.根据权利要求1所述的流媒体seek方法,其特征在于,所述请求所述seek点对应的目标流媒体片段进一步包括:
复用上一次请求流媒体片段的套接字连接,请求所述seek点对应的目标流媒体片段。
3.根据权利要求1或2所述的流媒体seek方法,其特征在于,所述根据所述流媒体文件包含的各个流媒体片段的时长信息以及seek点的时间戳,定位并请求所述seek点对应的目标流媒体片段进一步包括:
依次读取所述流媒体文件包含的流媒体片段的时长信息Tn并依次累加为STn,其中,STn=T1+T2+T3+…+Tn,n为被读取的流媒体片段的数量,n为自然数;
当STn≤Tseek且STn+1>Tseek,其中Tseek为seek点的时间戳,则定位第n个流媒体片段为所述seek点对应的目标流媒体片段,向服务器请求所述目标流媒体片段。
4.根据权利要求1或2所述的流媒体seek方法,其特征在于,所述依次读取所述目标流媒体片段的当前帧,判断该当前帧是否为关键帧且该当前帧的时间戳与所述ΔT之和是否大于或等于所述seek点的时间戳,若是,则将所述当前帧作为解码起始帧进行解码;若否,则丢弃所述当前帧进一步包括:
从m=1开始,执行如下步骤:
步骤S1,读取目标流媒体片段的第m帧,判断第m帧是否为关键帧,若是,则执行步骤S2;若否,则执行步骤S4;
步骤S2,判断Tm+ΔT是否大于或等于Tseek,若是,则执行步骤S3,若否,则执行步骤S4;其中,Tm为第m帧的时间戳,Tseek为seek点的时间戳;
步骤S3,将所述第m帧作为解码起始帧进行解码;
步骤S4,丢弃第m帧,将m赋值为m+1,跳转步骤S1。
5.根据权利要求4所述的流媒体seek方法,其特征在于,在所述步骤S3之后,所述方法还包括:
在对第m帧进行解码之后,判断第m+1帧是否为B帧,并且第m+1帧的时间戳是否小于Tseek,若是,则丢弃所述第m+1帧,若否,则对第m+1帧及其后续帧进行解码;
在丢弃所述第m+1帧之后,若第m+1帧之后的连续至少一个帧均为B帧,则丢弃所述第m+1帧之后的连续至少一个帧,对非B帧及其后续帧进行解码。
6.根据权利要求1或2所述的流媒体seek方法,其特征在于,所述方法进一步包括:
在解码完成后,将时间戳小于Tseek的帧丢弃,将时间戳大于或等于Tseek的帧作为渲染起始帧进行渲染,Tseek为seek点的时间戳。
7.根据权利要求1所述的流媒体seek方法,其特征在于,所述方法还包括:帧的时间戳通过下式获得:
T=PTS/90,其中,T为帧的时间戳,所述PTS从帧的PES包中提取得到。
8.一种流媒体seek装置,其特征在于,包括:
计算模块,适于读取流媒体文件包含的包信息,计算所述流媒体文件中相邻两个关键帧的时间差值ΔT;
定位模块,适于根据所述流媒体文件包含的各个流媒体片段的时长信息以及seek点的时间戳,定位并请求所述seek点对应的目标流媒体片段;以及
判断模块,适于依次读取所述目标流媒体片段的当前帧,判断该当前帧是否为关键帧且该当前帧的时间戳与所述ΔT之和是否大于或等于所述seek点的时间戳,若是,则将所述当前帧作为解码起始帧进行解码;若否,则丢弃所述当前帧。
9.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7中任一项所述的流媒体seek方法对应的操作。
10.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-7中任一项所述的流媒体seek方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111007044.3A CN113726778A (zh) | 2021-08-30 | 2021-08-30 | 流媒体seek方法、装置、计算设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111007044.3A CN113726778A (zh) | 2021-08-30 | 2021-08-30 | 流媒体seek方法、装置、计算设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113726778A true CN113726778A (zh) | 2021-11-30 |
Family
ID=78679395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111007044.3A Pending CN113726778A (zh) | 2021-08-30 | 2021-08-30 | 流媒体seek方法、装置、计算设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113726778A (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102264004A (zh) * | 2011-08-05 | 2011-11-30 | Tcl集团股份有限公司 | 一种防止关键帧缺失而不能seek的方法及装置 |
CN104702592A (zh) * | 2015-01-08 | 2015-06-10 | 三星电子(中国)研发中心 | 流媒体下载方法和装置 |
CN105208463A (zh) * | 2015-08-31 | 2015-12-30 | 北京暴风科技股份有限公司 | 针对m3u8文件进行帧确定的方法和系统 |
CN105979404A (zh) * | 2015-12-01 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 一种流媒体的处理方法及装置 |
US20160286231A1 (en) * | 2015-03-25 | 2016-09-29 | Hangzhou Hikvision Digital Technology Co., Ltd. | Systems and Methods for Controlling Video Display |
CN106101867A (zh) * | 2016-07-20 | 2016-11-09 | 深圳芯智汇科技有限公司 | 一种提高flv视频跳播速度和定位精确性的方法 |
CN106686445A (zh) * | 2015-11-05 | 2017-05-17 | 北京中广上洋科技股份有限公司 | 对多媒体文件进行按需跳转的方法 |
CN107484039A (zh) * | 2017-08-22 | 2017-12-15 | 四川长虹电器股份有限公司 | 一种流媒体点播seek画面快速显示的方法 |
CN108076377A (zh) * | 2017-12-26 | 2018-05-25 | 浙江大华技术股份有限公司 | 一种视频的存储、播放方法、装置、电子设备及存储介质 |
CN108737908A (zh) * | 2018-05-21 | 2018-11-02 | 腾讯科技(深圳)有限公司 | 一种媒体播放方法、装置及存储介质 |
CN109660805A (zh) * | 2017-10-10 | 2019-04-19 | 武汉斗鱼网络科技有限公司 | 解码播放中音视频同步优化方法、存储介质、设备及系统 |
CN110234031A (zh) * | 2018-03-05 | 2019-09-13 | 青岛海信传媒网络技术有限公司 | 一种媒体播放的方法及装置 |
CN110248245A (zh) * | 2019-06-21 | 2019-09-17 | 维沃移动通信有限公司 | 一种视频定位方法、装置、移动终端及存储介质 |
CN110913272A (zh) * | 2019-12-03 | 2020-03-24 | 腾讯科技(深圳)有限公司 | 视频播放方法、装置、计算机可读存储介质和计算机设备 |
CN111586479A (zh) * | 2019-02-19 | 2020-08-25 | 苹果公司 | 低延迟流媒体 |
US20210004604A1 (en) * | 2018-07-09 | 2021-01-07 | Tencent Technology (Shenzhen) Company Limited | Video frame extraction method and apparatus, computer-readable medium |
-
2021
- 2021-08-30 CN CN202111007044.3A patent/CN113726778A/zh active Pending
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102264004A (zh) * | 2011-08-05 | 2011-11-30 | Tcl集团股份有限公司 | 一种防止关键帧缺失而不能seek的方法及装置 |
CN104702592A (zh) * | 2015-01-08 | 2015-06-10 | 三星电子(中国)研发中心 | 流媒体下载方法和装置 |
US20160286231A1 (en) * | 2015-03-25 | 2016-09-29 | Hangzhou Hikvision Digital Technology Co., Ltd. | Systems and Methods for Controlling Video Display |
CN105208463A (zh) * | 2015-08-31 | 2015-12-30 | 北京暴风科技股份有限公司 | 针对m3u8文件进行帧确定的方法和系统 |
CN106686445A (zh) * | 2015-11-05 | 2017-05-17 | 北京中广上洋科技股份有限公司 | 对多媒体文件进行按需跳转的方法 |
CN105979404A (zh) * | 2015-12-01 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 一种流媒体的处理方法及装置 |
CN106101867A (zh) * | 2016-07-20 | 2016-11-09 | 深圳芯智汇科技有限公司 | 一种提高flv视频跳播速度和定位精确性的方法 |
CN107484039A (zh) * | 2017-08-22 | 2017-12-15 | 四川长虹电器股份有限公司 | 一种流媒体点播seek画面快速显示的方法 |
CN109660805A (zh) * | 2017-10-10 | 2019-04-19 | 武汉斗鱼网络科技有限公司 | 解码播放中音视频同步优化方法、存储介质、设备及系统 |
CN108076377A (zh) * | 2017-12-26 | 2018-05-25 | 浙江大华技术股份有限公司 | 一种视频的存储、播放方法、装置、电子设备及存储介质 |
CN110234031A (zh) * | 2018-03-05 | 2019-09-13 | 青岛海信传媒网络技术有限公司 | 一种媒体播放的方法及装置 |
CN108737908A (zh) * | 2018-05-21 | 2018-11-02 | 腾讯科技(深圳)有限公司 | 一种媒体播放方法、装置及存储介质 |
US20210004604A1 (en) * | 2018-07-09 | 2021-01-07 | Tencent Technology (Shenzhen) Company Limited | Video frame extraction method and apparatus, computer-readable medium |
CN111586479A (zh) * | 2019-02-19 | 2020-08-25 | 苹果公司 | 低延迟流媒体 |
CN110248245A (zh) * | 2019-06-21 | 2019-09-17 | 维沃移动通信有限公司 | 一种视频定位方法、装置、移动终端及存储介质 |
CN110913272A (zh) * | 2019-12-03 | 2020-03-24 | 腾讯科技(深圳)有限公司 | 视频播放方法、装置、计算机可读存储介质和计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10219010B2 (en) | Selective media playing method and apparatus according to live streaming and recorded streaming | |
WO2017063399A1 (zh) | 一种视频播放方法和装置 | |
CN110784740A (zh) | 视频处理方法、装置、服务器及可读存储介质 | |
CN111447455A (zh) | 直播视频流回放处理方法、装置及计算设备 | |
EP3142381B1 (en) | Network video playing method and device | |
CN112601127B (zh) | 视频显示方法及装置、电子设备、计算机可读存储介质 | |
CN112261377B (zh) | web版监控视频播放方法、电子设备及存储介质 | |
CN111726657A (zh) | 直播视频的播放处理方法、装置及服务器 | |
CN112423140A (zh) | 视频播放方法、装置、电子设备和存储介质 | |
KR101680545B1 (ko) | 파노라마 동영상 생성 서비스 제공 방법 및 장치 | |
CN110139128B (zh) | 一种信息处理方法、拦截器、电子设备及存储介质 | |
CN109525852B (zh) | 直播视频流处理方法、装置、系统及计算机可读存储介质 | |
CN112235600B (zh) | 视频数据及视频业务请求的处理方法、装置及系统 | |
CN113726778A (zh) | 流媒体seek方法、装置、计算设备及计算机存储介质 | |
CN113839829A (zh) | 云游戏延时测试方法、装置、系统及电子设备 | |
CN116456149A (zh) | 基于ue引擎分布式渲染视频同步系统和方法 | |
JP2006517363A (ja) | モーションベクトルの予測方法及びシステム | |
CN112019878A (zh) | 一种视频解码和编辑的方法、装置、设备和存储介质 | |
CN113784094B (zh) | 视频数据处理方法、网关、终端设备及存储介质 | |
CN112511887B (zh) | 视频播放控制方法及相应的装置、设备、系统和存储介质 | |
US20100076944A1 (en) | Multiprocessor systems for processing multimedia data and methods thereof | |
CN113747063A (zh) | 一种视频传输的方法、装置、电子设备及可读存储介质 | |
CN113409801A (zh) | 用于实时音频流播放的噪音处理方法、系统、介质和装置 | |
US20160241770A1 (en) | Ip camera and video playback method thereof | |
CN115460189B (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 |