CN106101867B - 一种提高flv视频跳播速度和定位精确性的方法 - Google Patents
一种提高flv视频跳播速度和定位精确性的方法 Download PDFInfo
- Publication number
- CN106101867B CN106101867B CN201610572891.7A CN201610572891A CN106101867B CN 106101867 B CN106101867 B CN 106101867B CN 201610572891 A CN201610572891 A CN 201610572891A CN 106101867 B CN106101867 B CN 106101867B
- Authority
- CN
- China
- Prior art keywords
- key frame
- timestamp
- jump
- video
- time point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content authoring involving timestamps for synchronizing content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2387—Stream processing in response to a playback request from an end-user, e.g. for trick-play
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8455—Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Television Signal Processing For Recording (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种提高FLV视频跳播速度和定位精确性的方法,包括步骤:建立FLV视频关键帧索引表;获取跳播时间点;将跳播时间点与FLV视频关键帧索引表中的时间戳依次进行比较,如果有相符者,则根据拥有时间戳的关键帧的视频文件位置对关键帧进行定位并重新开始播放;如果没有找到与跳播时间点相符的时间戳,计算关键帧间隔最大值,在FLV视频关键帧索引表中寻找两个相邻的关键帧,计算两个相邻的关键帧各自的时间戳与跳播时间点的差值,如果差值中一个为正数,一个为负数,确定与较小的差值的绝对值对应的时间戳,如果时间戳与跳播时间点的差值小于关键帧间隔最大值,则根据拥有该时间戳的关键帧的视频文件位置对该关键帧进行定位并重新开始播放。
Description
技术领域
本发明涉及视频播放技术领域,具体涉及一种提高FLV视频跳播速度和定位精确性的方法。
背景技术
现有技术在处理FLV视频跳播时主要有两种视频帧位置定位方法,一种是在开始播放前解析头信息时把视频中所有关键帧搜集起来建立关键帧索引表,这种方式在处理大视频文件时,启动播放的时间过长;另一种方法是根据跳播时间、文件大小和视频总时长计算出视频帧位置,再依据计算出来的值跳到该关键帧附近位置,这种方式无法对跳播位置对应的关键帧进行精确定位。关键帧是一幅具有一帧完整画面的视频帧,在解码的时候可用于其他帧(P帧、B帧)的参考。
发明内容
本发明要解决的技术问题在于,针对现有技术的不足,提供一种提高FLV视频跳播速度和定位精确性的方法,克服现有技术处理跳播的方法造成播放启动时间过长、跳播定位不精确的缺陷。
本发明为解决上述技术问题所采用的技术方案为:
一种提高FLV视频跳播速度和定位精确性的方法,包括步骤:
A1、建立一数据结构,用于存储FLV视频关键帧索引表,所述FLV视频关键帧索引表的内容包括同一关键帧的时间戳和视频文件位置;
A2、FLV视频播放过程中需要跳播时,获取跳播时间点;
A3、将所述跳播时间点与所述FLV视频关键帧索引表中的时间戳依次进行比较,如果有相符者,则根据拥有该时间戳的关键帧的视频文件位置对该关键帧进行定位并重新开始播放;
A4、如果没有找到与所述跳播时间点相符的时间戳,则执行步骤A5;
A5、计算关键帧间隔最大值,在所述FLV视频关键帧索引表中寻找两个相邻的关键帧,计算所述两个相邻的关键帧各自的时间戳与所述跳播时间点的差值,如果所述差值中一个为正数,一个为负数,确定与较小的所述差值的绝对值对应的所述时间戳,如果所述时间戳与所述跳播时间点的差值小于所述关键帧间隔最大值,则根据拥有该时间戳的关键帧的视频文件位置对该关键帧进行定位并重新开始播放。
根据本发明的实施例,还包括步骤A6:如果所述FLV视频关键帧索引表为空表或者在步骤A3、步骤A5中没有找到相应的关键帧,则在所述视频文件中确定一个起始搜寻位置并读取所述起始搜寻位置附近一定数量的关键帧的时间戳,计算所述时间戳与所述跳播时间点的差值的绝对值,并从最小的所述绝对值对应的关键帧开始重新播放。
根据本发明的实施例,根据跳播时间*视频容量字节数/视频总时长的计算结果来确定所述起始搜寻位置。
根据本发明的实施例,还包括步骤A7:将搜索出的关键帧的时间戳和视频文件位置保存到所述FLV视频关键帧索引表中。
实施本发明的技术方案,具有以下有益效果:采用本发明的技术方案可以快速启动播放,快速定位跳播位置,在跳播过程中分析关键帧,并建立关键帧索引表,每次跳播都会把相应的关键帧信息添加到关键帧索引表中,这样如果下次跳播的位置在关键帧索引表里有记录,可以直接根据关键帧索引表的时间戳来快速定位到跳播位置,本发明由此提高了FLV视频跳播速度和定位精确性。
附图说明
下面通过参考附图并结合实例具体地描述本发明,本发明的优点和实现方式将会更加明显,其中附图所示内容仅用于对本发明的解释说明,而不构成对本发明的任何意义上的限制,在附图中:
图1为本发明流程图。
具体实施方式
如图1所示,建立一个双向链表数据结构,用于存储关键帧索引表:
KeyframeTab:即关键帧索引表,里面记录着关键帧时间戳和对应的位置,按关键帧时间戳从小到大顺序排列。关键帧是具有一帧完整的画面,在解码的时候可用于其他帧(P帧、B帧)的参考。
(1)在开始播放视频时先初始化索引表KeyframeTab,如果播放的视频头信息里面携带有关键帧索引表,用这部分数据填充KeyframeTab。
(2)用户在正常播放的时候,关键帧索引表不会使用到,播放完时销毁初始化时建立的关键帧索引表。
(3)当用户进行跳播时,先检查KeyframeTab链表里是否有关键帧结点,结点不为空说明关键帧索引表中已经存在关键帧,并计算关键帧间隔最大值(关键帧间隔最大值=20*1000/帧率)。
(4)如果KeyframeTab链表中已经存在一部分关键帧,先和跳播时间点进行匹配,匹配分三种情况:
第一种,KeyframeTab链表中找到关键帧时间戳和跳播时间点相等的关键帧结点,从结点中获取关键帧位置,并跳到该关键帧位置,转入步骤(6)结束跳播;
第二种,KeyframeTab链表中找到关键帧时间戳与跳播时间点绝对值在关键帧最大间隔值以内,如果该关键帧时间戳比跳播时间点大,与上一个关键帧结点是相邻的(prv->continuity等于1),并且上一个关键帧结点中时间戳比跳播时间点小,在这两个结点中选择与跳播时间最接近(跳播时间点和关键帧时间戳差值最小)的关键帧,跳到该关键帧位置keyframePos,再转入步骤(6)结束跳播。
第三种,KeyframeTab链表中找到关键帧时间戳与跳播时间点绝对值在关键帧最大间隔值以内,如果该关键帧时间戳比跳播时间点小,与下一个关键帧结点是相邻的(当前结点continuity等于1),并且下一个关键帧结点中时间戳比跳播时间点大,在这两个结点中选择与跳播时间最接近(跳播时间点和关键帧时间戳差值最小)的关键帧,跳到该关键帧位置keyframePos,再转入步骤(6)结束跳播。
(5)如果KeyframeTab链表不存在关键帧或者步骤(4)中在KeyframeTab链表中没有匹配到关键帧,则进入逐个关键帧帧搜索:
A)根据跳播时间、文件大小和视频总时长计算出关键帧搜索的起始搜寻位置(起始搜寻位置=跳播时间*视频容量字节数/视频总时长),并跳到该起始搜寻位置。
B)在该起始搜寻位置附近逐帧搜索关键帧,获取搜索过的关键帧时间戳,并与跳播时间比较,选择差值最小的关键帧,然后跳到该关键帧位置。
C)把搜索过的关键帧按时间戳从小到大保存到KeyframeTab链表中。因为是逐帧搜索,所以搜索过的关键帧都是相邻的(continuity置1),但搜索过的最后一个关键帧(这个关键帧后面没有关键帧了)除外。
(6)根据确定的关键帧的视频文件位置对视频文件中的关键帧进行定位并重新开始播放。
本领域技术人员不脱离本发明的实质和精神,可以有多种变形方案实现本发明,以上所述仅为本发明较佳可行的实施例而已,并非因此局限本发明的权利范围,凡运用本发明说明书及附图内容所作的等效结构变化,均包含于本发明的权利范围之内。
Claims (3)
1.一种提高FLV视频跳播速度和定位精确性的方法,其特征在于,包括步骤:
A1、建立一数据结构,用于存储FLV视频关键帧索引表,所述FLV视频关键帧索引表的内容包括同一关键帧的时间戳和视频文件位置;
A2、FLV视频播放过程中需要跳播时,获取跳播时间点;
A3、将所述跳播时间点与所述FLV视频关键帧索引表中的时间戳依次进行比较,如果有相符者,则根据拥有该时间戳的关键帧的视频文件位置对该关键帧进行定位并重新开始播放;
A4、如果没有找到与所述跳播时间点相符的时间戳,则执行步骤A5;
A5、计算关键帧间隔最大值,在所述FLV视频关键帧索引表中寻找两个相邻的关键帧,计算所述两个相邻的关键帧各自的时间戳与所述跳播时间点的差值,如果所述差值中一个为正数,一个为负数,确定与较小的所述差值的绝对值对应的所述时间戳,如果所述时间戳与所述跳播时间点的差值小于所述关键帧间隔最大值,则根据拥有该时间戳的关键帧的视频文件位置对该关键帧进行定位并重新开始播放;
A6、如果所述FLV视频关键帧索引表为空表或者在步骤A3、步骤A5中没有找到相应的关键帧,则在所述视频文件中确定一个起始搜寻位置并读取所述起始搜寻位置附近一定数量的关键帧的时间戳,计算所述时间戳与所述跳播时间点的差值的绝对值,并从最小的所述绝对值对应的关键帧开始重新播放。
2.根据权利要求1所述的提高FLV视频跳播速度和定位精确性的方法,其特征在于:根据跳播时间*视频容量字节数/视频总时长的计算结果来确定所述起始搜寻位置。
3.根据权利要求2所述的提高FLV视频跳播速度和定位精确性的方法,其特征在于,还包括步骤A7:将搜索出的关键帧的时间戳和视频文件位置保存到所述FLV视频关键帧索引表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610572891.7A CN106101867B (zh) | 2016-07-20 | 2016-07-20 | 一种提高flv视频跳播速度和定位精确性的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610572891.7A CN106101867B (zh) | 2016-07-20 | 2016-07-20 | 一种提高flv视频跳播速度和定位精确性的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106101867A CN106101867A (zh) | 2016-11-09 |
CN106101867B true CN106101867B (zh) | 2019-01-22 |
Family
ID=57220901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610572891.7A Active CN106101867B (zh) | 2016-07-20 | 2016-07-20 | 一种提高flv视频跳播速度和定位精确性的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106101867B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108184137A (zh) * | 2017-12-29 | 2018-06-19 | 北京奇虎科技有限公司 | 一种流媒体flv文件的定位播放方法和装置 |
CN110460790A (zh) * | 2018-05-02 | 2019-11-15 | 北京视联动力国际信息技术有限公司 | 一种视频帧的抽取方法和装置 |
CN109862423B (zh) * | 2019-01-03 | 2021-06-22 | 珠海亿智电子科技有限公司 | 一种视频seek方法、装置、终端及计算机可读存储介质 |
CN112437346A (zh) * | 2020-11-04 | 2021-03-02 | 央视国际网络无锡有限公司 | 一种判断视频文件是否完整的方法 |
CN113726778A (zh) * | 2021-08-30 | 2021-11-30 | 咪咕视讯科技有限公司 | 流媒体seek方法、装置、计算设备及计算机存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1274086A2 (en) * | 2001-05-30 | 2003-01-08 | Nokia Corporation | System and method for jumping to a time point in an MPEG file |
CN101076111A (zh) * | 2006-11-15 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 一种获取视频流中关键帧段定位信息的方法 |
CN101106637A (zh) * | 2006-07-13 | 2008-01-16 | 中兴通讯股份有限公司 | 通过机顶盒实现对外接存储设备的媒体文件播放的方法 |
CN101287107A (zh) * | 2008-05-29 | 2008-10-15 | 腾讯科技(深圳)有限公司 | 媒体文件的点播方法、系统和设备 |
CN101841692A (zh) * | 2010-04-23 | 2010-09-22 | 深圳市茁壮网络股份有限公司 | 视频流快进快退的方法 |
CN103024561A (zh) * | 2011-09-28 | 2013-04-03 | 深圳市快播科技有限公司 | 一种拖拽进度条的显示方法及装置 |
-
2016
- 2016-07-20 CN CN201610572891.7A patent/CN106101867B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1274086A2 (en) * | 2001-05-30 | 2003-01-08 | Nokia Corporation | System and method for jumping to a time point in an MPEG file |
CN101106637A (zh) * | 2006-07-13 | 2008-01-16 | 中兴通讯股份有限公司 | 通过机顶盒实现对外接存储设备的媒体文件播放的方法 |
CN101076111A (zh) * | 2006-11-15 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 一种获取视频流中关键帧段定位信息的方法 |
CN101287107A (zh) * | 2008-05-29 | 2008-10-15 | 腾讯科技(深圳)有限公司 | 媒体文件的点播方法、系统和设备 |
CN101841692A (zh) * | 2010-04-23 | 2010-09-22 | 深圳市茁壮网络股份有限公司 | 视频流快进快退的方法 |
CN103024561A (zh) * | 2011-09-28 | 2013-04-03 | 深圳市快播科技有限公司 | 一种拖拽进度条的显示方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106101867A (zh) | 2016-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106101867B (zh) | 一种提高flv视频跳播速度和定位精确性的方法 | |
US7941031B2 (en) | Video processing apparatus, IC circuit for video processing apparatus, video processing method, and video processing program | |
WO2019109643A1 (zh) | 视频推荐方法、装置、计算机设备和存储介质 | |
US7853865B2 (en) | Synchronization of video and data | |
JP5096917B2 (ja) | ストリームデータ記録装置、ストリームデータ再生装置、集積回路、ストリームデータ記録方法、及びストリームデータ再生方法 | |
CN104869439B (zh) | 一种视频推送方法及装置 | |
US20150003739A1 (en) | Advertisement detection system and method based on fingerprints | |
US8457472B2 (en) | Method and apparatus for segmenting recorded news program according to topics | |
US9813784B1 (en) | Expanded previously on segments | |
CN105516818B (zh) | 视频播放进度的预览方法和装置 | |
EP3745727A1 (en) | Method and device for data processing | |
US8634708B2 (en) | Method for creating a new summary of an audiovisual document that already includes a summary and reports and a receiver that can implement said method | |
JP6202815B2 (ja) | 文字認識装置および文字認識方法並びに文字認識プログラム | |
CN106792069A (zh) | 多媒体文件播放方法及装置 | |
CN103019575B (zh) | 一种移动终端及其信息处理方法 | |
CN108881938A (zh) | 现场直播视频智能切播方法及装置 | |
KR101389730B1 (ko) | 동영상 파일의 주제별 분할 위치 생성 방법 | |
JP2012023734A (ja) | ファイル位置高速検索方法 | |
JP5138037B2 (ja) | メディアファイル・フォーマットでのメタデータ生成方法、アクセス方法及びその装置 | |
CN105847990A (zh) | 播放媒体文件的方法和设备 | |
CN104768060B (zh) | 一种频道切换方法及装置 | |
CN105744297A (zh) | 码流传输方法和装置 | |
CN108153863B (zh) | 一种视频信息的表示方法及装置 | |
US20170078715A1 (en) | Chapter detection in multimedia streams via alignment of multiple airings | |
CN103793449A (zh) | 信息处理装置和信息处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |