视频播放方法、装置、电子设备及存储介质与流程

未命名 07-15 阅读:116 评论:0
1.本技术涉及视频处理
技术领域
:,具体涉及一种视频播放方法、装置、电子设备及存储介质。
背景技术
::2.在视频播放过程中,用户跳过视频中间的片段,直接从某个时间点开始播放视频,这一操作过程称为seek。由于解码速度的影响,或是播放器支持seek到非关键帧,导致其从seek位置前最近的一个关键帧到seek位置的视频帧数据将会被覆盖掉,或是其他因素的存在,会导致在播放视频文件时,seek过程存在卡顿的问题。技术实现要素:3.有鉴于此,本技术实施例提供一种视频播放方法、装置、电子设备及存储介质,在加载视频文件时基于自建索引的方式实现seek,从而提高seek效率,以解决现有技术中seek过程存在卡顿的问题。4.第一方面,本技术实施例提供一种视频播放方法,可以包括:5.响应于跳转播放指令,确定所述跳转播放指令指示的播放位置所在的播放时间段,基于第一索引文件确定与所述播放时间段对应的多个图像组;其中,所述第一索引文件中记录有预设时间范围内多个所述图像组对应的索引;6.基于第二索引文件在所述多个图像组中确定目标图像组;其中,所述第二索引文件中记录有多个所述图像组的视频信息,所述视频信息至少包括帧内编码帧的时间戳;7.读取所述目标图像组,基于所述帧内编码帧的时间戳确定所述目标图像组中的目标播放位置,以从所述目标播放位置播放视频。8.在上述实现过程中,可以通过自建索引的方式,基于建立的第一索引文件和第二索引文件组成多级索引,在接收到用户的跳转播放指令时,确定跳转播放指令指示的播放位置处于视频的哪个播放时间段,并基于第一索引文件查询得到该播放时间段中所有的图像组,再基于第二索引文件从上述图像组中确定目标图像组,从而通过多级索引查询到对应的播放文件以及该播放文件的播放位置。可以降低文件读取量,节省计算资源,提高seek过程的效率和准确度,从而能够解决目前seek过程存在卡顿的问题。9.可选地,在所述响应于跳转播放指令,确定所述跳转播放指令指示的播放位置所在的播放时间段,基于第一索引文件确定与所述播放时间段对应的多个图像组之前,所述方法还可以包括:10.在加载视频文件时,建立所述视频文件的多级索引文件;其中,所述多级索引文件包括所述第一索引文件和所述第二索引文件。11.在上述实现过程中,可以通过自建索引的方式,基于建立的第一索引文件和第二索引文件组成多级索引,通过多级索引查询到播放文件以及该播放文件的播放位置。可以降低文件读取量,节省计算资源,提高seek过程的效率和准确度。12.可选地,在所述读取所述目标图像组之前,所述方法还可以包括:13.基于预设接口查询所述目标图像组的文件位置;所述预设接口配置为根据所述帧内编码帧的时间戳提供所述目标图像组的文件位置。14.在上述实现过程中,通过配置预设接口的方式,根据i帧的时间戳获取目标图像组文件的路径,可以提高获取文件位置的效率,从而提高seek效率,避免seek过程中存在的卡顿。15.可选地,所述读取所述目标图像组可以包括:16.基于自定义io读取所述目标图像组的视频文件,以确定所述目标播放位置。17.在上述实现过程中,可以基于自定义io读取的方式为播放器提供视频读取的支持,可以使只支持标准的输入流协议的播放器能够读取更多种协议的视频文件,可以提高播放器的泛用性。18.可选地,所述方法还可以包括:19.保存多个跳转播放指令对应的视频播放位置,以生成保存列表;20.若接收到的第一跳转播放指令对应的第一播放位置在预设范围内,基于所述保存列表中的所述视频播放位置确定所述第一播放位置。21.在上述实现过程中,通过生成保存列表的方式保存多次跳转播放指令对应的视频播放位置,在用户再次下发跳转播放指令,且该跳转播放指令对应的视频播放位置与之前跳转播放指令对应的视频播放位置相差不大时,可以从之前的视频播放位置进行读取,从而能够提高seek的效率。22.可选地,在所述基于接收到的跳转播放指令在第一索引文件中查询之前,所述方法还可以包括:23.判断所述第一索引文件和所述第二索引文件的解析状态;24.若所述解析状态表征所述第一索引文件和所述第二索引文件为未完成解析,根据播放时间获取当前帧所在的第一图像组中第一帧内编码帧的位置;25.将所述第一帧内编码帧的时间戳与所述当前帧的时间戳进行比较,确定所述目标播放位置。26.在上述实现过程中,可以在索引文件解析失败时,根据预定的策略在seek指令中根据时间获取当前帧所在图像组的帧内编码帧的文件位置,最后在此图像组内和当前时间戳进行比较,读取得到用户跳转播放的位置,从而可以保持seek操作的稳定性。27.第二方面,本技术实施例提供一种视频播放装置,可以包括:28.第一确定模块,用于响应于跳转播放指令,确定所述跳转播放指令指示的播放位置所在的播放时间段,基于第一索引文件确定与所述播放时间段对应的多个图像组;其中,所述第一索引文件中记录有预设时间范围内多个所述图像组对应的索引;29.第二确定模块,用于基于第二索引文件在所述多个图像组中确定目标图像组;其中,所述第二索引文件中记录有多个所述图像组的视频信息,所述视频信息至少包括帧内编码帧的时间戳;30.读取模块,用于读取所述目标图像组,基于所述帧内编码帧的时间戳确定所述目标图像组中的目标播放位置,以从所述目标播放位置播放视频。31.在上述实现过程中,可以通过自建索引的方式,基于建立的第一索引文件和第二索引文件组成多级索引,在接收到用户的跳转播放指令时,确定跳转播放指令指示的播放位置处于视频的哪个播放时间段,并基于第一索引文件查询得到该播放时间段中所有的图像组,再基于第二索引文件从上述图像组中确定目标图像组,从而通过多级索引查询到对应的播放文件以及该播放文件的播放位置。可以降低文件读取量,节省计算资源,提高seek过程的效率和准确度,从而能够解决目前seek过程存在卡顿的问题。32.可选地,视频播放装置还可以包括:33.建立模块,用于在加载视频文件时,建立所述视频文件的多级索引文件;其中,所述多级索引文件包括所述第一索引文件和所述第二索引文件。34.可选地,视频播放装置还可以包括:35.查询模块,用于基于预设接口查询所述目标图像组的文件位置;所述预设接口配置为根据所述帧内编码帧的时间戳提供所述目标图像组的文件位置。36.可选地,读取模块可具体用于:37.基于自定义io读取所述目标图像组的视频文件,以确定所述目标播放位置。38.可选地,视频播放装置还可以包括:39.保持模块,用于保存多个跳转播放指令对应的视频播放位置,以生成保存列表,以及若接收到的第一跳转播放指令对应的第一播放位置在预设范围内,基于所述保存列表中的所述视频播放位置确定所述第一播放位置。40.可选地,视频播放装置还可以包括:41.判断模块,用于判断所述第一索引文件和所述第二索引文件的解析状态。42.第二读取模块,用于若所述解析状态表征所述第一索引文件和所述第二索引文件为未完成解析,根据播放时间获取当前帧所在的第一图像组中第一帧内编码帧的位置;将所述第一帧内编码帧的时间戳与所述当前帧的时间戳进行比较,确定所述目标播放位置。43.第三方面,本技术实施例提供一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行上述任一实现方式中的步骤。44.第四方面,本技术实施例提供一种计算机可读存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述任一实现方式中的步骤。45.综上,本技术实施例提供了一种视频播放方法,可以通过自建索引的方式,基于建立的第一索引文件和第二索引文件组成多级索引,在接收到用户的跳转播放指令时,确定跳转播放指令指示的播放位置处于视频的哪个播放时间段,并基于第一索引文件查询得到该播放时间段中所有的图像组,再基于第二索引文件从上述图像组中确定目标图像组,从而通过多级索引查询到对应的播放文件以及该播放文件的播放位置。可以降低文件读取量,节省计算资源,提高seek过程的效率和准确度,从而能够解决目前seek过程存在卡顿的问题。附图说明46.图1为本技术实施例提供的视频播放方法的步骤示意图。47.图2为本技术实施例提供的另一种视频播放实现方式的步骤示意图。48.图3为本技术实施例提供的视频播放装置的示意图。具体实施方式49.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。50.申请人在研究的过程中发现,使用开发出的播放器播放一些封装格式的视频文件进行seek时会存在卡顿,而将视频文件转封装为其他封装格式并进行播放后,seek的过程变流畅了,经过对封装格式的比对后,确定某些封装格式的视频文件中没有时间戳和数据包位置的对应关系,因此对于开发出的播放器而言,给定seek的时间戳,首先应该根据视频文件的码率估算得到一个位置,然后获取该位置的数据包的时间戳,若数据包的时间戳《给定seek的时间戳,则需要继续往后读取数据包;如果数据包的时间戳》给定seek的时间戳,则需要往前读取数据包,直至读取到给定seek的时间戳对应的数据包。其中读取的过程则为seek卡顿的原因。51.有基于此,本技术实施例提供一种视频播放方法,通过在加载视频文件时基于自建索引的方式实现seek,从而提高seek效率,以解决现有技术中seek过程存在卡顿的问题。52.本技术实施例中提供的视频播放方法可以应用于终端设备,该终端设备可以是具有联网功能的电子设备,可以包括工程设备的配置器、手机、平板电脑、计算机、个人数字助理等。用户在使用上述终端设备播放视频时,可基于以下提供的视频播放方法进行视频播放。53.请参看图1,图1为本技术实施例提供的视频播放方法的步骤示意图。视频播放的步骤可以包括:54.在步骤s11中,响应于跳转播放指令,确定所述跳转播放指令指示的播放位置所在的播放时间段,基于第一索引文件确定与所述播放时间段对应的多个图像组。55.其中,所述第一索引文件中记录有预设时间范围内多个所述图像组对应的索引,即视频的某个时间段中存在的多个图像组。跳转播放指令即为seek指令,表征用户想要跳过视频中间的某些片段,直接从某个时间点开始播放视频。图像组(groupofpicture,gop)是一个编码视频流中的一组连续的画面,指两个立即刷新(instantaneousdecodingrefresh,idr)帧之间的距离,两个idr帧之间形成一组图片,每一个编码的视频流都由连续的gop组成。一个序列的第一个图像叫做idr图像,idr图像都是i帧图像。idr帧是一个i帧,但i帧不一定是idr帧,立刻刷新的意思即为,当这个帧出现的时候,告知解码器,可以清除掉所有的参考帧,以下帧为一个全新的序列,新的gop已经开始。56.索引可以提供指向存储在文件中的数据值的指针,然后根据指定的排序顺序对这些指针进行排序。可以使用索引找到特定值,然后顺指针找到包含该值的位置,在本技术实施例中,可以基于索引确定某个播放时间段中存在哪些gop。57.在步骤s12中,基于第二索引文件在所述多个图像组中确定目标图像组。58.其中,所述第二索引文件中记录有多个所述图像组的视频信息,所述视频信息至少包括帧内编码帧的时间戳。帧内编码帧(intra-codedpicture),也即i帧,可以理解为这一帧画面的完整保留,通常是每个gop中的第一个帧,经过适度地压缩,可以作为随机访问的参考点。视频信息还可以包括视频的位置信息,gop大小等。目标图像组即为用户想要从某个时间点开始播放视频时,该时间点处于的图像组。59.确定某个时间段中存在哪些gop后,可以基于第二索引文件进行二次索引,从上述步骤中查询到的多个图像组中确定用户想要从某个时间点开始播放视频时,该时间点属于的图像组。索引时可以是遍历查询,可以是先模糊查询,确定几个图像组,再对几个图像组进行遍历查询,还可以是先模糊查询,再二分查询,从而在多个图像组中确定目标图像组。60.在步骤s13中,读取所述目标图像组,基于所述帧内编码帧的时间戳确定所述目标图像组中的目标播放位置,以从所述目标播放位置播放视频。61.在确定目标图像组后,根据目标图像组中i帧的时间戳和跳转播放指令给定的时间戳计算目标播放位置对应的一帧图像为目标图像组中的哪一帧图像,在读取目标图像组的文件时,可以通过将文件读写指针移动到该帧图像的文件位置,以从该帧图像进行解码播放,从而执行完成跳转播放指令。62.由此可见,本技术实施例可以通过自建索引的方式,基于建立的第一索引文件和第二索引文件组成多级索引,在接收到用户的跳转播放指令时,确定跳转播放指令指示的播放位置处于视频的哪个播放时间段,并基于第一索引文件查询得到该播放时间段中所有的图像组,再基于第二索引文件从上述图像组中确定目标图像组,从而通过多级索引查询到对应的播放文件以及该播放文件的播放位置。可以降低文件读取量,节省计算资源,提高seek过程的效率和准确度,从而能够解决目前seek过程存在卡顿的问题。63.在一可选的实施例中,在步骤s11之前,本技术实施例提供的方法还可以包括如下步骤:64.在加载视频文件时,建立所述视频文件的多级索引文件;其中,所述多级索引文件包括所述第一索引文件和所述第二索引文件。65.其中,索引文件可以基于直接创建索引,如,createuniqueindex《索引的名字》ontablename,使用修改表,如altertabletablenameaddunique[索引的名字],或创建表的时候指定索引,如,createtabletablename([...],unique[索引的名字])等方式进行创建。[0066]由此可见,本技术实施例可以通过自建索引的方式,基于建立的第一索引文件和第二索引文件组成多级索引,通过多级索引查询到播放文件以及该播放文件的播放位置。可以降低文件读取量,节省计算资源,提高seek过程的效率和准确度。[0067]在一可选的实施例中,在步骤s13之前,本技术实施例提供的方法还可以包括:[0068]基于预设接口查询所述目标图像组的文件位置。[0069]其中,所述预设接口配置为根据所述帧内编码帧的时间戳提供所述目标图像组的文件位置,也即根据i帧的时间戳提供获取目标图像组文件的路径。[0070]获取文件路径的接口可以是request.getservletcontext().getrealpath(),也可以根据终端设备的系统选择对应的接口。[0071]由此可见,本技术实施例通过配置预设接口的方式,根据i帧的时间戳获取目标图像组文件的路径,可以提高获取文件位置的效率,从而提高seek效率,避免seek过程中存在的卡顿。[0072]可选地,在步骤s13中读取目标图像组的方式可以是:[0073]基于自定义io读取所述目标图像组的视频文件,以确定所述目标播放位置。[0074]在本技术实施例中,用于播放视频文件的播放器可以是基于ffmpeg开发的播放器,ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。播放的视频文件可以是ts流文件,即以ts封装格式的视频文件。[0075]由于ffmpeg只支持标准的几种输入流协议,如rtp、http、rtsp、mms等协议,而并不支持ts协议,因此不能用来直接做接收。因此可以将接收数据的步骤独立出来,将接收的数据存储至内存中,基于自定义io的方式配置ffmpeg读取内存中的数据。[0076]示例性地,可以基于avio_alloc_context和av_probe_input_buffer两个应用程序编程接口(applicationprogramminginterface,api)实现自定义io。可以由avio_alloc_context向ffmpeg传递用户自定义的read、write和seek的回调函数,即文件io操作由用户去管理。由av_probe_input_buffer探测输入数据的格式,可以由ffmpeg自动判断输入数据采用的封装容器,如本技术实施例中读取的ts文件。在解析成功后,函数会返回0,如果返回值为负数则表示无法识别格式,返回0的意义在于ts文件的数据读取完毕,准备结束读取操作。[0077]具体地,自定义io读取视频文件的步骤可以包括:创建输入流的上下文,调用avio_alloc_context函数并传递read_packet函数的地址,探测视频文件的封装格式,打开输入流,获取输入流的视频相关信息,调用ffmpeg的av_read_frame函数,从文件中分离出视频包并对视频包进行解码,从而读取完成目标图像组的视频文件。[0078]由此可见,本技术实施例可以基于自定义io读取的方式为播放器提供视频读取的支持,可以使只支持标准的输入流协议的播放器能够读取更多种协议的视频文件,可以提高播放器的泛用性。[0079]在一可选的实施例中,在步骤s13之后,本技术实施例提供的视频播放方法还可以包括以下步骤:[0080]保存多个跳转播放指令对应的视频播放位置,以生成保存列表;若接收到的第一跳转播放指令对应的第一播放位置在预设范围内,基于所述保存列表中的所述视频播放位置确定所述第一播放位置。[0081]在实际应用过程中,用户可能基于需要多次从视频中获取准确的信息,或对信息进行确认的情况,会进行多次seek操作,此时,便可以将之前多次seek对应跳转的视频播放位置保存起来,在之后用户再进行跳转播放,即下发第一跳转播放指令时,可以判断对应的第一播放位置是否处于之前视频播放位置的前后几帧,若是,则可以从之前的视频播放位置进行读取,从而确定第一播放位置对应的一帧图像为图像组中的哪一帧图像。[0082]由此可见,本技术实施例通过生成保存列表的方式保存多次跳转播放指令对应的视频播放位置,在用户再次下发跳转播放指令,且该跳转播放指令对应的视频播放位置与之前跳转播放指令对应的视频播放位置相差不大时,可以从之前的视频播放位置进行读取,从而能够提高seek的效率。[0083]在实际应用过程中,可能存在播放器加载视频时,索引文件解析失败的情况,此时,为了能够继续向用户提供seek功能,本技术实施例还提供另一种视频播放的实现方式。请参看图2,图2为本技术实施例提供的另一种视频播放实现方式的步骤示意图,该实施方式可以包括如下步骤:[0084]在步骤s21中,判断所述第一索引文件和所述第二索引文件的解析状态。[0085]在步骤s22中,若所述解析状态表征所述第一索引文件和所述第二索引文件为未完成解析,根据播放时间获取当前帧所在的第一图像组中第一帧内编码帧的位置。[0086]在步骤s23中,将所述第一帧内编码帧的时间戳与所述当前帧的时间戳进行比较,确定所述目标播放位置。[0087]其中,第一索引文件和第二索引文件的解析状态可以由解析函数返回的值确定。第一索引文件和第二索引文件未完成解析可能是解析失败,也可能是用户在下发跳转播放指令时文件读取还未完成。此时,可以根据文件的码率估算一个位置,然后获取该位置的数据包的时间戳,如果数据包的时间戳《seek的时间戳,则需要继续往后读取数据包;如果数据包的时间戳》seek的时间戳,则需要往前读取数据包,直到读到seek的时间戳对应的数据包。[0088]由此可见,本技术实施例提供的实施方式还可以在索引文件解析失败时,根据预定的策略在seek指令中根据时间获取当前帧所在图像组的帧内编码帧的文件位置,最后在此图像组内和当前时间戳进行比较,读取得到用户跳转播放的位置,从而可以保持seek操作的稳定性。[0089]在一可选的实施例中,播放的视频文件可以为ts流文件。[0090]基于同一发明构思,本技术实施例还提供一种视频播放装置30,请参看图3,图3为本技术实施例提供的视频播放装置的示意图,视频播放装置30可以包括:[0091]第一确定模块31,用于响应于跳转播放指令,确定所述跳转播放指令指示的播放位置所在的播放时间段,基于第一索引文件确定与所述播放时间段对应的多个图像组;其中,所述第一索引文件中记录有预设时间范围内多个所述图像组对应的索引。[0092]第二确定模块32,用于基于第二索引文件在所述多个图像组中确定目标图像组;其中,所述第二索引文件中记录有多个所述图像组的视频信息,所述视频信息至少包括帧内编码帧的时间戳。[0093]读取模块33,用于读取所述目标图像组,基于所述帧内编码帧的时间戳确定所述目标图像组中的目标播放位置,以从所述目标播放位置播放视频。[0094]由此可见,本技术实施例可以通过自建索引的方式,基于建立的第一索引文件和第二索引文件组成多级索引,在接收到用户的跳转播放指令时,确定跳转播放指令指示的播放位置处于视频的哪个播放时间段,并基于第一索引文件查询得到该播放时间段中所有的图像组,再基于第二索引文件从上述图像组中确定目标图像组,从而通过多级索引查询到对应的播放文件以及该播放文件的播放位置。可以降低文件读取量,节省计算资源,提高seek过程的效率和准确度,从而能够解决目前seek过程存在卡顿的问题。[0095]在一可选的实施例中,视频播放装置30还可以包括:[0096]建立模块,用于在加载视频文件时,建立所述视频文件的多级索引文件;其中,所述多级索引文件包括所述第一索引文件和所述第二索引文件。[0097]在一可选的实施例中,视频播放装置30还可以包括:[0098]查询模块,用于基于预设接口查询所述目标图像组的文件位置;所述预设接口配置为根据所述帧内编码帧的时间戳提供所述目标图像组的文件位置。[0099]在一可选的实施例中,读取模块33可具体用于:[0100]基于自定义io读取所述目标图像组的视频文件,以确定所述目标播放位置。[0101]在一可选的实施例中,视频播放装置30还可以包括:[0102]保持模块,用于保存多个跳转播放指令对应的视频播放位置,以生成保存列表,以及若接收到的第一跳转播放指令对应的第一播放位置在预设范围内,基于所述保存列表中的所述视频播放位置确定所述第一播放位置。[0103]在一可选的实施例中,视频播放装置30还可以包括:[0104]判断模块,用于判断所述第一索引文件和所述第二索引文件的解析状态。[0105]第二读取模块,用于若所述解析状态表征所述第一索引文件和所述第二索引文件为未完成解析,根据播放时间获取当前帧所在的第一图像组中第一帧内编码帧的位置;将所述第一帧内编码帧的时间戳与所述当前帧的时间戳进行比较,确定所述目标播放位置。[0106]基于同一发明构思,本技术实施例还提供一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行上述任一实现方式中的步骤。[0107]基于同一发明构思,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述任一实现方式中的步骤。[0108]所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。[0109]所述计算机可读存储介质可以是随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等各种可以存储程序代码的介质。其中,存储介质用于存储程序,所述处理器在接收到执行指令后,执行所述程序,本发明实施例任一实施例揭示的过程定义的电子终端所执行的方法可以应用于处理器中,或者由处理器实现。[0110]本技术实施例中,第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。[0111]应当理解的是,在本技术所提供的实施例中所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0112]另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0113]再者,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。[0114]可以替换的,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。[0115]在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。[0116]以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。当前第1页12当前第1页12
技术特征:
1.一种视频播放方法,其特征在于,包括:响应于跳转播放指令,确定所述跳转播放指令指示的播放位置所在的播放时间段,基于第一索引文件确定与所述播放时间段对应的多个图像组;其中,所述第一索引文件中记录有预设时间范围内多个所述图像组对应的索引;基于第二索引文件在所述多个图像组中确定目标图像组;其中,所述第二索引文件中记录有多个所述图像组的视频信息,所述视频信息至少包括帧内编码帧的时间戳;读取所述目标图像组,基于所述帧内编码帧的时间戳确定所述目标图像组中的目标播放位置,以从所述目标播放位置播放视频。2.根据权利要求1所述的方法,其特征在于,在所述响应于跳转播放指令,确定所述跳转播放指令指示的播放位置所在的播放时间段,基于第一索引文件确定与所述播放时间段对应的多个图像组之前,所述方法还包括:在加载视频文件时,建立所述视频文件的多级索引文件;其中,所述多级索引文件包括所述第一索引文件和所述第二索引文件。3.根据权利要求1所述的方法,其特征在于,在所述读取所述目标图像组之前,所述方法还包括:基于预设接口查询所述目标图像组的文件位置;所述预设接口配置为根据所述帧内编码帧的时间戳提供所述目标图像组的文件位置。4.根据权利要求1所述的方法,其特征在于,所述读取所述目标图像组包括:基于自定义io读取所述目标图像组的视频文件,以确定所述目标播放位置。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:保存多个跳转播放指令对应的视频播放位置,以生成保存列表;若接收到的第一跳转播放指令对应的第一播放位置在预设范围内,基于所述保存列表中的所述视频播放位置确定所述第一播放位置。6.根据权利要求1所述的方法,其特征在于,在所述基于第一索引文件确定与所述播放时间段对应的多个图像组之前,所述方法还包括:判断所述第一索引文件和所述第二索引文件的解析状态;若所述解析状态表征所述第一索引文件和所述第二索引文件为未完成解析,根据播放时间获取当前帧所在的第一图像组中第一帧内编码帧的位置;将所述第一帧内编码帧的时间戳与所述当前帧的时间戳进行比较,确定所述目标播放位置。7.根据权利要求2所述的方法,其特征在于,其中,所述视频文件为ts流文件。8.一种视频播放装置,其特征在于,包括:第一确定模块,用于响应于跳转播放指令,确定所述跳转播放指令指示的播放位置所在的播放时间段,基于第一索引文件确定与所述播放时间段对应的多个图像组;其中,所述第一索引文件中记录有预设时间范围内多个所述图像组对应的索引;第二确定模块,用于基于第二索引文件在所述多个图像组中确定目标图像组;其中,所述第二索引文件中记录有多个所述图像组的视频信息,所述视频信息至少包括帧内编码帧的时间戳;读取模块,用于读取所述目标图像组,基于所述帧内编码帧的时间戳确定所述目标图
像组中的目标播放位置,以从所述目标播放位置播放视频。9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行权利要求1-7中任一项所述方法中的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行权利要求1-7任一项所述方法中的步骤。

技术总结
本申请提供了一种视频播放方法、装置、电子设备及存储介质,该方法包括:响应于跳转播放指令,确定所述跳转播放指令指示的播放位置所在的播放时间段,基于第一索引文件确定与所述播放时间段对应的多个图像组;基于第二索引文件在所述多个图像组中确定目标图像组;其中,所述第二索引文件中记录有多个所述图像组的视频信息,所述视频信息至少包括帧内编码帧的时间戳;读取所述目标图像组,基于所述帧内编码帧的时间戳确定所述目标图像组中的目标播放位置,以从所述目标播放位置播放视频。可以基于自建索引的方式实现seek,从而提高seek效率,以解决现有技术中seek过程存在卡顿的问题。题。题。


技术研发人员:王金凤
受保护的技术使用者:三一重工股份有限公司
技术研发日:2023.03.13
技术公布日:2023/7/12
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐