一种视频播放方法及电子设备技术

技术编号:19328176 阅读:40 留言:0更新日期:2018-11-03 15:02
本公开提供了一种视频播放方法及电子设备,用于从视频中任意一时间点开始播放,方法包括:获取播放视频的时间点;对视频中的视频数据包进行解码,判断解码后的视频数据所对应的时间戳是否大于等于时间点,若是,则将该视频数据加入到视频队列中;对视频中的音频数据包进行解码,判断解码后的音频数据所对应的时间戳是否大于等于时间点,若是,则将该音频数据加入到音频队列中;按照时间顺序对视频队列和音频队列中的数据进行同步播放。本公开能够在时间上准确地从视频中任意一时间点开始播放,解决了现有技术出现的播放进度条回退的问题。

Video playing method and electronic device

The present disclosure provides a video playback method and an electronic device for playback from any time point in the video, including acquiring the time point at which the video is played; decoding the video data packet in the video to determine whether the corresponding time stamp of the decoded video data is greater than or equal to the time point; and if so, Add the video data to the video queue; decode the audio data packet in the video to determine whether the corresponding timestamp of the decoded audio data is greater than or equal to the time point; if so, add the audio data to the audio queue; according to the time sequence, the data in the video queue and the audio queue are the same. Step play. The present disclosure can accurately start playing from any time point in the video in time, and solves the problem of playback progress bar regression in the prior art.

【技术实现步骤摘要】
一种视频播放方法及电子设备
本公开涉及一种视频播放方法及电子设备,用于从视频中任意一时间点开始播放。
技术介绍
用户在观看视频时,可能不会地对视频进行从头播放,而是对视频进行点播,例如,用户拖拽播放界面中的时间轴,以在特定的时间点进行播放。然而,目前在对视频进行点播(例如在WEB页面、iOS移动端、安卓移动端进行点播)时,会出现这种情况:如果将视频定位到第5秒中的时候,定位结束后,视频从第0秒的时间开始播放;当定位到第9秒的时候,视频仍然从第0秒开始播放;当定位到第10秒的时候,视频则正常从第10秒开始播放;而当定位到19秒时,仍然从第10秒开始播放,从而会产生一种播放进度回退的现象(用户点击到具体时间点时,播发进度条定位到该点,播放器内部完成时间定位,开始播放时的时间点却小于用户点击的时间点,播放器进度条再次定位到开始播放的位置,从而出现进度条回退的现象)。出现上述情况的原因是,对视频(例如,H264视频)进行时间定位时,播放器内部都会将该视频定位到与指定的定位时间最近的一个关键帧图像上。假设用户进行时间定位时的时间是seekTime(以毫秒为单位),播放器内部完成时间定位后,所解码出来的第一帧图像的时间是firstVideoTime(以毫秒为单位)。当播放器内部进行时间定位时,如果该seekTime时间所对应的H264图像帧,正好是一个关键帧,那么定位完成后,firstVideoTime是等于seekTime的,那么定位完成后开始播放的时间与用户指定的时间是吻合的。而当seekTime时间所对应的H264图像帧,不是一个关键帧时,播放器会向前(小于seekTime方向)找到一个与seekTime最近的关键帧,假设该关键帧的时间戳为keyFrameTime,这样解码出来的第一帧视频时间firstVideoTime必定等于keyFrameTime,但是小于seekTime。二者之间的差值seekTime–keyFrameTime越大,视频播放进度条回退的现象就越明显。
技术实现思路
本公开鉴于上述问题,提供一种视频播放方法及电子设备,能够精准地进行视频点播,即在时间上准确地从视频中任意一时间点开始播放。本公开的一个方面提供了一种视频播放方法,用于从视频中任意一时间点开始播放,方法包括:获取播放所述视频的时间点;对所述视频中的视频数据包进行解码,判断解码后的视频数据所对应的时间戳是否大于等于所述时间点,若是,则将该视频数据加入到视频队列中;对所述视频中的音频数据包进行解码,判断解码后的音频数据所对应的时间戳是否大于等于所述时间点,若是,则将该音频数据加入到音频队列中;按照时间顺序对所述视频队列和音频队列中的数据进行同步播放。可选地,方法还包括:对时间戳小于所述时间点的视频数据和音频数据进行删除。可选地,获取播放所述视频的时间点之后,还包括:获取所述视频中的数据包;判断所述数据包为视频数据包或音频数据包;若所述数据包为视频数据包,则将该视频数据包加入到视频数据包队列中,若所述数据包为音频数据包,则将该音频数据包加入到音频数据包队列中。可选地,对所述视频中的视频数据包进行解码,包括:获取所述视频数据包队列中的第一个视频数据包;将该视频数据包从所述视频数据包队列中移除;对获取的视频数据包进行解码。可选地,对所述视频中的音频数据包进行解码,包括:获取所述音频数据包队列中的第一个音频数据包;将该音频数据包从所述音频数据包队列中移除;对获取的音频数据包进行解码。本公开另一方面提供了一种电子设备,包括:显示器,用于显示播放的视频;处理器;存储器,其存储有计算机可执行程序,该程序在被所述处理器执行时,使得所述处理器执行:获取播放所述视频的时间点;对所述视频中的视频数据包进行解码,判断解码后的视频数据所对应的时间戳是否大于等于所述时间点,若是,则将该视频数据加入到视频队列中;对所述视频中的音频数据包进行解码,判断解码后的音频数据所对应的时间戳是否大于等于所述时间点,若是,则将该音频数据加入到音频队列中;按照时间顺序对所述视频队列和音频队列中的数据进行同步播放。可选地,处理器还执行:对时间戳小于所述时间点的视频数据和音频数据进行删除。可选地,所述处理器执行获取播放所述视频的时间点之后,还执行:获取所述视频中的数据包;判断所述数据包为视频数据包或音频数据包;若所述数据包为视频数据包,则将该视频数据包加入到视频数据包队列中,若所述数据包为音频数据包,则将该音频数据包加入到音频数据包队列中。可选地,所述处理器对所述视频中的视频数据包进行解码,包括:获取所述视频数据包队列中的第一个视频数据包;将该视频数据包从所述视频数据包队列中移除;对获取的视频数据包进行解码。可选地,所述处理器对所述视频中的音频数据包进行解码,包括:获取所述音频数据包队列中的第一个音频数据包;将该音频数据包从所述音频数据包队列中移除;对获取的音频数据包进行解码。附图说明为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:图1示意性示出了本公开实施例提供的视频播放方法流程图。图2示意性示出了根据本公开的电子设备的框图。具体实施方式根据结合附图对本公开示例性实施例的以下详细描述,本公开的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制公开的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。图1示意性示出了本公开实施例提供的视频播放方法流程图。如图1所述,视频播放方法包括如下操作:S1,获取播放视频的时间点。在上述步骤中,时间点的选择可以来自用户操作,例如,用户在观看视频时,手动拖拽视频界面中的时间轴,以欲从用户想要的时间点进行播放视频。具体从系统内部的获取方式来看,系统一般具有音视频解码模块,例如在PC客户端中一般具有MediaDecoder模块作为音视频解码模块。其中,MediaDecoder模块中包括有一个seek方法,当用户点击播放器播放进度条进行时间定位时,会调用到该seek方法,该方法接收一个以毫秒事件为单位的时间值,标记为seekTime,然后调用av_seek_frame函数,对该视频进行时间定位。其中,av_seek_frame函数所需要的时间单位是微秒时间,所以需要将seekTime乘以1000传递到该函数的相应参数中,并将最后一个参数设置为AVSEEK_FLAG_BACKWARD。av_seek_frame函数返回后,判断其返回值是否等于0,如果等于0,则认为时间点获取成功,否则,本次时间点获取失败。S2,初始化视频解码器和音频解码器。在上述操作中,需要将当前的视频解码器以及音频解码器中的数据恢复到初始状态,本公开中以本文档来自技高网
...

【技术保护点】
1.一种视频播放方法,用于从视频中任意一时间点开始播放,方法包括:获取播放所述视频的时间点;对所述视频中的视频数据包进行解码,判断解码后的视频数据所对应的时间戳是否大于等于所述时间点,若是,则将该视频数据加入到视频队列中;对所述视频中的音频数据包进行解码,判断解码后的音频数据所对应的时间戳是否大于等于所述时间点,若是,则将该音频数据加入到音频队列中;按照时间顺序对所述视频队列和音频队列中的数据进行同步播放。

【技术特征摘要】
1.一种视频播放方法,用于从视频中任意一时间点开始播放,方法包括:获取播放所述视频的时间点;对所述视频中的视频数据包进行解码,判断解码后的视频数据所对应的时间戳是否大于等于所述时间点,若是,则将该视频数据加入到视频队列中;对所述视频中的音频数据包进行解码,判断解码后的音频数据所对应的时间戳是否大于等于所述时间点,若是,则将该音频数据加入到音频队列中;按照时间顺序对所述视频队列和音频队列中的数据进行同步播放。2.根据权利要求1所述的视频播放方法,还包括:对时间戳小于所述时间点的视频数据和音频数据进行删除。3.根据权利要求1所述的视频播放方法,其中,获取播放所述视频的时间点之后,还包括:获取所述视频中的数据包;判断所述数据包为视频数据包或音频数据包;若所述数据包为视频数据包,则将该视频数据包加入到视频数据包队列中,若所述数据包为音频数据包,则将该音频数据包加入到音频数据包队列中。4.根据权利要求3所述的视频播放方法,其中,对所述视频中的视频数据包进行解码,包括:获取所述视频数据包队列中的第一个视频数据包;将该视频数据包从所述视频数据包队列中移除;对获取的视频数据包进行解码。5.根据权利要求3所述的视频播放方法,其中,对所述视频中的音频数据包进行解码,包括:获取所述音频数据包队列中的第一个音频数据包;将该音频数据包从所述音频数据包队列中移除;对获取的音频数据包进行解码。6.一种电子设备,包括:显示器,用于显示播放...

【专利技术属性】
技术研发人员:杨亮陈少杰张文明
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

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

1