流媒体视频的seek处理方法、电子设备及存储介质与流程

文档序号:35340068发布日期:2023-09-07 07:58阅读:42来源:国知局
流媒体视频的seek处理方法、电子设备及存储介质与流程

本技术涉及视频播放,尤其涉及一种流媒体视频的seek处理方法、电子设备及存储介质。


背景技术:

1、目前,当用户通过电子设备观看视频时,可以支持视频播放内容的快进或者快退功能,用户只需在视频界面中的进度条上拖动播放点(或者滑动手指),即可触发将视频播放内容切换到拖动停止位置处继续播放。

2、在实际实现时,通常采用定位(seekto)方式进行视频播放内容的定位。其中,seekto跳转的位置并不是seek位置点(即指定时间点),而是距离指定时间点最近的关键帧。例如,目前默认采用的seekto方式为seek_previous_sync模式;在应用该seek_previous_sync模式时,会搜索指定时间点以及在指定时间点之前最近的关键帧,也就是说,通常会定位到指定时间点前的最近一个i帧,然后继续播放。例如,假设用户将进度条上的播放点手动拖动到某个位置,例如1分钟,此时可能会从58秒开始继续播放。

3、然而,在采用上述seekto方式进行视频播放内容的定位时,在一些情况下,视频画面切换的时间相对较长;在另一些情况下,在视频画面切换的过程中出现进度条跳动,定位不准确的问题,影响用户观影体验。


技术实现思路

1、本技术提供一种流媒体视频的seek处理方法及电子设备,解决了在采用默认seekto方式进行视频播放内容的定位时存在耗时长或者定位不准确的问题。

2、为达到上述目的,本技术采用如下技术方案:

3、第一方面,本技术提供一种流媒体视频的seek处理方法,该方法包括:

4、响应于对流媒体视频的定位seek操作,确定所述seek操作对应的第一时间点;

5、根据所述第一时间点和所述流媒体视频的视频总长度,确定所述第一时间点位于所述流媒体视频的第一时间段内;

6、确定所述第一时间点与第一帧之间的第一时间差,所述第一帧为所述流媒体视频中与所述第一时间点距离最近的关键i帧;

7、当所述第一时间差与所述视频总长度之间的比例小于第一预设比例时,确定第一seek模式作为目标seek模式,所述第一seek模式为与所述第一时间段对应的seek模式;或者,

8、当所述第一时间差与所述视频总长度之间的比例大于或等于小于第一预设比例时,确定第二seek模式作为所述目标seek模式;

9、采用所述目标seek模式,定位到所述流媒体视频的第二时间点;

10、从所述第二时间点开始播放所述流媒体视频;

11、其中,所述第一seek模式为seek_previous_sync模式,seek_next_sync模式,或者seek_closest_sync模式;第二seek模式为seek_closest模式。

12、通过本技术提供的流媒体视频的seek处理方法,在触发进度条拖动事件后,获取流媒体视频的视频长度以及ibp帧分布情况等数据,分析指定时间点在视频总长度中的位置情况,并分析指定时间点与最近i帧之间的时间差是否小于精准seek的最大间隔阈值,从预设的多个seek模式中选择出适合当前seek场景的seek模式:若时间差大于或等于该最大间隔阈值,则选择精准seek模式;若时间差小于该最大间隔阈值,则选择非精准seek模式。通过本技术方案,通过选择合适的seek模式进行定位,可以使得视频定位更加准确,并且使得进度条拖动后的视频定位所需耗时短,由此可以提升进度条拖动效果,提升用户在拖动进度条后的观影体验。

13、其中,精准seek模式为seek_closest模式;非精准seek模式为seek_previous_sync模式,seek_next_sync模式,seek_closest_sync模式或者seek_closest模式。

14、在一些可能实现方式中,上述确定目标seek模式的过程是通过调用seekto函数完成的,该seekto函数为预设的自适应定位seek_auto函数。这样可以实现视频的智能seek,可以针对不同的视频优化seek的速度和体验。例如,在进度条拖动后可以准确定位到指定时间点,使得视频画面能够切换到指定时间点并继续进行播放;或者在进度条拖动后可以准确定位到距离指定时间点最近的关键帧,使得视频画面能够切换到距离指定时间点最近的关键帧并继续进行播放,由此保证准确定位且提升了定位速度。

15、在一些可能实现方式中,当第一时间段为所述流媒体视频的开头片段时,所述第一帧为所述流媒体视频的首位i帧,所述第一帧位于所述第一时间点之前。

16、在一些可能实现方式中,当第一时间段为所述流媒体视频的中间片段时,所述第一帧位于所述第一时间点之前或者之后。

17、在一些可能实现方式中,当第一时间段为所述流媒体视频的结尾片段时,所述第一帧为所述流媒体视频的末位i帧,所述第一帧位于所述第一时间点之后。

18、在一些可能实现方式中,在所述第一时间段为所述流媒体视频的开头片段的情况下,与所述第一时间段对应的第一seek模式预设为seek_previous_sync模式。

19、其中,所述当所述第一时间差与所述视频总长度之间的比例小于所述第一预设比例时,确定第一seek模式作为目标seek模式,包括:

20、当所述第一时间差与所述视频总长度之间的比例小于所述第一预设比例时,确定所述seek_previous_sync模式作为所述目标seek模式。

21、在一些可能实现方式中,在所述第一时间段为所述流媒体视频的中间片段的情况下,与所述第一时间段对应的第一seek模式预设为seek_closest_sync模式。

22、其中,所述当所述第一时间差与所述视频总长度之间的比例小于所述第一预设比例时,确定第一seek模式作为目标seek模式,包括:

23、当所述第一时间差与所述视频总长度之间的比例小于所述第一预设比例时,确定所述seek_closest_sync模式作为所述目标seek模式。

24、在一些可能实现方式中,在所述第一时间段为所述流媒体视频的结尾片段的情况下,与所述第一时间段对应的第一seek模式预设为seek_next_sync模式。

25、其中,所述当所述第一时间差与所述视频总长度之间的比例小于所述第一预设比例时,确定第一seek模式作为目标seek模式,包括:当所述第一时间差与所述视频总长度之间的比例小于所述第一预设比例时,确定所述seek_next_sync模式作为所述目标seek模式。

26、在本技术实施例中,可以根据第一时间点在流媒体视频中的位置,以及第一时间点与最近i帧的时间差占视频总长度的占比情况,从预设的多个seek模式中选择目标seek模式。其中,预设的多个seek模式包括seek_previous_sync模式,seek_next_sync模式,seek_closest_sync模式,以及seek_closest模式。

27、在一些可能实现方式中,第一时间点在流媒体视频中的位置可以包括以下三种情况:

28、(1)第一时间点位于流媒体视频的开头片段;

29、(2)第一时间点位于流媒体视频的中间片段;

30、(3)第一时间点位于流媒体视频的结尾片段;

31、可以先确定第一时间点是位于流媒体视频的开头片段、还是中间片段,或者是结尾片段。开头片段,中间片段和结尾片段分别对应不同的seek模式。

32、例如,开头片段对应的seek模式包括seek_previous_sync模式,以及seek_closest模式。

33、例如,中间片段对应的seek模式包括seek_closest_sync模式,以及seek_closest模式。

34、例如,结尾片段对应的seek模式包括seek_closest_sync模式,以及seek_closest模式。

35、在一些可能实现方式中,在确定了第一时间点位于流媒体视频的开头片段之后,可以获取第一时间点与距离最近的关键i帧之间的时间差。在开头片段的情况下,可以将流媒体视频的首位i帧作为与第一时间点距离最近的关键i帧。可以理解的是,首位i帧在第一时间点之前。

36、在一些可能实现方式中,在确定了第一时间点位于流媒体视频的中间片段之后,可以获取第一时间点与距离最近的关键i帧之间的时间差。在中间片段的情况下,与第一时间点距离最近的关键i帧可能在第一时间点之前,也可能在第一时间点之后。

37、在一些可能实现方式中,在确定了第一时间点位于流媒体视频的结尾片段之后,可以获取第一时间点与距离最近的关键i帧之间的时间差。在开头片段的情况下,可以将流媒体视频的末位i帧作为与第一时间点距离最近的关键i帧。可以理解的是,末位i帧在第一时间点之后。

38、在获取第一时间点与距离最近的关键i帧之间的时间差之后,可以进一步确定第一时间点与最近i帧的时间差占视频总长度的占比情况。

39、在一些可能实现方式中,第一时间点与最近i帧的时间差占视频总长度的占比情况,可以通过将第一时间点与最近i帧的时间差占视频总长度的占比与第一预设比例进行比较进行判断。

40、示例性地,假设第一预设比例取1/100,相应地可以判断第一时间差与视频总长度之间的比例是否小于1/100,即判断第一时间差是否小于视频总长度的1/100,由此判断第一时间点与最近i帧的时间差,占视频总长度的占比情况。

41、其中,为了便于说明,可以将第一时间点称为seek操作点,将seek操作的场景称为seek场景,将第二时间点称为seek定位点。

42、第一场景:假设第一时间点位于流媒体视频的开头片段,该开头片段对应的seek模式包括seek_previous_sync模式,以及seek_closest模式。在第一时间点位于流媒体视频的开头片段之后,获取第一时间点与距离最近的首位i帧之间的时间差δt,然后判断时间差δt占视频总长度的占比情况,该占比情况可能存在如下两种情况:

43、情况一:第一时间差与视频总长度之间的比例小于1/100。根据该占比情况可以认为,当前seek场景中seek操作点与最近i帧相对较近,可以选择seek_previous_sync模式进行最近i帧定位。通过采用seek_previous_sync模式,可以将视频定位到该最近i帧,从该最近i帧开始播放。

44、情况二:第一时间差与视频总长度之间的比例大于或等于1/100。根据该占比情况可以认为,当前seek场景中seek操作点与最近i帧相对较远,可以选择seek_closest模式进行精准定位。通过采用seek_closest模式,可以将视频定位到与seek操作点最近的一个视频帧,从最近的该视频帧开始播放;其中,该视频帧可能是i帧,也可能是b帧,还可能是p帧,具体可以根据实际情况确定。

45、需要说明的是,对于seek_closest模式,如果定位到的视频帧是b帧或者p帧,而不是i帧,那么需要对定位到的b帧或者p帧进行解码,由于对b帧或者p帧属于预测帧,其解码需要借助于关键i帧,因此该情况下定位所需耗时相对较长。

46、第二场景:假设第一时间点位于流媒体视频的中间片段,该中间片段对应的seek模式包括seek_closest_sync模式,以及seek_closest模式。在第一时间点位于流媒体视频的中间片段之后,获取第一时间点与距离最近的i帧之间的时间差δt,然后判断时间差δt占视频总长度的占比情况,该占比情况可能存在如下两种情况:

47、情况一:第一时间差与视频总长度之间的比例小于1/100。根据该占比情况可以认为,当前seek场景中seek操作点与最近i帧相对较近,可以选择seek_closest_sync模式进行最近i帧定位。通过采用seek_closest_sync模式,可以将视频定位到与seek操作点距离最近的i帧,从该最近i帧开始播放。其中,此处定位到与seek操作点距离最近的i帧,可能在seek操作点之前,也可能在seek操作点之后,具体可以根据实际情况确定。

48、情况二:第一时间差与视频总长度之间的比例大于或等于1/100。根据该占比情况可以认为,当前seek场景中seek操作点与最近i帧相对较远,可以选择seek_closest模式进行精准定位。通过采用seek_closest模式,可以将视频定位到与seek操作点最近的一个视频帧,从最近的该视频帧开始播放,其中该视频帧可能是i帧,也可能是b帧,还可能是p帧,具体可以根据实际情况确定。

49、第三场景:假设第一时间点位于流媒体视频的结尾片段,该结尾片段对应的seek模式包括seek_next_sync模式,以及seek_closest模式。在第一时间点位于流媒体视频的结尾片段之后,获取第一时间点与距离最近的末位i帧之间的时间差δt,然后判断时间差δt占视频总长度的占比情况,该占比情况可能存在如下两种情况:

50、情况一:第一时间差与视频总长度之间的比例小于1/100。根据该占比情况可以认为,当前seek场景中seek操作点与最近末位i帧相对较近,可以选择seek_next_sync模式进行最近i帧定位。通过采用seek_next_sync模式,可以将视频定位到与seek操作点距离最近的末位i帧,从该最近末位i帧开始播放。

51、情况二:第一时间差与视频总长度之间的比例大于或等于1/100。根据该占比情况可以认为,当前seek场景中seek操作点与最近i帧相对较远,可以选择seek_closest模式进行精准定位。通过采用seek_closest模式,可以将视频定位到与seek操作点最近的一个视频帧,从最近的该视频帧开始播放,其中该视频帧可能是i帧,也可能是b帧,还可能是p帧,具体可以根据实际情况确定。

52、由此根据第一时间点在流媒体视频中的位置,以及第一时间点与最近i帧的时间差占视频总长度的占比情况,从预设的多个seek模式中选择出适合当前seek场景的seek模式,在通过所选seek模式进行最近i帧定位时,可以使得进度条拖动后的视频定位所需耗时短,而在通过所选seek模式进行精准定位时,可以使得视频定位更加准确,由此可以提升进度条拖动效果,提升用户在拖动进度条后的观影体验。

53、在一些可能实现方式中,所述根据所述第一时间点和所述流媒体视频的视频总长度,确定所述第一时间点位于所述流媒体视频的第一时间段内,包括:

54、当所述第一时间点对应的第一时间段与所述视频总长度之间的比例小于第二预设比例时,确定所述第一时间点位于所述流媒体视频的开头片段内,所述第一时间段为所述流媒体视频从头开始到所述第一时间点之间的时长;

55、或者,当所述第一时间段与所述视频总长度之间的比例大于或等于所述第二预设比例且小于第三预设比例时,确定所述第一时间点位于所述流媒体视频的中间片段内;

56、或者,当所述第一时间段与所述视频总长度之间的比例大于或等于所述第三预设比例时,确定所述第一时间点位于所述流媒体视频的结尾片段内;

57、其中,所述第二预设比例小于所述第三预设比例,所述第二预设比例和所述第三预设比例大于所述第一预设比例。

58、示例性地,第一预设比例可以取1/100,第二预设比例可以取1/10,第三预设比例可以取9/10。

59、在一些可能实现方式中,在所述目标seek模式为seek_previous_sync模式,或者seek_next_sync模式,或者seek_closest_sync模式的情况下,所述第二时间点处的视频帧为与所述第一时间点距离最近的i帧;

60、在所述目标seek模式为seek_closest模式的情况下,所述第二时间点处的视频帧为与所述第一时间点距离最近的i帧或者b帧或者p帧。

61、在一些可能实现方式中,所述确定所述第一时间点与第一帧之间的第一时间差,包括:从缓存区中获取所述流媒体视频的视频帧分布数据和视频帧时间数据;根据所述第一时间点、所述视频帧分布数据以及所述视频帧时间数据,确定所述第一时间点与所述第一帧之间的所述第一时间差;其中,所述视频帧分布数据用于表示i帧、b帧和p帧的分布情况,所述视频帧时间数据包括所述流媒体视频中每一帧的显示时间戳(presentation timestamp,pts)。

62、在一些可能实现方式中,在所述获取视频帧分布数据和视频帧时间数据之前,所述方法还包括:获取所述流媒体视频的视频轨道数据;根据所述视频轨道数据,确定所述视频帧分布数据和所述视频帧时间数据;在所述缓存区中缓存所述视频帧分布数据和所述视频帧时间数据。

63、在一些可能实现方式中,在所述响应于对流媒体视频的定位seek操作,确定所述seek操作对应的第一时间点之前,所述方法还包括:接收用户在所述流媒体视频的播放界面上的第一操作,所述第一操作为触发所述流媒体视频快进播放或者快退播放的操作;其中,所述第一操作为对所述流媒体视频的seek操作。

64、在一些可能实现方式中,在所述采用所述目标seek模式,定位到所述流媒体视频的第二时间点之后,所述方法还包括;在显示屏上更新显示所述流媒体视频的进度条;其中,所述进度条对应的当前播放位置从所述第一时间点跳转到所述第二时间点。

65、在一些可能实现方式中,所述从所述第二时间点开始播放所述流媒体视频,包括:对所述第二时间点处的帧数据进行解码,得到解码后的帧数据;播放所述解码后的帧数据;其中,所述第二时间点处的帧数据为i帧或者b帧或者p帧。

66、在一些可能实现方式中,流媒体视频支持的视频编码格式包括高级视频编码(advanced video coding,avc)或高效视频编码(high efficiency video coding,hevc)。

67、第二方面,本技术提供一种流媒体视频的seek处理装置,该装置包括用于执行上述第一方面中的方法的单元。该装置可对应于执行上述第一方面中描述的方法,该装置中的单元的相关描述请参照上述第一方面的描述,为了简洁,在此不再赘述。

68、其中,上述第一方面描述的方法可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块或单元。例如,处理模块或单元、显示模块或单元等。

69、第三方面,本技术提供一种电子设备,所述电子设备包括处理器,处理器与存储器耦合,存储器用于存储计算机程序或指令,处理器用于执行存储器存储的计算机程序或指令,使得第一方面中的方法被执行。例如,处理器用于执行存储器存储的计算机程序或指令,使得该装置执行第一方面中的方法。

70、第四方面,本技术提供一种计算机可读存储介质,其上存储有用于实现第一方面中的方法的计算机程序(也可称为指令或代码)。例如,该计算机程序被计算机执行时,使得该计算机可以执行第一方面中的方法。

71、第五方面,本技术提供一种芯片,包括处理器。处理器用于读取并执行存储器中存储的计算机程序,以执行第一方面及其任意可能的实现方式中的方法。可选地,所述芯片还包括存储器,存储器与处理器通过电路或电线连接。

72、第六方面,本技术提供一种芯片系统,包括处理器。处理器用于读取并执行存储器中存储的计算机程序,以执行第一方面及其任意可能的实现方式中的方法。可选地,所述芯片系统还包括存储器,存储器与处理器通过电路或电线连接。

73、第七方面,本技术提供一种计算机程序产品,所述计算机程序产品包括计算机程序(也可称为指令或代码),所述计算机程序被计算机执行时使得所述计算机实现第一方面中的方法。

74、可以理解的是,上述第二方面至第七方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1