CN112637694B - 一种hls信源一倍速发送控制方法 - Google Patents
一种hls信源一倍速发送控制方法 Download PDFInfo
- Publication number
- CN112637694B CN112637694B CN202011484180.7A CN202011484180A CN112637694B CN 112637694 B CN112637694 B CN 112637694B CN 202011484180 A CN202011484180 A CN 202011484180A CN 112637694 B CN112637694 B CN 112637694B
- Authority
- CN
- China
- Prior art keywords
- data
- slice
- time
- pcr
- file
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 22
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000003139 buffering effect Effects 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005243 fluidization Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
Images
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/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/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
-
- 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/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
-
- 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
-
- 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/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/266—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
- H04N21/2662—Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种HLS信源一倍速发送控制方法。它具体包括如下步骤:(1)经过HLS协议处理后,视频数据分为视频段ts文件和m3u8文件;(2)下载m3u8文件,HLS的ts切片以本地时钟基准安装信源的PCR来发送以实现1倍速发送;(3)调整信源时钟和本地时钟的偏差,最终按照信源时钟为基准1倍速发送。本发明的有益效果是:可以保证转码器输出的码率基本上按照HLS信源时钟1倍速平稳发送,实现了精确地一倍速控制,降低了下游设备以及终端播放器的要求。
Description
技术领域
本发明涉及在线转码相关技术领域,尤其是指一种HLS信源一倍速发送控制方法。
背景技术
有时候实时流通过HLS协议传输,转码设备需要把HLS的信源转换为rtmp或http等协议发送出去。由于各个转码环节和rtmp协议不做1倍速控制,以及HLS协议的特殊性(切片),会造成码率剧烈波动,下游的设备以及终端设备除非有很大的缓冲,否则会卡顿严重,影响观看体验。
如果做1倍速控制,则存在另一个问题,本地时钟和信源时钟不一致,长时间运行会造成延时增大或数据发空的情况,同样会造成播放卡顿。
发明内容
本发明是为了克服现有技术中存在上述的不足,提供了一种能够平稳发送的HLS信源一倍速发送控制方法。
为了实现上述目的,本发明采用以下技术方案:
一种HLS信源一倍速发送控制方法,具体包括如下步骤:
(1)经过HLS协议处理后,视频数据分为视频段ts文件和m3u8文件;
(2)下载m3u8文件,HLS的ts切片以本地时钟基准安装信源的PCR来发送以实现1倍速发送;
(3)调整信源时钟和本地时钟的偏差,最终按照信源时钟为基准1倍速发送。
HLS(Http实时流)协议是Apple基于HTML(超文本标记语言)实现的。连续媒体数据通过HLS协议进行分片,将其分割成大量的小文件进行传输,适合基于网页服务器的文件传输,并使用了一个轻量级的索引文件不断更新,控制分片后小媒体文件的下载和广播,可以实现流媒体直播和点播请求。经过HLS协议处理后,视频数据分为视频段ts文件和m3u8文件。m3u8是一种索引文件,用于记录分片文件资源路径,用于下载播放。
对于实时流,M3U8索引文件中,一般保存三个TS片的描述,每次更新一片。在M3U8文件中,存在和时间相关的Tag信息:其中#EXTINF标签指示出下面TS片的时间长度(并不精确),单位是秒,可以是整数也可以浮点数,浮点数一般精确到小数点后面3位。同时,EXTINF也影响了播放器刷新M3U8文件的间隔,正常情况下,播放器会把当前下载的TS片的EXTINF的值作为每次刷新M3U8文件的间隔;如果播放器发现本次取到的M3U8文件内容没有更新,会在1-2秒内再次刷新。
由于HLS基于切片文件来传输实时流,所以造成流媒体数据被分割成多个小段来传输,所以需要把分段的数据重新流化,流化时需要:足够平滑,保证和ts的瞬时码率基本一致;流化后的时钟基准和信源一致。
本发明提供了上述解决方案,可以保证转码器输出的码率基本上按照HLS信源时钟1倍速平稳发送。从项目实施效果看,实现了精确地一倍速控制,降低了下游设备以及终端播放器的要求。
作为优选,在步骤(2)中,下载m3u8文件的逻辑如下:
(21)开始时下载m3u8文件,判断是否已经有3个ts切片,如果有,则下载前两个切片进行缓冲;
(22)解析最后一个切片的EXTINF的duration,等待duration时长;
(23)等待到期后再次下载m3u8文件,如果下一个切片尚未生成,则等待时长设为1秒间隔,继续检查m3u8文件直到下一个切片生成;
(24)如果下一个切片生成,则下载当前切片,重复步骤(22)。
作为优选,在步骤(2)中,实现1倍速发送具体如下:基于PCR的速率控制器获取一个PCR间隔内的数据块,根据PCR间隔计算该间隔内数据的平均码率Rn,然后把数据以及平均码率Rn发送到环形缓冲区中,环形缓冲区内数据按PCR块管理,发送控制器把当前缓冲内PCR块内数据发送完成后取下一块,获得下一PCR块的数据以及发送码率,并以该PCR块的平均码率Rn发送这个块内的数据。
作为优选,在步骤(3)中,调整信源时钟和本地时钟的偏差具体如下:缓冲器内数据量使用总时长D来表示,精度间隔为pcr间隔,切片时长分析根据前一个切片第一个I帧PTS和当前切片的第一个I帧的PTS之间的差计算出切片总时长Dts,送到缓冲器内,在下载一个新的ts切片后缓冲器总时长需要加上切片总时长Dts,即更新缓冲器内数据总时长D=D+Dts;从缓冲器内读取数据的逻辑是消耗数据,由于一倍速控制过程中一次取一个PCR间隔内的数据,读取数据的每次时长为Dpcr,故而修改缓冲器内数据的总时长D=D–Dpcr。
作为优选,由于第1个切片的时长并无法获得,所以从第二个切片开始跟踪总时长D,切片更新会造成缓冲器内数据总时长的剧烈波动,跟踪新的切片放入缓冲器前的总时长,通过一个统计周期dur后,会得到统计周期内的累积偏差delta,意味着在统计周期dur时长内本地时钟与信源时钟相差delta,也就是单位时间内本地时钟相对信源时钟相差delta/dur,故而1倍速控制码率需要修正为Rdelta=R*(1+delta/dur),R初始值为Rn。
本发明的有益效果是:可以保证转码器输出的码率基本上按照HLS信源时钟1倍速平稳发送,实现了精确地一倍速控制,降低了下游设备以及终端播放器的要求。
附图说明
图1是本发明中的1倍速控制逻辑图;
图2是本发明中的信源时钟和本地时钟偏差调整逻辑图;
图3是本发明中的本地时钟比信源时钟慢时总时长变化图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的描述。
一种HLS信源一倍速发送控制方法,由于HLS基于切片文件来传输实时流,所以造成流媒体数据被分割成多个小段来传输,所以需要把分段的数据重新流化,流化时需要:足够平滑,保证和ts的瞬时码率基本一致;流化后的时钟基准和信源一致;具体包括如下步骤:
(1)经过HLS协议处理后,视频数据分为视频段ts文件和m3u8文件;
(2)下载m3u8文件,HLS的ts切片以本地时钟基准安装信源的PCR来发送以实现1倍速发送;
其中:下载m3u8文件的逻辑如下:
(21)开始时下载m3u8文件,判断是否已经有3个ts切片,如果有,则下载前两个切片进行缓冲;
(22)解析最后一个切片的EXTINF的duration,等待duration时长;
(23)等待到期后再次下载m3u8文件,如果下一个切片尚未生成,则等待时长设为1秒间隔,继续检查m3u8文件直到下一个切片生成;
(24)如果下一个切片生成,则下载当前切片,重复步骤(22)。
其中,HLS的ts切片一般是ABR,所以1倍速发送必须以本地时钟基准安装信源的PCR来发送,可以保证信源的一倍速发送。如图1所示,实现1倍速发送具体如下:基于PCR的速率控制器获取一个PCR间隔内的数据块,根据PCR间隔计算该间隔内数据的平均码率Rn,然后把数据以及平均码率Rn发送到环形缓冲区中,环形缓冲区内数据按PCR块管理,发送控制器把当前缓冲内PCR块内数据发送完成后取下一块,获得下一PCR块的数据以及发送码率,并以该PCR块的平均码率Rn发送这个块内的数据。环形缓冲区很小,只要能存储2,3个PCR间隔的数据即可。
(3)调整信源时钟和本地时钟的偏差,最终按照信源时钟为基准1倍速发送;
由于信源设备的时钟可能和本地时钟不一致,如果本地时钟比信源时钟慢,会导致数据在缓冲器中累积,最终上溢;如果本地时钟比信源时钟快,则会导致缓冲器下溢。上溢则导致数据丢失,下溢则造成码率的波动加剧,最终影响下游终端的播放。所以必须调整信源时钟和本地时钟的偏差,最终按照信源时钟为基准一倍速发送。如图2所示,调整信源时钟和本地时钟的偏差具体如下:缓冲器内数据量使用总时长D来表示,精度间隔为pcr间隔,切片时长分析根据前一个切片第一个I帧PTS和当前切片的第一个I帧的PTS之间的差计算出切片总时长Dts,送到缓冲器内,在下载一个新的ts切片后缓冲器总时长需要加上切片总时长Dts,即更新缓冲器内数据总时长D=D+Dts;从缓冲器内读取数据的逻辑是消耗数据,由于一倍速控制过程中一次取一个PCR间隔内的数据,读取数据的每次时长为Dpcr,故而修改缓冲器内数据的总时长D=D–Dpcr。理想情况下(假设切片时长相同,忽略虑网络下载延时)总时长D是个锯齿形波动函数。
读取线程是按照本地时钟控制“一倍速”从缓冲器内“读取”。而下载线程放入缓冲器内的速度是根据上游设备的时钟控制的“一倍速”“写入”。因为信源的产生是上游设备按照它的本地时钟一倍速产生的。经过长时间的累计,两个时钟的偏差会体现在缓冲器内的数据逐渐增加(本地时钟慢)或逐渐减少(本地时钟快)。
由于EXTINF的duration并不精确,所以开始时缓冲两个切片,同时解析每个切片的第一个I帧的PTS,根据I帧的PTS的差值获得当前切片的精确时长。由于第1个切片的时长并无法获得,所以从第二个切片开始跟踪总时长D,由于切片的关系,切片更新会造成缓冲器内数据总时长的剧烈波动,跟踪新的切片放入缓冲器前的总时长,如图3所示,通过一个统计周期dur后,会得到统计周期内的累积偏差delta,意味着在统计周期dur时长内本地时钟与信源时钟相差delta,也就是单位时间内本地时钟相对信源时钟相差delta/dur,故而1倍速控制码率需要修正为Rdelta=R*(1+delta/dur),R初始值为Rn,根据本地时钟做码率R控制,然后再调整偏差,delta可以为正值或负值。因为上游信源设备不规范,所以切片文件时长不固定,网络拥堵等原因造成的抖动,造成数据统计时有波动,影响计算的准确性,需要平滑处理,去掉一些干扰。
HLS(Http实时流)协议是Apple基于HTML(超文本标记语言)实现的。连续媒体数据通过HLS协议进行分片,将其分割成大量的小文件进行传输,适合基于网页服务器的文件传输,并使用了一个轻量级的索引文件不断更新,控制分片后小媒体文件的下载和广播,可以实现流媒体直播和点播请求。经过HLS协议处理后,视频数据分为视频段ts文件和m3u8文件。m3u8是一种索引文件,用于记录分片文件资源路径,用于下载播放。
直播的M3U8示例如下:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:2680
#EXTINF:7.975,
1234.ts
#EXTINF:7.941,
1235.ts
#EXTINF:7.975,
1236.ts
对于实时流,M3U8索引文件中,一般保存三个TS片的描述,每次更新一片,在上例中,生成TS新片时,M3U8文件内容变化如下:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:2681
#EXTINF:7.941,
1235.ts
#EXTINF:7.975,
1236.ts
#EXTINF:7.971,
1237.ts
在M3U8文件中,存在和时间相关的Tag信息:其中#EXTINF标签指示出下面TS片的时间长度(并不精确),单位是秒,可以是整数也可以浮点数,浮点数一般精确到小数点后面3位。在示例中,1236.ts的时长为7.975秒。同时,EXTINF也影响了播放器刷新M3U8文件的间隔,正常情况下,播放器会把当前下载的TS片的EXTINF的值作为每次刷新M3U8文件的间隔;如果播放器发现本次取到的M3U8文件内容没有更新,会在1-2秒内再次刷新。
本发明提供了上述解决方案,可以保证转码器输出的码率基本上按照HLS信源时钟1倍速平稳发送。从项目实施效果看,实现了精确地一倍速控制,降低了下游设备以及终端播放器的要求。
Claims (1)
1.一种HLS信源一倍速发送控制方法,其特征是,具体包括如下步骤:
(1)经过HLS协议处理后,视频数据分为视频段ts文件和m3u8文件;
(2)下载m3u8文件,HLS的ts切片以本地时钟基准安装信源的PCR来发送以实现1倍速发送;下载m3u8文件的逻辑如下:
(21)开始时下载m3u8文件,判断是否已经有3个ts切片,如果有,则下载前两个切片进行缓冲;
(22)解析最后一个切片的EXTINF的duration,等待duration时长;
(23)等待到期后再次下载m3u8文件,如果下一个切片尚未生成,则等待时长设为1秒间隔,继续检查m3u8文件直到下一个切片生成;
(24)如果下一个切片生成,则下载当前切片,重复步骤(22);
其中,实现1倍速发送具体如下:基于PCR的速率控制器获取一个PCR间隔内的数据块,根据PCR间隔计算该间隔内数据的平均码率Rn,然后把数据以及平均码率Rn发送到环形缓冲区中,环形缓冲区内数据按PCR块管理,发送控制器把当前缓冲内PCR块内数据发送完成后取下一块,获得下一PCR块的数据以及发送码率,并以该PCR块的平均码率Rn发送这个块内的数据;
(3)调整信源时钟和本地时钟的偏差,最终按照信源时钟为基准1倍速发送;调整信源时钟和本地时钟的偏差具体如下:缓冲器内数据量使用总时长D来表示,精度间隔为PCR间隔,切片时长分析根据前一个切片第一个I帧PTS和当前切片的第一个I帧的PTS之间的差计算出切片总时长Dts,送到缓冲器内,在下载一个新的ts切片后缓冲器总时长需要加上切片总时长Dts,即更新缓冲器内数据总时长D = D + Dts;从缓冲器内读取数据的逻辑是消耗数据,由于一倍速控制过程中一次取一个PCR间隔内的数据,读取数据的每次时长为Dpcr,故而修改缓冲器内数据的总时长D = D – Dpcr;由于第1个切片的时长并无法获得,所以从第二个切片开始跟踪总时长D,切片更新会造成缓冲器内数据总时长的剧烈波动,跟踪新的切片放入缓冲器前的总时长,通过一个统计周期dur后,会得到统计周期内的累积偏差delta,意味着在统计周期dur时长内本地时钟与信源时钟相差delta,也就是单位时间内本地时钟相对信源时钟相差delta/dur,故而1倍速控制码率需要修正为Rdelta= R * ( 1+ delta/dur),R初始值为Rn。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011484180.7A CN112637694B (zh) | 2020-12-16 | 2020-12-16 | 一种hls信源一倍速发送控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011484180.7A CN112637694B (zh) | 2020-12-16 | 2020-12-16 | 一种hls信源一倍速发送控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112637694A CN112637694A (zh) | 2021-04-09 |
CN112637694B true CN112637694B (zh) | 2023-03-21 |
Family
ID=75313492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011484180.7A Active CN112637694B (zh) | 2020-12-16 | 2020-12-16 | 一种hls信源一倍速发送控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112637694B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109348292A (zh) * | 2018-11-20 | 2019-02-15 | 广州易方信息科技股份有限公司 | 一种基于切片文件字节阈值的视频切片方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103795755B (zh) * | 2012-10-31 | 2017-10-20 | 中国电信股份有限公司 | 流媒体发送速率控制方法、系统和流媒体服务器 |
KR101470599B1 (ko) * | 2014-04-01 | 2014-12-11 | 주식회사 더즈텍 | 복원된 클럭을 이용하여 송신한 데이터를 수신하는 장치 |
CN107154918B (zh) * | 2016-03-03 | 2019-11-08 | 北京大学 | 基于pid控制的视频直播传输控制方法及系统 |
CN109525893A (zh) * | 2018-11-20 | 2019-03-26 | 广州易方信息科技股份有限公司 | 基于切片文件时长阈值的视频切片方法 |
CN110933253B (zh) * | 2019-11-25 | 2022-04-19 | 广州市奥威亚电子科技有限公司 | 一种数据帧同步的信源端、主机端、同步装置及方法 |
-
2020
- 2020-12-16 CN CN202011484180.7A patent/CN112637694B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109348292A (zh) * | 2018-11-20 | 2019-02-15 | 广州易方信息科技股份有限公司 | 一种基于切片文件字节阈值的视频切片方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112637694A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10499071B2 (en) | Dynamic bit rate adaptation over bandwidth varying connection | |
US11190567B2 (en) | Low-latency HTTP live streaming | |
US9722936B2 (en) | Method and system for rate adaption of HTTP stream media | |
US20230269423A1 (en) | Fast Tune-In for Low Latency Streaming | |
US9438652B2 (en) | Tiered content streaming | |
US11509949B2 (en) | Packager for segmenter fluidity | |
US20210076086A1 (en) | Digital data streaming using server driven adaptive bitrate | |
CN110996038B (zh) | 一种面向多人互动直播的自适应码率调节方法 | |
CN111886875B (zh) | 一种通过网络传送媒体内容的方法及服务器 | |
CN106453270B (zh) | 基于pi控制流媒体的自适应传输算法 | |
US11206442B2 (en) | Methods and apparatus for video streaming with improved synchronization | |
CN112637694B (zh) | 一种hls信源一倍速发送控制方法 | |
US11089386B1 (en) | Accommodating irregular timing information in streamed media data | |
US20230121792A1 (en) | Low latency content delivery | |
US11206295B1 (en) | System and method for streaming content selection | |
EP4099710A1 (en) | Buffer management for live video streaming | |
GB2593696A (en) | Low latency content delivery |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |