一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于FFmpeg的HLS视频播放进度精准切换方法与流程

2022-07-23 03:49:37 来源:中国专利 TAG:

一种基于ffmpeg的hls视频播放进度精准切换方法
技术领域
1.本发明涉及计算机技术相关领域,具体为一种基于ffmpeg的hls视频播放进度精准切换方法。


背景技术:

2.在点播视频的应用领域中,mp4和hls是两种主要应用的视频格式封装协议,mp4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(iso)和国际电工委员会(iec)下属的mpeg制定;hls(http live streaming)是一个由苹果公司提出基于http的流媒体网络传输协议,其中hls协议有着使用http协议,网络兼容性好,可按切片播放,播放所需缓存小,视频时间拖动播放,可以快速定位到响应切片进行播放,响应快,整体占用小,并提供了协议内播放流切换和视频流加密功能。基于上述优点,现在市面上的点播视频已经大多采用hls协议,并且使用率还在提升中。
3.作为著名的开源播放器ffmpeg,也基本支持的hls协议视频的播放,在现有的ffmpeg播放逻辑中,对于hls视频的播放进度切换对准方式,只支持对准关键帧和直接对准任意帧,在对准关键帧的切换进度方式中,进度只能切换到指定视频进度以后最近的一个关键帧,存在切换进度不准确的问题;而在对准任意帧的切换方式中,进度的切换并不会处理非关键帧的解码,存在花屏等问题,针对上述问题,设计了一种基于ffmpeg的hls视频播放进度精准切换方法。


技术实现要素:

4.本发明的目的在于提供一种自动化塑料杯杯口卷边机,以解决上述背景技术中提出的问题。
5.为实现上述目的,本发明提供如下技术方案:一种基于ffmpeg的hls视频播放进度精准切换方法,包括hls分片ts文件的关键帧查找过程和无效的视频帧数据筛选抛弃过程,其特征在于:所述hls分片ts文件的关键帧查找过程具体包含以下步骤:
6.步骤11、由于hls协议采用ts视频文件分片方式储存整体视频,对文件进度的切换,首先需要根据用户视频切换进度操作获取目标进度时间timestamp;
7.步骤12、通过时钟基准转化函数av_rescale_rnd对步骤11中的目标进度时间timestamp进行处理,将timestamp转换为之前的第一个关键帧的视频流基准时间seek_timestamp;
8.步骤13、通过遍历整个hls视频内ts文件的方式,查找与seek_timestamp相匹配的ts文件;
9.步骤14、通过http协议读取下标为cur_seq_no的ts文件,并获取其每一帧的数据的解码时间dts;
10.步骤15、通过对比当前视频帧的dts和seek_timestamp,当dts小于seek_timestamp,并且当前帧为关键帧,则获取seek_timestamp之前首个关键帧时间accurate_
seek_timestamp返回给上层调用方法,作为读取数据的起点位置;
11.所述无效的视频帧数据筛选抛弃过程具体包含以下步骤:
12.步骤21、从步骤15获取的关键帧时间accurate_seek_timestamp,且读取相应ts文件未解密视频数据并解码;
13.步骤22、获取步骤21中已解码的数据,通过对比步骤11中的timestamp与当前已解码的视频帧数据的显示时间pts;
14.步骤23、一直执行步骤22直到视频帧的pts大于或等于timestamp,判断为进度精确切换所需显示的首帧数据,给到上层方法做渲染播放,整个hls视频播放进度精确切换方法结束。
15.优选的,所述步骤12中的时钟基准转化函数av_rescale_rnd具体计算公式为:
16.seek_timestamp=timestamp
×
av_time_base
÷
time_base.den。
17.优选的,所述步骤13中与seek_timestamp相匹配的条件为:播放时间duration与seek_timestamp相减大于0的首个ts文件,即为相匹配的ts文件,并记录其遍历的下标为cur_seq_no
18.优选的,所述步骤22中当pts小于timestamp,判断为无效的视频帧数据,放弃不作显示播放所用,并读取一帧数据
19.与现有技术相比,本发明的有益效果是:
20.1.通过本发明方法,可以解决原有ffmpeg项目中播放hls格式视频切换进度因只能定位到关键帧位置,出现进度切换不准确的问题,可以明显改善因切换进度不准确造成的用户体验问题和视频播放进度条显示问题。
21.2.通过本发明方法,改善使用ffmpeg项目播放hls视频流程中的痛点,提高hls视频的实用性,有利于更广泛推广hls视频协议使用。
附图说明
22.图1为本发明的工作流程示意图;
23.图2为本发明的视频帧的dts和seek_timestamp对比原理图;
24.图3为本发明的timestamp与已解码的视频帧数据的显示时间pts对比原理图。
具体实施方式
25.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
26.请参阅图1-3,本发明提供一种技术方案:一种基于ffmpeg的hls视频播放进度精准切换方法,包括hls分片ts文件的关键帧查找过程和无效的视频帧数据筛选抛弃过程,其特征在于:所述hls分片ts文件的关键帧查找过程具体包含以下步骤:
27.步骤11、由于hls协议采用ts视频文件分片方式储存整体视频,对文件进度的切换,首先需要根据用户视频切换进度操作获取目标进度时间timestamp;
28.步骤12、通过时钟基准转化函数av_rescale_rnd对步骤11中的目标进度时间
timestamp进行处理,将timestamp转换为之前的第一个关键帧的视频流基准时间seek_timestamp;
29.步骤13、通过遍历整个hls视频内ts文件的方式,查找与seek_timestamp相匹配的ts文件;
30.步骤14、通过http协议读取下标为cur_seq_no的ts文件,并获取其每一帧的数据的解码时间dts;
31.步骤15、通过对比当前视频帧的dts和seek_timestamp,当dts小于seek_timestamp,并且当前帧为关键帧,则获取seek_timestamp之前首个关键帧时间accurate_seek_timestamp返回给上层调用方法,作为读取数据的起点位置;
32.所述无效的视频帧数据筛选抛弃过程具体包含以下步骤:
33.步骤21、从步骤15获取的关键帧时间accurate_seek_timestamp,且读取相应ts文件未解密视频数据并解码;
34.步骤22、获取步骤21中已解码的数据,通过对比步骤11中的timestamp与当前已解码的视频帧数据的显示时间pts;
35.步骤23、一直执行步骤22直到视频帧的pts大于或等于timestamp,判断为进度精确切换所需显示的首帧数据,给到上层方法做渲染播放,整个hls视频播放进度精确切换方法结束。
36.进一步的,步骤12中的时钟基准转化函数av_rescale_rnd具体计算公式为:
37.seek_timestamp=timestamp
×
av_time_base
÷
time_base.den。
38.进一步的,步骤13中与seek_timestamp相匹配的条件为:播放时间duration与seek_timestamp相减大于0的首个ts文件,即为相匹配的ts文件,并记录其遍历的下标为cur_seq_no。
39.进一步的,步骤22中当pts小于timestamp,判断为无效的视频帧数据,放弃不作显示播放所用,并读取一帧数据。
40.通过本发明方法,可以解决原有ffmpeg项目中播放hls格式视频切换进度因只能定位到关键帧位置,出现进度切换不准确的问题,可以明显改善因切换进度不准确造成的用户体验问题和视频播放进度条显示问题;通过本发明方法,改善使用ffmpeg项目播放hls视频流程中的痛点,提高hls视频的实用性,有利于更广泛推广hls视频协议使用。
41.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献