CN103780977A - 一种基于帧定位技术的流媒体播放方法 - Google Patents
一种基于帧定位技术的流媒体播放方法 Download PDFInfo
- Publication number
- CN103780977A CN103780977A CN201410066287.8A CN201410066287A CN103780977A CN 103780977 A CN103780977 A CN 103780977A CN 201410066287 A CN201410066287 A CN 201410066287A CN 103780977 A CN103780977 A CN 103780977A
- Authority
- CN
- China
- Prior art keywords
- frame
- audio
- decoder
- time
- audio data
- 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.)
- Granted
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Television Signal Processing For Recording (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明涉及视频监控技术领域。本发明的一种基于帧定位技术的流媒体播放方法,通过将编码器将原始编码视频数据流和原始编码音频数据流进行自定义格式封装后,加入时间标签的原始码流不会对解码器解码形成影响,同时根据人体主观感受(视听心理学)在音频连续的条件下,尽量兼顾视频画面的连贯性,使用者能流畅地浏览历史存储的流媒体信息。本发明的该帧定位技术采用异步解码,解码先于播放,并且,可仅通过查表快速获取用于播放的解码帧数据,定位播放速度远高于通常的播放器;本发明的自定义原始编码帧可实现音视频数据独立存储、交叉存储等各种方案,适应性较强。
Description
技术领域
本发明涉及视频监控技术领域,具体涉及一种基于帧定位技术的流媒体播放方法。
背景技术
在视频监控领域存在海量的数据存储,浏览历史音视频录像信息,除对存储介质上已压缩编码的流媒体数据进行快速检索和视频回放等功能以外,还需要兼顾安全性、兼容性、容错性方面的考虑,所以一些场合下,需要把现场录制的音视频数据存储在自定义存储格式的磁盘介质中,这对于按特定格式存储的媒体数据的展示的性能提出了新的要求,如按时间点快速定位、快进快退、步进等功能。出于安全考虑的流媒体数据格式并不能直接被通用播放软件识别,通常各厂商需要自行设计针对此类存储格式的多媒体播放软件。
要解决特定存储格式的流媒体大数据的高效流畅展示问题,一种解决方案是在原始码中加入时间标签,并对实时解码后的数据帧按时间点及帧号建立索引并进行高效缓存,这样既可以实现多媒体播放系统按帧号或按时间偏移快速定位播放位置,又能实现对音视频信息进行同步播放。
发明内容
解决上述技术问题,本发明提供了一种通过在音视频原始码流加入时间标签的特殊技术,并兼容通用编码格式,播放系统对实时解码后的音视帧按音频时间同步,以实现流媒体信息按帧号或按时间高效定位和流畅播放的目的。
为了达到上述目的,本发明所采用的技术方案是,一种基于帧定位技术的流媒体播放方法,包括以下步骤:
步骤1:编码器将原始编码视频数据流和原始编码音频数据流进行自定义格式封装后,分别生成自定义视频数据帧和自定义音频数据帧,并将该自定义视频数据帧和自定义音频数据帧存入磁盘介质;
将原始编码视频数据流进行自定义格式封装后形成自定义视频数据帧,具体包括以下步骤:将原始编码视频数据流采用H.264编码后得到H.264视频帧,在 H.264视频帧之前增加13个字节的帧头,生成自定义视频数据帧,所述自定义视频数据帧的帧头前五个字节分别为:0x00 0x00 0x00 0x01 0x00,所述自定义视频数据帧的帧头的第六字节到第十三字节则是用于存放八字节时间戳,所述八字节时间戳采用小端方式(little-endian)排序,即低字节地址在前,高字节地址在后;所述八字节时间戳精确到毫秒,使用NTP(Network Time Protocol, 参考RFC958)时间,尽管到2036年NTP循环回零,但是控制器使用的是本地时间,只要操作的数据流时间间隔在68年之内,就不用考虑NTP循环回零问题,因为,对于单个原始编码流文件,在实际工程环境中不存在连续录制34年(68年的一半)的情况,所以已能满足几乎所有的工程场合;即便在2036年时间戳值回零,也可以通过前后时间戳差值绝对值超过34年来判断时间戳已回零了并做出相应处理:设起始时间戳t1(单位:毫秒),结束时间戳t2(单位:毫秒),正整数的时间差值△t (单位:毫秒),68年对于毫秒值T(单位:毫秒);
若|t2-t1|<T/2,则△t = t2-t1;
若|t2-t1|≥T/2,则必定发生时间戳回零,△t = T-t1+t2。
其中,视频码流加13个字节,以H.264码流为例,13个字节的内容如下:
0 1 2 3 4 5 13 (byte)
0x00 | 0x00 | 0x00 | 0x01 | 0x00 | 八字节时间戳 | H.264视频帧 |
最前面的5个字节:0x00 0x00 0x00 0x01 0x00这个是满足H.264格式的NALU包的包头,针对这种NALU包解码器在解码时进行忽略,这样,即使在H.264视频帧中加入了这13个字节,也不会对解码器的解码造成影响,这样最大程度地保证了视频数据和程序的兼容性。
将原始编码音频数据流进行自定义格式封装后形成自定义音频数据帧,具体包括以下步骤:将原始编码音频数据流分成等长的(120字节)音频数据帧,将每一帧音频数据帧增加四字节的帧头和八个字节帧尾,封装成自定义音频数据帧,该帧头的四个字节分别为:0x00、0x01、0x3c和0x00,八个字节帧尾为八字节时间戳,所述帧头和帧尾加起来一共12个字节开销;所述帧头的前两个字节0x00和0x01为自定义音频数据帧的标识,所述第三第四字节0x3c、0x00对应自定义音频数据帧的帧长,自定义音频数据帧的长度单位为2字节的short型,指2字节的short型采用小端(little-end)方式排序,计算机领域小端排序粒度为字节(Byte),所以16进制的0x3c 0x00(即存储形式为0x3c00)的short型对应的真实short型大小为0x003c,及60(=16进展的0x3c)个short存储单元大小,对应120个字节。因此0x003c对应十进制60*2=120字节,所述八个字节帧尾即为八字节时间戳,采用小端方式排序,且所述八字节时间戳与将原始编码视频数据流进行自定义格式封装后形成自定义视频数据帧步骤中的八字节时间戳一致。
所述自定义音频数据帧的数据内容如下:
0 1 2 3 4 124 (byte)
0x00 | 0x01 | 0x3c | 0x00 | (120字节)音频数据帧 | 八字节时间戳 |
步骤2:读入器从磁盘介质读取所述自定义视频数据帧和自定义音频数据帧;
步骤3:判断读入器缓存一定数据量是否就绪?若是则执行步骤3,否则返回执行步骤1;增加预缓存的步骤主要是减缓数据抖动,达到流畅播放效果的目的。一般情况下,该一定数据量取经验值1~4MB。
步骤4:解码器从读入器输出端获取到自定义视频数据帧和自定义音频数据帧,解码器将所述自定义音频数据帧去除帧头或帧尾得到(120字节)音频数据帧,再将(120字节)音频数据帧进行音频解码,得到音频解码数据帧,同时解码器从自定义音频数据帧的帧尾获取8字节时间戳、音频解码数据帧的帧长、音频解码数据帧帧号等信息;解码器将所述自定义视频数据帧去除帧头,再将H.264视频帧进行视频解码,得到视频解码数据帧,同时解码器从自定义视频数据帧的帧尾获取8字节时间戳、视频解码数据帧的帧长,视频解码数据帧的视频分辨率等信息;
其中音频解码数据帧的和视频解码数据帧的帧号是由解码器生成的由1开始顺序递增加一的整数,是音频解码数据帧和视频解码数据帧的唯一标识;
步骤5:解码器将音频解码数据帧和视频解码数据帧的帧号、以及音频解码数据帧发送给缓存器,同时,解码器将音频解码数据帧和视频解码数据帧的帧号、时间戳、音频解码数据帧的帧长、视频分辨率发送给控制器;通过实时采集帧号和时间戳,控制器可以维护音频解码数据帧和视频解码数据帧的两张“帧号-时间戳”表,“帧号-时间戳”表包括两个字段,帧号和时间戳;视频解码数据帧每间隔10帧(视具体情况可调整)把帧号及时间戳取出来组成一条记录写入表格,音频解码数据帧每隔2帧(视具体情况可调整)把帧号及时间戳取出来组成一条记录写入表格;
步骤6:缓存器根据音频解码数据帧号依序分别将音频解码数据帧缓存进缓存器中,同时,缓存器根据视频解码数据帧的帧号依序分别将视频解码数据帧缓存进缓存器中,控制器根据“帧号-时间戳”表的映射关系,更新播放最后一帧的时间,该控制器还将音频解码数据帧和视频解码数据帧的最后缓存(写入)的帧号发送给播放器;
步骤7:控制器更新播放开始时间T0;
步骤8:播放器根据音频解码数据帧的帧号及时从缓存器获取音频解码数据帧,并播放音频解码数据帧,同时,播放器根据视频解码数据帧的帧号及时从缓存器获取视频解码数据帧,并播放视频解码数据帧;
步骤9:控制器每间隔△T秒采用视频同步音频方法进行音视频同步,所述△T秒为15-30秒(s);
步骤10:控制器判断是否收到用户输入的时间点;若是,则返回执行步骤7,否则执行步骤11;
步骤11:判断用户请求是否结束,或判断该缓存器是否返回最后一帧数据,若是则播放结束,否则返回步骤8。
进一步的,所述步骤6具体为:缓存器把解码后输出的音频解码数据帧和视频解码数据帧,独立存储在连续的地址空间,由于解码后的音频解码数据帧和视频解码数据帧均为等长,其中,第一帧的帧号为1,帧号从1开始加一递增编号,依序计算得到每帧在地址空间内的偏移量:帧偏移 = 音(视)频解码数据帧帧长 × 帧号;
进一步的,所述步骤7具体为:控制器将解码器输出的第一帧音频解码数据帧作为起始时间,将最近一次输出的音频帧作为结束时间,取本地系统时间作为绝对时间,按每秒特定帧数(例如,通常视频播放为每秒25帧;音频播放速度可通过音频通道数、采样位宽、采样率来计算,以Mono(单通道)16bits(=2Bytes)位宽3200Kbps采样率的音频为例,每秒平均播放比特数 = 1 × 2 × 3200000 ÷ 8 Bytes/second ≈ 800 KB/s,将当前音频和视频解码数据帧的帧号发送至播放器;播放器根据帧号从缓存器快速获取播放帧数据并及时播放音视频。
进一步的,所述步骤9具体为:
播放器从起始时间开始连续播放音视频,控制器定时(通常按经验值取15~30秒)检查当前音频播放从开始时间到目前的偏移值,所述偏移值为当前帧的时间戳与开始时间的差值,将该音频时间值作为同步时间值。
控制器获取到(音频)同步时间值时,同时获取当前视频帧的时间戳与起始时间的差值,并记为视频帧播放时间值,若该视频解码数据帧播放时间值超出(音频)同步时间值,则判定视频播放过快,控制器向播放器持续输出同步时间值时输出的视频播放帧编号,直到播放音频帧的时间标签与视频帧时间标签间隔小于误差(取200~800毫秒作为经验值)时,控制器再按原频率向播放器输出视频帧号;若该值滞后同步时间值,则判定视频播放过慢,此时控制器需向播放器输出向后跳帧后的视频帧继续播放,计算方法类似。
进一步的,所述步骤10具体为:用户输入时间点进行定位请求,控制器计算得到从起始时间到输入时间点的偏移时间值,获取播放音视频帧的帧号,然后按步骤7到步骤9进行。
本发明通过采用上述技术方案,与现有技术相比,具有如下优点:
本发明有益效果是可以采用通用的解码技术实现自定义格式原始码流解码和音视频同步播放,并能快速按帧号或者按时间定位播放位置。
本发明特点是加入时间标签的原始码流不会对解码器解码形成影响,同时根据人体主观感受(视听心理学)在音频连续的条件下,尽量兼顾视频画面的连贯性,使用者能流畅地浏览历史存储的流媒体信息。
本发明的该帧定位技术采用异步解码,解码先于播放,并且,可仅通过查表快速获取用于播放的解码帧数据,定位播放速度远高于通常的播放器;
本发明的自定义原始编码帧可实现音视频数据独立存储、交叉存储等各种方案,适应性较强。
具体实施方式
发明的一种基于帧定位技术的流媒体播放方法,包括以下步骤:
步骤1:将原始编码视频数据流和原始编码音频数据流进行自定义格式封装后,分别生成自定义视频数据帧和自定义音频数据帧,并将该自定义视频数据帧和自定义音频数据帧存入磁盘介质;
将原始编码视频数据流进行自定义格式封装后形成自定义视频数据帧,具体包括以下步骤:将原始编码视频数据流采用H.264编码后得到H.264视频帧,在 H.264视频帧之前增加13个字节的帧头,生成自定义视频数据帧,所述自定义视频数据帧的帧头前五个字节分别为:0x00 0x00 0x00 0x01 0x00,所述自定义视频数据帧的帧头的第六字节到第十三字节则是用于存放八字节时间戳,所述八字节时间戳采用小端方式(little-endian)排序,即低字节地址在前,高字节地址在后;所述八字节时间戳精确到毫秒,使用NTP(Network Time Protocol, 参考RFC958)时间,尽管到2036年NTP循环回零,但是控制器使用的是本地时间,只要操作的数据流时间间隔在68年之内,就不用考虑NTP循环回零问题,因为,对于单个原始编码流文件,在实际工程环境中不存在连续录制34年(68年的一半)的情况,所以已能满足几乎所有的工程场合;即便在2036年时间戳值回零,也可以通过前后时间戳差值绝对值超过34年来判断时间戳已回零了并做出相应处理:设起始时间戳t1(单位:毫秒),结束时间戳t2(单位:毫秒),正整数的时间差值△t (单位:毫秒),68年对于毫秒值T(单位:毫秒);
若|t2-t1|<T/2,则△t = t2-t1;
若|t2-t1|≥T/2,则必定发生时间戳回零,△t = T-t1+t2。
其中,视频码流加13个字节,以H.264码流为例,13个字节的内容如下:
0 1 2 3 4 5 13 (byte)
0x00 | 0x00 | 0x00 | 0x01 | 0x00 | 八字节时间戳 | H.264视频帧 |
最前面的5个字节:0x00 0x00 0x00 0x01 0x00这个是满足H.264格式的NALU包的包头,针对这种NALU包解码器在解码时进行忽略,这样,即使在H.264视频帧中加入了这13个字节,也不会对解码器的解码造成影响,这样最大程度地保证了视频数据和程序的兼容性。
将原始编码音频数据流进行自定义格式封装后形成自定义音频数据帧,具体包括以下步骤:将原始编码音频数据流分成等长的(120字节)音频数据帧,将每一帧音频数据帧增加四字节的帧头和八个字节帧尾,封装成自定义音频数据帧,该帧头的四个字节分别为:0x00、0x01、0x3c和0x00,八个字节帧尾为八字节时间戳,所述帧头和帧尾加起来一共12个字节开销;所述帧头的前两个字节0x00和0x01为自定义音频数据帧的标识,所述第三第四字节0x3c、0x00对应自定义音频数据帧的帧长,自定义音频数据帧的长度单位为2字节的short型,采用小端(little-end)方式排序,指2字节的short型采用小端(little-end)方式排序,计算机领域小端排序粒度为字节(Byte),所以16进制的0x3c 0x00(即存储形式为0x3c00)的short型对应的真实short型大小为0x003c,及60(=16进展的0x3c)个short存储单元大小,对应120个字节。因此0x003c对应十进制60*2=120字节,所述八个字节帧尾即为八字节时间戳,采用小端方式排序,且所述八字节时间戳与将原始编码视频数据流进行自定义格式封装后形成自定义视频数据帧步骤中的八字节时间戳一致。
所述自定义音频数据帧的数据内容如下:
0 1 2 3 4 124 (byte)
0x00 | 0x01 | 0x3c | 0x00 | (120字节)音频数据帧 | 八字节时间戳 |
步骤2:读入器从磁盘介质读取所述自定义视频数据帧和自定义音频数据帧;
步骤3:判断读入器缓存一定数据量是否就绪?若是则执行步骤3,否则返回执行步骤1;增加预缓存的步骤主要是减缓数据抖动,达到流畅播放效果的目的。一般情况下,该一定数据量取经验值1~4MB;
步骤4:解码器从读入器输出端获取到自定义视频数据帧和自定义音频数据帧,解码器将所述自定义音频数据帧去除帧头或帧尾得到(120字节)音频数据帧,再将(120字节)音频数据帧进行音频解码,得到音频解码数据帧,同时解码器从自定义音频数据帧的帧尾获取8字节时间戳、音频解码数据帧的帧长、音频解码数据帧帧号等信息;解码器将所述自定义视频数据帧去除帧头,再将H.264视频帧进行视频解码,得到视频解码数据帧,同时解码器从自定义视频数据帧的帧尾获取8字节时间戳、视频解码数据帧的帧长,视频解码数据帧的视频分辨率等信息;
其中音频解码数据帧的和视频解码数据帧的帧号是由解码器生成的由1开始顺序递增加一的整数,是音频解码数据帧和视频解码数据帧的唯一标识;
步骤5:解码器将音频解码数据帧和视频解码数据帧的帧号、以及音频解码数据帧发送给缓存器,同时,解码器将音频解码数据帧和视频解码数据帧的帧号、时间戳、音频解码数据帧的帧长、视频分辨率发送给控制器;通过实时采集帧号和时间戳,控制器可以维护音频解码数据帧和视频解码数据帧的两张“帧号-时间戳”表,“帧号-时间戳”表包括两个字段,帧号和时间戳;视频解码数据帧每间隔10帧(视具体情况可调整)把帧号及时间戳取出来组成一条记录写入表格,音频解码数据帧每隔2帧(视具体情况可调整)把帧号及时间戳取出来组成一条记录写入表格;
步骤6:缓存器根据音频解码数据帧号依序分别将音频解码数据帧缓存进缓存器中,同时,缓存器根据视频解码数据帧的帧号依序分别将视频解码数据帧缓存进缓存器中,控制器根据“帧号-时间戳”表的映射关系,更新播放最后一帧的时间,该控制器还将音频解码数据帧和视频解码数据帧的最后缓存(写入)的帧号发送给播放器;
步骤7:控制器更新播放开始时间T0;
步骤8:播放器根据音频解码数据帧的帧号及时从缓存器获取音频解码数据帧,并播放音频解码数据帧,同时,播放器根据视频解码数据帧的帧号及时从缓存器获取视频解码数据帧,并播放视频解码数据帧;播放器根据音频解码数据帧和视频解码数据帧各自的帧号实时从缓存器获取音频解码数据帧和视频解码数据帧,并播放音频解码数据帧和视频解码数据帧;
步骤9:控制器每间隔△T秒采用视频同步音频方法进行音视频同步,所述△T秒为15-30秒(s);
步骤10:控制器判断是否收到用户输入的时间点;若是,则返回执行步骤7,否则执行步骤11;
步骤11:判断用户请求是否结束,或判断该缓存器是否返回最后一帧数据,若是则播放结束,否则返回步骤8。
进一步的,所述步骤6具体为:缓存器把解码后输出的音频解码数据帧和视频解码数据帧,独立存储在连续的地址空间,由于解码后的音频解码数据帧和视频解码数据帧均为等长,其中,第一帧的帧号为1,帧号从1开始加一递增编号,依序计算得到每帧在地址空间内的偏移量:帧偏移 = 音(视)频解码数据帧帧长 × 帧号;缓存器最后缓存的一帧音频或视频解码数据帧所对应的时间戳值,即为最后一帧音频解码数据帧或最后一帧音频解码数据帧播放时间。
进一步的,所述步骤7具体为:控制器将解码器输出的第一帧音频解码数据帧作为起始时间,将最近一次输出的音频帧作为结束时间,取本地系统时间作为绝对时间,按每秒特定帧数,例如,通常视频播放为每秒25帧;音频播放速度可通过音频通道数、采样位宽、采样率来计算,以Mono(单通道)16bits(=2Bytes)位宽3200Kbps采样率的音频为例,每秒平均播放比特数 = 1 × 2 × 3200000 ÷ 8 Bytes/second ≈ 800 KB/s,将当前音频和视频解码数据帧的帧号发送至播放器;播放器根据帧号从缓存器快速获取播放帧数据并及时播放音视频。
进一步的,所述步骤9具体为:
播放器从起始时间开始连续播放音视频,控制器定时(通常按经验值取15~30秒)检查当前音频播放从开始时间到目前的偏移值,所述偏移值为当前帧的时间戳与开始时间的差值,将该音频时间值作为同步时间值。控制器设置定时器,到时即去计算当前播放视频帧与音频帧时间戳的差值,若视频帧时间与音频帧时间误差超过一定阀值(如1秒),则调整视频帧的当前播放帧号为,与音频帧时间误差小于上述该阀值范围内的帧号,调整后播放器根据帧号从缓存器取出的视频帧数据继续播放,这样就达到音视频同步播放的目的;
具体地,控制器获取到(音频)同步时间值时,同时获取当前视频帧的时间戳与起始时间的差值,并记为视频帧播放时间值,若该视频解码数据帧播放时间值超出(音频)同步时间值,则判定视频播放过快,控制器向播放器持续输出同步时间值时输出的视频播放帧编号,直到播放音频帧的时间标签与视频帧时间标签间隔小于误差(取200~800毫秒作为经验值)时,控制器再按原频率向播放器输出视频帧号;若该值滞后同步时间值,则判定视频播放过慢,此时控制器需向播放器输出向后跳帧后的视频帧继续播放,计算方法类似。
播放器从起始时间开始连续播放音频解码数据帧和视频解码数据帧,控制器定时(通常按经验值取15~30秒)检查当前音频解码数据帧和视频解码数据帧播放从开始时间T0到当前播放时间的偏移值,所述偏移值为当前音频解码数据帧的时间戳对应时间T与开始时间T0的差值,将该音频解码数据帧的时间戳对应时间T值作为同步时间值δT。
控制器获取到(音频)同步时间值δT时,同时获取当前正在播放的视频解码帧的时间戳T2与起始时间T0的差值△T1,并记为视频解码帧播放时间值T’,若该视频解码帧播放时间值T’超出(音频)同步时间值δT,则判定视频播放过快,控制器向播放器定期持续输出同步时间值时输出的视频解码帧序号,直到播放音频解码帧的时间戳与视频解码帧时间戳间隔小于误差阀值(取200~800毫秒作为经验值)范围时,控制器再按25帧每秒的频率向播放器输出视频解码帧帧号;若该帧号对应时间戳值滞后同步时间值,则判定视频播放过慢,此时控制器需向播放器输出向后跳帧后的视频帧继续播放,计算方法类似。
步骤10:控制器判断具体收到用户输入的跳播时间点;若是,则返回执行步骤7,否则执行步骤11;
进一步的,所述步骤10具体为:用户输入时间点进行定位请求,控制器计算得到从起始时间到输入时间点的偏移时间值,通过查上述步骤3所述“帧号-时间戳”表获取播放音视频帧的帧号,然后按步骤7到步骤9进行。
步骤11:判断用户请求是否结束,或判断该缓存器是否返回最后一帧音频解码帧数据,若是则播放结束,否则返回步骤8。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
Claims (6)
1.一种基于帧定位技术的流媒体播放方法,其特征在于:包括以下步骤:
步骤1:编码器将原始编码视频数据流和原始编码音频数据流进行自定义格式封装后,分别生成自定义视频数据帧和自定义音频数据帧,并将该自定义视频数据帧和自定义音频数据帧存入磁盘介质;
步骤2:读入器从磁盘介质读取所述自定义视频数据帧和自定义音频数据帧;
步骤3:判断读入器缓存一定数据量是否就绪,若是则执行步骤3,否则返回执行步骤1;
步骤4:解码器从读入器输出端获取到自定义视频数据帧和自定义音频数据帧,解码器将所述自定义音频数据帧去除帧头或帧尾得到音频数据帧,再将音频数据帧进行音频解码,得到音频解码数据帧,同时解码器从自定义音频数据帧的帧尾获取时间戳、音频解码数据帧的帧长、音频解码数据帧帧号等信息;解码器将所述自定义视频数据帧去除帧头,再将视频帧进行视频解码,得到视频解码数据帧,同时解码器从自定义视频数据帧的帧尾获取时间戳、视频解码数据帧的帧长,视频解码数据帧的视频分辨率等信息;
步骤5:解码器将音频解码数据帧和视频解码数据帧的帧号、以及音频解码数据帧发送给缓存器,同时,解码器将音频解码数据帧和视频解码数据帧的帧号、时间戳、音频解码数据帧的帧长、视频分辨率发送给控制器;通过实时采集帧号和时间戳,控制器可以维护音频解码数据帧和视频解码数据帧的两张“帧号-时间戳”表,“帧号-时间戳”表包括两个字段,帧号和时间戳;视频解码数据帧每间隔10帧把帧号及时间戳取出来组成一条记录写入表格,音频解码数据帧每隔2帧把帧号及时间戳取出来组成一条记录写入表格;
步骤6:缓存器根据音频解码数据帧号依序分别将音频解码数据帧缓存进缓存器中,同时,缓存器根据视频解码数据帧的帧号依序分别将视频解码数据帧缓存进缓存器中,控制器根据“帧号-时间戳”表的映射关系,更新播放最后一帧的时间,该控制器还将音频解码数据帧和视频解码数据帧的最后缓存(写入)的帧号发送给播放器;
步骤7:控制器更新播放开始时间T0;
步骤8:播放器根据音频解码数据帧的帧号及时从缓存器获取音频解码数据帧,并播放音频解码数据帧,同时,播放器根据视频解码数据帧的帧号及时从缓存器获取视频解码数据帧,并播放视频解码数据帧;
步骤9:控制器每间隔△T秒采用视频同步音频方法进行音视频同步,所述△T秒为15-30秒(s);
步骤10:控制器判断是否收到用户输入的时间点;若是,则返回执行步骤7,否则执行步骤11;
步骤11:判断用户请求是否结束,或判断该缓存器是否返回最后一帧数据,若是则播放结束,否则返回步骤8。
2.根据权利要求1所述的一种基于帧定位技术的流媒体播放方法,其特征在于:所述步骤1中,自定义视频数据帧定义为:将原始编码视频数据流增加13个字节,帧头增加5个字节和一个8字节时间戳,分别为: 0x00 0x00 0x00 0x01 0x00,自定义音频数据帧定义为:将原始音频数据帧增加四字节的帧头和八个字节帧尾,四字节帧头为:0x00、0x01、0x3c和0x00,八字节帧尾为八字节时间戳。
3.根据权利要求1所述的一种基于帧定位技术的流媒体播放方法,其特征在于:所述步骤6具体为:缓存器把解码后输出的音频解码数据帧和视频解码数据帧,独立存储在连续的地址空间,由于解码后的音频解码数据帧和视频解码数据帧均为等长,其中,第一帧的帧号为1,帧号从1开始加一递增编号,依序计算得到每帧在地址空间内的偏移量:帧偏移 = 音(视)频解码数据帧帧长 × 帧号。
4.根据权利要求1所述的一种基于帧定位技术的流媒体播放方法,其特征在于:所述步骤7具体为:控制器将解码器输出的第一帧音频解码数据帧作为起始时间,将最近一次输出的音频帧作为结束时间,取本地系统时间作为绝对时间,按每秒特定帧数,将当前音频和视频解码数据帧的帧号发送至播放器;播放器根据帧号从缓存器快速获取播放帧数据并及时播放音视频。
5.根据权利要求1所述的一种基于帧定位技术的流媒体播放方法,其特征在于:所述步骤9具体为:播放器从起始时间开始连续播放音视频,控制器定时检查当前音频播放从开始时间到目前的偏移值,所述偏移值为当前帧的时间戳与开始时间的差值,将该音频时间值作为同步时间值。
6.根据权利要求1所述的一种基于帧定位技术的流媒体播放方法,其特征在于:所述步骤10具体为:用户输入时间点进行定位请求,控制器计算得到从起始时间到输入时间点的偏移时间值,获取播放音视频帧的帧号,然后按步骤7到步骤9进行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410066287.8A CN103780977B (zh) | 2014-02-26 | 2014-02-26 | 一种基于帧定位技术的流媒体播放方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410066287.8A CN103780977B (zh) | 2014-02-26 | 2014-02-26 | 一种基于帧定位技术的流媒体播放方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103780977A true CN103780977A (zh) | 2014-05-07 |
CN103780977B CN103780977B (zh) | 2019-01-01 |
Family
ID=50572724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410066287.8A Active CN103780977B (zh) | 2014-02-26 | 2014-02-26 | 一种基于帧定位技术的流媒体播放方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103780977B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104159161A (zh) * | 2014-08-25 | 2014-11-19 | 广东欧珀移动通信有限公司 | 视频图像帧的定位方法和装置 |
CN104506919A (zh) * | 2014-12-26 | 2015-04-08 | 上海智物信息技术有限公司 | 显示内容与显示屏运动的同步方法及其系统 |
CN105959310A (zh) * | 2016-07-01 | 2016-09-21 | 北京小米移动软件有限公司 | 帧定位方法和装置 |
CN110933449A (zh) * | 2019-12-20 | 2020-03-27 | 北京奇艺世纪科技有限公司 | 一种外部数据与视频画面的同步方法、系统及装置 |
CN111669645A (zh) * | 2020-06-12 | 2020-09-15 | 腾讯科技(深圳)有限公司 | 视频的播放方法、装置、电子设备及存储介质 |
CN112738418A (zh) * | 2020-12-25 | 2021-04-30 | 北京百度网讯科技有限公司 | 视频获取方法、装置以及电子设备 |
CN112929686A (zh) * | 2021-02-04 | 2021-06-08 | 北京华宇信息技术有限公司 | 线上实时回放录制视频的方法及装置 |
CN113709585A (zh) * | 2021-08-25 | 2021-11-26 | 三星电子(中国)研发中心 | 流媒体播放方法和装置 |
CN114257843A (zh) * | 2020-09-24 | 2022-03-29 | 腾讯科技(深圳)有限公司 | 一种多媒体数据处理方法、装置、设备及可读存储介质 |
CN117459613A (zh) * | 2023-12-22 | 2024-01-26 | 浙江国利信安科技有限公司 | 用于回放数据的方法、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03124132A (ja) * | 1989-10-07 | 1991-05-27 | Fujitsu Ltd | 先頭フレームでのマルチフレーム同期確立方式 |
CN101106723A (zh) * | 2007-07-10 | 2008-01-16 | 中国传媒大学 | 一种快速播放多媒体信息的系统和方法 |
CN101118776A (zh) * | 2007-08-21 | 2008-02-06 | 中国科学院计算技术研究所 | 实现音、视频数据同步的方法、系统及装置 |
CN103051921A (zh) * | 2013-01-05 | 2013-04-17 | 北京中科大洋科技发展股份有限公司 | 一种精确检测视音频处理系统视频、音频同步误差的方法 |
-
2014
- 2014-02-26 CN CN201410066287.8A patent/CN103780977B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03124132A (ja) * | 1989-10-07 | 1991-05-27 | Fujitsu Ltd | 先頭フレームでのマルチフレーム同期確立方式 |
CN101106723A (zh) * | 2007-07-10 | 2008-01-16 | 中国传媒大学 | 一种快速播放多媒体信息的系统和方法 |
CN101118776A (zh) * | 2007-08-21 | 2008-02-06 | 中国科学院计算技术研究所 | 实现音、视频数据同步的方法、系统及装置 |
CN103051921A (zh) * | 2013-01-05 | 2013-04-17 | 北京中科大洋科技发展股份有限公司 | 一种精确检测视音频处理系统视频、音频同步误差的方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104159161A (zh) * | 2014-08-25 | 2014-11-19 | 广东欧珀移动通信有限公司 | 视频图像帧的定位方法和装置 |
CN104159161B (zh) * | 2014-08-25 | 2018-05-18 | 广东欧珀移动通信有限公司 | 视频图像帧的定位方法和装置 |
CN104506919A (zh) * | 2014-12-26 | 2015-04-08 | 上海智物信息技术有限公司 | 显示内容与显示屏运动的同步方法及其系统 |
CN105959310A (zh) * | 2016-07-01 | 2016-09-21 | 北京小米移动软件有限公司 | 帧定位方法和装置 |
CN110933449A (zh) * | 2019-12-20 | 2020-03-27 | 北京奇艺世纪科技有限公司 | 一种外部数据与视频画面的同步方法、系统及装置 |
CN111669645A (zh) * | 2020-06-12 | 2020-09-15 | 腾讯科技(深圳)有限公司 | 视频的播放方法、装置、电子设备及存储介质 |
CN114257843A (zh) * | 2020-09-24 | 2022-03-29 | 腾讯科技(深圳)有限公司 | 一种多媒体数据处理方法、装置、设备及可读存储介质 |
CN112738418A (zh) * | 2020-12-25 | 2021-04-30 | 北京百度网讯科技有限公司 | 视频获取方法、装置以及电子设备 |
CN112929686A (zh) * | 2021-02-04 | 2021-06-08 | 北京华宇信息技术有限公司 | 线上实时回放录制视频的方法及装置 |
CN112929686B (zh) * | 2021-02-04 | 2022-12-20 | 北京华宇信息技术有限公司 | 线上实时回放录制视频的方法及装置 |
CN113709585A (zh) * | 2021-08-25 | 2021-11-26 | 三星电子(中国)研发中心 | 流媒体播放方法和装置 |
CN113709585B (zh) * | 2021-08-25 | 2023-09-19 | 三星电子(中国)研发中心 | 流媒体播放方法和装置 |
CN117459613A (zh) * | 2023-12-22 | 2024-01-26 | 浙江国利信安科技有限公司 | 用于回放数据的方法、电子设备和存储介质 |
CN117459613B (zh) * | 2023-12-22 | 2024-03-19 | 浙江国利信安科技有限公司 | 用于回放数据的方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103780977B (zh) | 2019-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103780977A (zh) | 一种基于帧定位技术的流媒体播放方法 | |
CN101303880B (zh) | 录制、播放音视频文件的方法及装置 | |
CN104410807B (zh) | 一种多路视频同步回放方法及装置 | |
US9236091B2 (en) | Apparatus and method for processing and reading a file having a media data container and a metadata container | |
CN100520938C (zh) | 存储静止图像的信息存储介质及其再现设备和方法 | |
EP1980958A2 (en) | Apparatus and method for generating a data file or for reading a data file | |
CN101842786A (zh) | 对于多媒体文件格式的快速和编辑友好的采样关联方法 | |
CN102595114B (zh) | 一种在低端嵌入式产品上播放视频的方法及终端 | |
CN102665103A (zh) | 一种适用于流媒体服务的音频视频封装方法 | |
CN101802823A (zh) | 用于流式多媒体数据的分段的元数据和位标 | |
RU2005134850A (ru) | Устройство воспроизведения мультимедийных данных, способ приема аудиоданных и структура аудиоданных в них | |
CN100446109C (zh) | 用于提供可浏览的幻灯片显示的解码数据的装置 | |
CN101656099A (zh) | 一种用于mp3播放器的音视频制作和播放方法 | |
TW526666B (en) | Reproducing method for compression coded data and device for the same | |
CN112929713B (zh) | 数据同步方法、装置、终端及存储介质 | |
CN104602105A (zh) | 视频文件的播放方法及用户设备 | |
WO2001010119A1 (fr) | Procede de determination de position d'acces sur un support d'enregistrement et procede de gestion du support d'enregistrement | |
JPH10269706A (ja) | 情報再生装置及び情報再生方法 | |
CN102780929A (zh) | 一种通过处理时码跳变以使视音频同步的方法 | |
JP2006333330A (ja) | データ処理方法、その装置およびプログラム | |
JP3491401B2 (ja) | データ符号化装置および方法、並びに、データ復号化装置および方法 | |
CN103096132A (zh) | Ts文件快进快退的方法及装置 | |
JPH1118051A (ja) | Iフレーム抽出方法 | |
CN102238393A (zh) | 一种音频码流的重同步方法及重同步装置 | |
CN103647970A (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 |