改善网络媒体文件seek效果的方法技术

技术编号:37765890 阅读:21 留言:0更新日期:2023-06-06 13:25
本发明专利技术公开了一种改善网络媒体文件seek效果的方法,包括以下步骤:播放器起播,获取媒体流信息,构建关键帧列表;用户发起seek操作时,播放器记录用户拖动进度条后停止的目标时间点,如果播放器的缓存数据已经包含所述目标时间点,通过缓存数据实现seek后的起播;否则播放器根据目标时间点估算目标时间点在媒体文件中的偏移位置,以此作为HTTP请求内容,向媒体服务器请求偏移位置后的媒体数据,偏移位置的获取通过查找播放器构建的关键帧列表或迭代估算实现。本发明专利技术通过构建关键帧列表并基于码率估算和迭代处理的方法,可以很好改善seek不准导致播放体验差的问题。seek不准导致播放体验差的问题。seek不准导致播放体验差的问题。

【技术实现步骤摘要】
改善网络媒体文件seek效果的方法


[0001]本专利技术属于流媒体播放
,具体涉及一种改善网络媒体文件seek效果的方法。

技术介绍

[0002]流媒体(Streaming Media)技术是指将一连串的媒体数据压缩后,以流的方式在网络中分段传送,实现在网络上实时传输影音以供观赏的一种技术。该技术大大改善了在此之前的视频观看必须将观看的媒体文件完全或者大部分下载到观看设备上,解决了既花费时间,又占用设备存储空间的问题。通常,用户在观看设备(电脑,平板,手机等)上打开流媒体播放器,选择要看的媒体流就可实施观看。用户观看视频的过程中,如果想跳过一些视频片段,可以拖动媒体播放器的进度条到自己想观看的位置,这种操作叫作seek。
[0003]媒体流来源于媒体服务器上存储的各种已经编码封装好的媒体文件,比如MP4,FLV,TS等等。由于流媒体分段实时传输的特性,用户的每一次seek操作,媒体播放器都必须向媒体服务器发起一次新的HTTP请求,获取seek时间点附近的媒体数据重新播放。HTTP请求是基于seek时间点换算后得到的该时间点相对于媒体文件总长度的字节偏移。一次完整的seek操作包含了用户拖动进度条开始到媒体播放器获取到新的媒体数据,解封装解码后重新开始播放需要的时间。
[0004]seek操作影响用户体验的主要有两个因素:网络质量(网络越好,seek发起的HTTP请求获取seek后的媒体数据越快);seek位置的准确度,即播放器发起seek请求后获取到的媒体数据的开始时间点是否正是用户想要的seek时间点。通常MP4会包含关键帧列表,即包含所有关键帧的时间戳,和该时间戳对应在MP4文件中的偏移位置。播放器通过关键帧列表的查询能获得准确的seek时间点对应的文件位置。而TS文件没有关键帧列表,FLV的关键帧列表是可选项,可能有,也可能没有。对于没有关键帧列表的媒体文件,通常seek位置的计算方式是基于seek的时间点和媒体文件的总时长的比率,再基于文件总长度换算出一个偏移位置向媒体服务器发起请求。因此基于码流平均码率换算得到的媒体数据包含的seek后的播放时间点和用户想要的时间点都会有一些偏差,码流码率变动越大,该偏差越大。对于无法精确seek的情况,现行的媒体播放器比如VLC默认不提供基于时间点的seek绕过了这个问题,而PotPlayer是把整条媒体流下载完成才开始播放,对于偏差很大的情况,其他播放器可能采用多次HTTP请求逼近seek真实时间点的方法,但是如何请求保证用较少的请求次数,花较短的时间并没有好的处理办法,非常影响播放体验。

技术实现思路

[0005]鉴于以上存在的问题,本专利技术提供一种改善网络媒体文件seek效果的方法,通过构建关键帧列表并基于码率估算和迭代处理的方法,可以很好改善seek不准导致播放体验差的问题。
[0006]为解决上述技术问题,本专利技术采用如下的技术方案:
[0007]一种改善网络媒体文件seek效果的方法,包括以下步骤:
[0008]播放器起播,获取媒体流信息,构建关键帧列表;
[0009]用户发起seek操作时,播放器记录用户拖动进度条后停止的目标时间点,如果播放器的缓存数据已经包含所述目标时间点,通过缓存数据实现seek后的起播;否则播放器根据目标时间点估算目标时间点在媒体文件中的偏移位置,以此作为HTTP请求内容,向媒体服务器请求偏移位置后的媒体数据,偏移位置的获取通过查找播放器构建的关键帧列表或迭代估算实现。
[0010]一种可能的实施方式中,所述播放器起播,获取媒体流信息包括:
[0011]媒体播放器获取用户选择播放的媒体流的地址,向媒体服务器发起HTTP请求;
[0012]媒体服务器响应媒体播放器,响应数据包含媒体文件的总长度P
file
,并开始流式传输媒体文件;
[0013]媒体播放器记录媒体文件的总长度,并收取媒体流数据,解封装判断媒体文件的格式,是否有关键帧列表,是否包含文件总时长,即播放片长T
file

[0014]对于不包含总时长的媒体文件,媒体播放器选择一个靠近媒体文件尾部的偏移位置发起新的HTTP请求,获取到媒体文件的尾部数据,通过对尾部数据的解析处理,获取到媒体文件最后一个音频或者视频编码帧的时间戳,作为文件的总时长T
file

[0015]媒体播放器持续接收来自媒体服务器的媒体数据,解封装后获得带有时间戳信息的音视频编码帧,再送入对应的音视频解码器解码播放。
[0016]一种可能的实施方式中,所述构建关键帧列表具体包括:
[0017]在解封装的过程中,媒体播放器遇到视频关键帧时,根据关键帧的信息,生成并维护一个和该媒体文件关联的关键帧列表,所述关键帧列表的每一项包含三个元素{Ti,Pi,Ci},其中Ti是当前表项关键帧对应的时间戳,Pi是该关键帧在媒体文件中的位置偏移,Ci是标识表单项连续性的布尔量,即当前表单项和列表中的上一表单项对应的关键帧在媒体文件中是否是连续的;播放器边播放边构建和更新对应的关键帧列表信息。
[0018]一种可能的实施方式中,进一步包括:关键帧列表的表单项为{T0,P0,C0},{T1,P
1,
C1}

{T
i,
P
i,
C
i
},其中C
0,
C1...C
i
都标志连续,取值为TRUE;在此之后,用户发起seek操作到一个大于T
i
的时刻,则下一个表单项应为{T
i+1,
P
i+1,
C
i+1
},其中C
i+1
的取值为FALSE。
[0019]一种可能的实施方式中,所述查找播放器构建的关键帧列表具体包括:
[0020]对于目标seek的目标时间点T
target
,首先查找播放过程中构建的三元关键帧列表是否有直接可用的数据项,具体而言,播放器遍历关键帧列表项,找到时间点T
target
前后最接近的两个列表项,{T
s
,P
s
,C
s
},{T
e
,P
e
,C
e
},其中{T
s
,P
s
,C
s
}是所有时间戳小于T
target
表单项里时间戳值最大的一项;{T
e
,P
e
,C
e
}是所有时间戳大于T
target
表单项里时间戳值最小的一项;
[0021]如果C
e
为TRUE,表示这两个列表项是连续的关键帧,播放器以P
s
为偏移位置向媒体服务器发起HTTP请求,获取到的媒体数据包含的开始关键帧的时间戳即为T
s...

【技术保护点】

【技术特征摘要】
1.一种改善网络媒体文件seek效果的方法,其特征在于,包括以下步骤:播放器起播,获取媒体流信息,构建关键帧列表;用户发起seek操作时,播放器记录用户拖动进度条后停止的目标时间点,如果播放器的缓存数据已经包含所述目标时间点,通过缓存数据实现seek后的起播;否则播放器根据目标时间点估算目标时间点在媒体文件中的偏移位置,以此作为HTTP请求内容,向媒体服务器请求偏移位置后的媒体数据,偏移位置的获取通过查找播放器构建的关键帧列表或迭代估算实现。2.如权利要求1所述的改善网络媒体文件seek效果的方法,其特征在于,所述播放器起播,获取媒体流信息包括:媒体播放器获取用户选择播放的媒体流的地址,向媒体服务器发起HTTP请求;媒体服务器响应媒体播放器,响应数据包含媒体文件的总长度P
file
,并开始流式传输媒体文件;媒体播放器记录媒体文件的总长度,并收取媒体流数据,解封装判断媒体文件的格式,是否有关键帧列表,是否包含文件总时长,即播放片长T
file
;对于不包含总时长的媒体文件,媒体播放器选择一个靠近媒体文件尾部的偏移位置发起新的HTTP请求,获取到媒体文件的尾部数据,通过对尾部数据的解析处理,获取到媒体文件最后一个音频或者视频编码帧的时间戳,作为文件的总时长T
file
;媒体播放器持续接收来自媒体服务器的媒体数据,解封装后获得带有时间戳信息的音视频编码帧,再送入对应的音视频解码器解码播放。3.如权利要求1或2所述的改善网络媒体文件seek效果的方法,其特征在于,所述构建关键帧列表具体包括:在解封装的过程中,媒体播放器遇到视频关键帧时,根据关键帧的信息,生成并维护一个和该媒体文件关联的关键帧列表,所述关键帧列表的每一项包含三个元素{Ti,Pi,Ci},其中Ti是当前表项关键帧对应的时间戳,Pi是该关键帧在媒体文件中的位置偏移,Ci是标识表单项连续性的布尔量,即当前表单项和列表中的上一表单项对应的关键帧在媒体文件中是否是连续的;播放器边播放边构建和更新对应的关键帧列表信息。4.如权利要求3所述的改善网络媒体文件seek效果的方法,其特征在于,进一步包括:关键帧列表的表单项为{T0,P0,C0},{T1,P1,C1}

{T
i
,P
i
,C
i
},其中C0,C1...C
i
都标志连续,取值为TRUE;在此之后,用户发起seek操作到一个大于T
i
的时刻,则下一个表单项应为{T
i+1
,P
i+1
,C
i+1
},其中C
i+1
的取值为FALSE。5.如权利要求4所述的改善网络媒体文件seek效果的方法,其特征在于,所述查找播放器构建的关键帧列表具体包括:对于目标seek的目标时间点T
target
,首先查找播放过程中构建的三元关键帧列表是否有直接可用的数据项,具体而言,播放器遍历关键帧列表项,找到时间点T
target
前后最接近的两个列表项,{T
s
,P
s
,C
s
},{T
e
,P
e
,C
e
},其中{T
s
,P
s
,C
s
}是所有时间戳小于T
target
表单项里时间戳值最大的一项;{T
e
,P
e
,C
e
}是所有时间戳大于T
target
表单项里时间戳值最小的一项;如果C
e
为TRUE,表示这两个列表项是连续的关键帧,播放器以P
s
为偏移位置向媒体服务器发起HTTP请求,获取到的媒体数据包含的开始关键帧的时间戳即为T
s
,根据列表项的连续性可知,T
s
是媒体文件中和T
target
最接近的关键帧时间,播放器由此快速解码,获得最接
近T
target
的视频帧画面开始seek后的播放;如果C
e
为FALSE,表示这两个列表项不是连续的关键帧,判断T
s
或T
e
和T
target
的时间间隔,如果间隔较小,认为T
s
或T
e
是距离T
target
最近的关键帧时间,播放器以P
s
或者P
e
为偏移位置向媒体服务器发起HTTP请求,准备seek后的播放处理;如果间隔较大,采用迭代估算。6.如权利要求5所述的改善网络媒体文件seek效果的方法,其特征在于,所述迭代估算具体包括:播放器以{T
s
,P
s
}作为开始端点,{T
e
,P
e
}作为结束端点,基于两个端点包含的区间进行后续的迭代;播放器设置一个阈值T
Limit
,由于seek操作最终需要一个最接近于目标时间点T
target
的关键帧的时间戳T
actual
以用于seek后的解码播放,而T
target
时刻对应的视频帧不一定是关键帧,和实际的关键帧T
actual
允许有一定偏差,该偏差阈值设为T
Limit
;如果迭代后处理获得的时间戳值和T
target
的差值在此阈值范围内,迭代结束。7.如权利要求6所述的改善网络媒体文件seek效果的方法,其特征在于,最早查询播放器自建的关键帧列表时,如果关键帧列表中小于T
target
的表单项为空,{T
s
,P
s
}取值为媒体文件最开始的位置,即文件中第一个视频帧,时间戳为0,偏移也为0;如果关键帧列表中大于T
target

【专利技术属性】
技术研发人员:张华文志平裘昊陈勇
申请(专利权)人:杭州当虹科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1