CN114245153A - 切片方法、装置、设备及可读存储介质 - Google Patents
切片方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN114245153A CN114245153A CN202111299337.3A CN202111299337A CN114245153A CN 114245153 A CN114245153 A CN 114245153A CN 202111299337 A CN202111299337 A CN 202111299337A CN 114245153 A CN114245153 A CN 114245153A
- Authority
- CN
- China
- Prior art keywords
- data packet
- xth
- live broadcast
- amf
- broadcast 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
- 238000000034 method Methods 0.000 title claims description 64
- 230000009471 action Effects 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 230000005856 abnormality Effects 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- 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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440245—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
-
- 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
-
- 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
Abstract
本申请公开了一种切片方法、装置、设备及可读存储介质,边缘推流节点每次接收到直播数据包后,若该直播数据包符合预设条件,则生成一个AMF数据包并发送给中心节点。中心节点接收到该AMF数据包后,根据AMF数据包包含的切片名等对一组直播数据包进行切片。采用该种方案,能够保证各个中心节点的切片结果一样。当边缘拉流节点拉流时,即使切换中心节点,边缘拉流节点获取到的m3u8文件指示的TS切片与不切换时获取到m3u8文件指示的TS切片一致,进而使得播放端根据m3u8文件获取TS切片并播放时,不会发生异常。
Description
技术领域
本申请涉及直播技术领域,特别涉及一种切片方法、装置、设备及可读存储介质。
背景技术
目前,直播技术采用的流媒体传输协议主要包括flash视频(flash video,FLV)、HTTP动态自适应流(Dynamic Adaptive Streaming over HTTP,DASH)、HTTP实时流媒体(HTTP Live Streaming,HLS)等。其中,HLS协议因其的简洁性及针对HTTP协议的友好性,其已经成为直播上使用较为广泛的标准之一。
大多数的直播网站或直播app都会利用云厂商提供的分布式集群网络进行分发管理。分布式集群网络通常采用多层架构来保证链路稳定。主播端向边缘推流节点发送直播数据包,边缘推流节点将直播数据包推送给多个中心节点,由中心节点对直播数据包进行连续切片,得到传输流(Transport Stream,TS)切片,一个TS切片的时长一般为6S。中心节点动态生成m3u8格式的索引文件,该m3u8索引文件记录至少3个最新的TS切片。当用户在播放端观看直播时,向边缘拉流节点发送拉流请求。边缘拉流节点从中心节点获取m3u8索引文件,然后向播放端发送m3u8索引文件。播放端根据m3u8索引文件中TS切片的下载地址,下载TS切片并播放。
由于中心节点对直播数据包的切片是不一致的。当边缘拉流节点切换中心节点请求TS切片时,中心节点响应的内容不一致,导致播放端出现画面倒退、跳变甚至无法播放等问题。
发明内容
本申请实施例提供一种切片方法、装置、设备及可读存储介质,通过保证中心节点对直播数据包切片的一致性,保证边缘拉流节点切换中心节点时,获取到m3u8文件指示的TS切片与不切换时获取到m3u8文件指示的TS切片一致,进而使得播放端根据m3u8文件获取TS切片并播放时,不会发生异常。
第一方面,本申请实施例提供一种切片方法,应用于边缘推流节点,该方法包括:
接收来自主播端的直播数据包;
当所述直播数据包是第X个满足预设条件的直播数据包时,针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包,所述第X个AMF数据包用于指导中心节点对第X组直播数据包切片,所述第X组直播数据包包括所述第X个满足预设条件的直播数据包,以及所述边缘推流节点接收到所述第X个满足预设条件的直播数据包之后、接收第X+1个满足预设条件的直播数据包之前接收到的直播数据包,其中,X≥1且为整数;
向所述中心节点发送所述第X个AMF数据包。
第二方面,本申请实施例提供一种切片方法,应用于中心节点,该方法包括:
接收来自边缘推流节点的第X个网络协议AMF数据包,所述第X个AMF数据包是所述边缘推流节点针对第X个满足预设条件的直播数据包生成的,所述X≥1且为整数;
根据所述第X个AMF数据包对第X组直播数据包切片,所述第X组直播数据包包括所述第X个满足预设条件的直播数据包,以及所述中心节点接收到所述第X个满足预设条件的直播数据包之后、接收第X+1个满足预设条件的直播数据包之前接收到的直播数据包。
第三方面,本申请实施例提供一种切片装置,包括:
接收模块,用于接收来自主播端的直播数据包;
处理模块,用于当所述直播数据包是第X个满足预设条件的直播数据包时,针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包,所述第X个AMF数据包用于指导中心节点对第X组直播数据包切片,所述第X组直播数据包包括所述第X个满足预设条件的直播数据包,以及所述边缘推流节点接收到所述第X个满足预设条件的直播数据包之后、接收第X+1个满足预设条件的直播数据包之前接收到的直播数据包,其中,X≥1且为整数;
发送模块,用于向所述中心节点发送所述第X个AMF数据包。
第四方面,本申请实施例提供一种切片装置,包括:
收发模块,用于接收来自边缘推流节点的第X个网络协议AMF数据包,所述第X个AMF数据包是所述边缘推流节点针对第X个满足预设条件的直播数据包生成的,所述X≥1且为整数;
处理模块,用于根据所述第X个AMF数据包对第X组直播数据包切片,所述第X组直播数据包包括所述第X个满足预设条件的直播数据包,以及所述中心节点接收到所述第X个满足预设条件的直播数据包之后、接收第X+1个满足预设条件的直播数据包之前接收到的直播数据包。
第五方面,本申请实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时使得所述电子设备实现如上第一方面或第一方面各种可能的实现方式所述的方法。
第六方面,本申请实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时使得所述电子设备实现如上第二方面或第二方面各种可能的实现方式所述的方法。
第七方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令在被处理器执行时用于实现如上第一方面或第一方面各种可能的实现方式所述的方法。
第八方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令在被处理器执行时用于实现如上第二方面或第二方面各种可能的实现方式所述的方法。
第九方面,本申请实施例提供一种包含计算程序的计算机程序产品,所述计算机程序被处理器执行时实现如上第一方面或第一方面各种可能的实现方式所述的方法。
第十方面,本申请实施例提供一种包含计算程序的计算机程序产品,所述计算机程序被处理器执行时实现如上第二方面或第二方面各种可能的实现方式所述的方法。
本申请实施例提供的切片方法、装置、设备及可读存储介质,边缘推流节点每次接收到直播数据包后,若该直播数据包符合预设条件,则生成一个AMF数据包并发送给中心节点。中心节点接收到该AMF数据包后,根据AMF数据包包含的切片名等对一组直播数据包进行切片。采用该种方案,各中心节点均能接收到AMF数据包以及该AMF数据包对应的一组直播数据包,中心节点根据AMF数据包对一组直播数据包进行切片,切片依据、切片方式相同,因此,能够保证各个中心节点的切片结果一样。当边缘拉流节点拉流时,即使切换中心节点,边缘拉流节点获取到的m3u8文件指示的TS切片与不切换时获取到m3u8文件指示的TS切片一致,进而使得播放端根据m3u8文件获取TS切片并播放时,不会发生异常。而且,本申请实施例不限制边缘推流节点和中心节点个数,承载能力更高。另外,本申请实施例限制编码格式,支持现有的各种编码格式以及后续新的编码格式编码的音视频,适用范围广。同时,在中心节点进行TS切片,能够避免边缘拉流节点切片带来的卡顿、画面异常等问题,提升直播质量。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的切片方法的实施环境示意图;
图2是本申请实施例提供的切片方法的流程图;
图3是本申请示例提供的切片方法的另一个流程图;
图4为本申请实施例提供的一种切片装置的示意图;
图5为本申请实施例提供的另一种切片装置的示意图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
随着PC以及移动设备的广泛使用,入户带宽不断提升,互动直播类业务也日趋广泛,各类互动直播类网站以及应用程序(application,app)相继推出,带来的竞争压力也日趋激烈。大多数的直播网站或直播app都会利用分布式集群网络进行分发管理,例如但不限于CDN网络等云厂商所提供的云服务。
基于HLS协议的直播中,边缘推流节点接收到来自主播端的直播数据包后,将直播数据包推送给中心节点,中心节点将直播数据包切片得到TS切片并生成M3U8索引文件。边缘拉流节点获取并返回M3U8索引文件给播放端。播放端根据M3U8索引文件中TS切片的下载地址,下载TS切片并播放。
然而,中心节点的数量比较多,不同的中心节点对直播数据包切片得到的结果是不一样的。当中心节点不稳定,边缘拉流节点切换中心节点请求M3U8文件时,中心节点响应的内容不一致,导致播放端出现画面倒退、跳变甚至无法播放等问题。
基于此,本申请实施例提供一种切片方法、装置、设备及可读存储介质,通过保证中心节点对直播数据包切片的一致性,保证边缘拉流节点切换中心节点时,获取到m3u8文件指示的TS切片与不切换时获取到m3u8文件指示的TS切片一致,进而使得播放端根据m3u8文件获取TS切片并播放时,不会发生异常。
图1是本申请实施例提供的切片方法的实施环境示意图。请参照图1,该实施环境包括主播端11、边缘推流节点12、中心节点13、边缘拉流节点14和播放端15。
主播端11也称之为推流器等,可以为安装有安卓操作系统、微软操作系统、塞班操作系统、Linux操作系统或苹果iOS操作系统的手机、平板电脑、个人电脑、电子书阅读器、膝上型便携电脑、台式计算机等。
边缘推流节点12为基于HLS协议直播场景中的边缘节点,用于接收来自主播端11的直播数据包,当直播数据包满足预设条件时生成动作消息格式(Action MessageFormat,AMF)数据包,向各中心节点13发送直播数据包和AMF数据包,AMF数据包也称之为0x12数据包,用于指导中心节点13对一组直播数据包切片。当直播数据包不满足预设条件时,无需生成AMF数据包,而是直接将该直播数据包推流给中心节点13。
中心节点13也称之为中心服务器等,是基于HLS协议直播场景中的加速节点等,用于对接收到的直播数据包进行切片,并在接收到来自边缘拉流节点14的M3U8请求时,根据最新生成的预设数量的切片生成M 3U8索引文件,将M3U8索引文件发送给边缘拉流节点14。
边缘拉流节点14例如为基于HLS协议直播场景的边缘节点。当边缘拉流节点14接收到来自播放端15的拉流请求后,从中心节点13获取M3U8索引文件并返回给播放端15。当中心节点13不稳定或边缘拉流节点14和中心节点13之间连接断开时,边缘拉流节点14能够切换到另一个中心节点13进行拉流。
播放端15也称之为播放器等,是观众观看直播的设备,可以为安装有安卓操作系统、微软操作系统、塞班操作系统、Linux操作系统或苹果iOS操作系统的手机、平板电脑、个人电脑、电子书阅读器、膝上型便携电脑、台式计算机等。拉流过程中,播放端15向边缘拉流节点14发送拉流请求以获取M3U8索引文件。之后,播放端15根据M3U8索引文件中的TS切片的链接地址下载TS切片并播放。
该实施环境中,推流过程中,由于主播端11会通过边缘推流节点12向各个中心节点13发送同一个直播数据包,因此,对于中心节点13而言,各中心节点13的数据源是统一的。而且,中心节点13切片的依据均为AMF数据包,切片依据、切片方式相同,因此,各个中心节点13对同一组直播数据包进行切片得到的结果是一致的。当边缘拉流节点14拉流时,即使切换中心节点13,边缘拉流节点14获取到的m3u8文件指示的TS切片与不切换时获取到m3u8文件指示的TS切片一致,进而使得播放端根据m3u8文件获取TS切片并播放时,不会发生异常。
下面,基于图1所述架构,对本申请实施例所述的切片方法进行详细说明。示例性的,请参照图2。图2是本申请实施例提供的切片方法的流程图。本实施例是从边缘推流节点和中心节点交互的角度进行说明。本实施例包括:
201、边缘推流节点接收来自主播端的直播数据包。
示例性的,直播过程中,主播端实时向边缘推流节点发送直播数据包。该直播数据包可以是纯音频数据包、纯视频数据包或音视频混合数据包。
202、当所述直播数据包是第X个满足预设条件的直播数据包时,针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包。
其中,所述第X个动作消息格式(Action Message Format,AMF)数据包用于指导中心节点对第X组直播数据包切片,所述第X组直播数据包包括所述第X个满足预设条件的直播数据包,以及接收到所述第X个满足预设条件的直播数据包之后、接收第X+1个满足预设条件的直播数据包之前接收到的直播数据包,X≥1且为整数。
示例性的,边缘推流节点不断接收主播端实时推送的直播数据包。第一次接收到一个符合预设条件的直播数据包后,则认为这个直播数据包为第1个满足预设条件的直播数据包,第2次接收到符合预设条件的直播数据包后,则认为这个直播数据包是第2个满足预设条件的直播数据包,依次类推。
每个符合预设条件的直播数据包后,存在一定数量的不符合预设条件的直播数据包。例如,直播为纯视频直播时,符合预设条件的直播数据包为关键帧,而每个关键帧后面存在一定数量的非关键帧,比如,14个非关键帧,此时,第X组直播数据包包括一个关键帧和14个关键帧。
再如,直播为纯音频直播时,第X组直播数据包包括第X个符合预设条件的直播数据包等。
又如,直播为音视频混合直播时,每两个关键帧之间存在非关键帧和/或纯音频数据包。此时,第X组直播数据包包括第一个关键帧以及该两个关键帧之间的直播数据包。
边缘推流节点每次接收到一个直播数据包后,都会判断该直播数据包是否满足预设条件,若该直播数据包满足预设条件,则针对该直播数据包生成一个AMF数据包。例如,直播数据包是边缘推流节点接收到的第X个满足预设条件的直播数据包,则边缘节点针对该第X个满足预设条件的直播数据包生成第X个AMF数据包。
若来自主播端的直播数据包不满足预设条件,则边缘推流节点无需生成AMF数据包,而是直接将该AMF数据包发送给各个中心节点。
AMF数据包也称之为0x12数据包等,AMF数据包的名称例如为OnHLSdata,类型为目标(object),AMF数据包的内容包括切片名称(ts_name)、切片头改变的标志位(ts_header_chg)等。
边缘推流节点生成第X个AMF数据包是指:边缘推流节点根据第X个直播数据包的时间戳等生成第X个AMF数据包中切片名称、序列等的过程。
203、边缘推流节点向中心节点发送第X个AMF数据包。
相应的,中心节点接收来自边缘推流节点的第X个AMF数据包。
204、中心节点根据所述第X个AMF数据包对第X组直播数据包切片。
其中,第X组直播数据包包括所述第X个满足预设条件的直播数据包,以及中心节点接收到所述第X个满足预设条件的直播数据包之后、接收第X+1个满足预设条件的直播数据包之前接收到的直播数据包。
切片过程中,中心节点根据第X个AMF数据包包含的切片名称等,确定将第X组直播数据包封装到当前的切片中、新的切片中或丢弃等。
本申请实施例提供的切片方法,边缘推流节点每次接收到直播数据包后,若该直播数据包符合预设条件,则生成一个AMF数据包并发送给中心节点。中心节点接收到该AMF数据包后,根据AMF数据包包含的切片名等对一组直播数据包进行切片。采用该种方案,各中心节点均能接收到AMF数据包以及该AMF数据包对应的一组直播数据包,中心节点根据AMF数据包对一组直播数据包进行切片,切片依据、切片方式相同,因此,能够保证各个中心节点的切片结果一样。当边缘拉流节点拉流时,即使切换中心节点,边缘拉流节点获取到的m3u8文件指示的TS切片与不切换时获取到m3u8文件指示的TS切片一致,进而使得播放端根据m3u8文件获取TS切片并播放时,不会发生异常。而且,本申请实施例不限制边缘推流节点和中心节点个数,承载能力更高。另外,本申请实施例限制编码格式,支持现有的各种编码格式以及后续新的编码格式编码的音视频,适用范围广。同时,在中心节点进行TS切片,能够避免边缘拉流节点切片带来的卡顿、画面异常等问题,提升直播质量。
可选的,上述实施例中,直播场景可以是纯视频直播、纯音频直播或音视频混合直播场景。纯视频直播场景中,观众只能看到图像无法听到声音;纯音频直播场景中,只有声音没有图像;音视频混合场景中,观众在播放端看到直播图像的同时能够听到声音。
当所述直播数据包是第X个满足预设条件的直播数据包时,边缘推流节点针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包之前,还确定所述第X个满足预设条件的直播数据包对应的直播场景;根据所述直播场景,确定所述预设条件。
示例性的,边缘推流节点判断来自所述主播端的直播数据包之前预设时长内的直播数据包中是否存在关键帧,若存在关键帧,则说明直播场景是纯视频直播或音视频混合直播场景。若不存在关键帧而是仅存在纯音频数据包,则认为直播场景是纯音频直播。
采用该种方案,根据预设时长内的直播数据包中是否存在关键帧从而确定出直播场景,实现不同直播场景中的切片。
可选的,上述实施例中当所述直播场景是纯视频直播或音视频混合直播场景时,所述预设条件包括来自主播端的直播数据包为关键帧;当所述直播场景是纯视频直播场景时,所述预设条件包括来自所述主播端的直播数据包之前预设时长内的直播数据包均为纯音频数据包。
示例性的,纯视频直播和音视频混合直播中,预设条件包括:直播数据包为关键帧。例如,直播数据包为边缘推流节点接收到的第1个关键帧或或第N个关键帧;再如,直播数据包为边缘推流节点接收到元数据后第一次接收到的关键帧。
纯音频直播场景中,预设条件包括:直播数据包是纯音频数据包。例如,直播数据包为边缘推流节点接收到的第一个纯音频数据包;再如,直播数据包为边缘推流节点接收到元数据后第一次接收到的纯音频数据包;又如,边缘推流节点接收该直播数据包之前,预设时长内接收到的直播数据包均为纯音频数据包,此时,边缘推流节点针对该直播数据包生成AMF数据包。
采用该种方案,针对不同的场景设置不同的预设条件,实现对不同直播场景的直播数据包的准确切片的目的。
可选的,上述实施例中,纯视频直播和音视频混合直播中,当来自主播端的直播数据包为边缘推流节点接收到的首个直播数据包时,边缘推流节点判断第1个直播数据包是否为关键帧,若第1个直播数据包是关键帧,则将这个直播数据包作为第1个满足预设条件的直播数据包。针对第1个满足预设条件的直播数据包生成第1个AMF数据包,第1个AMF数据包包含切片名称、切片序列号等。之后,边缘推流节点向中心节点发送第1个AMF数据包以及第1个满足预设条件的直播数据包。若第1个直播数据包不是音视频数据包,而是配置帧等,则无需生成AMF数据包。
边缘推流节点生成第1个AMF数据包的同时,根据第1个直播数据包的时间戳初始化前序时间戳,前序时间戳用于指示切片的起始位置。之后,边缘推流节点维护本地的前序时间戳,需要更新前序时间戳时,对前序时间戳进行更新。第1个直播数据包的时间戳指:主播端给第1个直播数据包打上的时间戳。
同理,纯音频直播场景中,边缘推流节点首次接收到的纯音频数据包时,将该纯音频数据包作为第1个满足预设条件的直播数据包,则针对第1个直播数据包生成第1个AMF数据包。
采用该种方案,边缘推流节点根据第1个直播数据包生成第1个AMF数据包,从而保证中心节点识别到第1个AMF数据包后,后续根据AMF数据包中的切片名、切片时长等对直播数据包进行切片。
可选的,上述实施例中,边缘推流节点生成第1个AMF数据包的过程中,根据接收到第1个满足预设条件的直播数据包的系统时间,初始化第1个AMF数据包包含的切片名。
示例性的,假设边缘推流节点为linux系统,则系统时间就是linux系统的时间,该linux时间例如为一个毫秒级的时间,边缘推流节点将该系统时间作为第1个AMF数据包中的切片名。后续每次生成AMF数据包时,若AMF数据包中的切片名发生变化,则是在上一个切片名的基础上递增1。假设从未发生过重推,即边缘推流节点和中心节点之间的链路未发生中断,边缘推流节点从未向中心节点重新推送直播数据包,则中心节点接收到的AMF数据包中的切片名一定是大于之前接收到的AMF数据包中的切片名。若发生重推,则中心节点接收到的AMF数据包中的切片名可能会小于或等于之前接收到的AMF数据包中的切片名。
而且发生重推后,若边缘推流节点接收到来自直播端新的直播数据包需要生成新的AMF数据包,则继续使用系统时间对新的AMF数据包中的切片名进行初始化,初始化后的切片名肯定是大于之前的AMF数据包中的切片名的,因此,后续播放端播放时不会发生倒退现象。倘若使用随机数对AMF数据包中的切片名进行初始化,则重推后初始化出的切片名很有可能小于重推之前初始化得到的切片名,导致播放端播放时会发生倒退现象。
需要说明的是,虽然上述是以第1个AMF数据包中的切片名为系统时间为例、后续新的AMF数据包中若切片名发生变化,则在上一个切片名的基础上递增1为例进行说明。然而,本申请实施例并不限制,其他可行的实现方式中,若不考虑倒退,则第1个AMF数据包中的切片名也可以是随机数、预设值等,后续新的AMF数据包中若切片名发生变化,只要确保新的切片名在上一个切片名的基础上递增1即可。
采用该种方案,推流时AMF数据包中的切片名都是从系统时间开始初始化,而不是从0或其他随机数开始初始化,确保重推时,切片名不会倒退,保证直播质量。
可选的,上述实施例中,当所述边缘推流节点与所述中心节点之间的线路中断需要重新推流时,边缘推流节点向所述中心节点发送元数据,所述元数据是所述边缘推流节点生成所述第X个AMF数据包之前最近一次接收到的元数据。之后,边缘推流节点向所述中心节点重新发送所述第X个AMF数据包以及所述第X组直播数据包。
示例性的,边缘推流节点生成第X个AMF数据包,并向中心节点发送第X个AMF数据包以及第X组直播数据包之后,若需要重新推送第X组直播数据包,则边缘推流节点重推之前,先向中心节点发送一个元数据。之后,边缘推流节点向中心节点发送第X个AMF数据包及第X组直播数据包。其中,元数据(metadata)是边缘推流节点生成第X个AMF数据包之前最后一次接收到的元数据。例如,边缘推流节点接收到第3个符合预设条件的直播数据包后,生成第3个AMF数据包。之后,边缘推流节点接收到一个元数据(metadata)1。元数据1后面是一个关键帧和14个非关键帧,边缘推流节点针对该关键帧生成第4个AMF数据包,第四组直播数据包包含1个关键帧和14个非关键帧。其中,边缘推流节点接收到元数据1的原因是:主播端发生改变编码方式、改变帧率、改变码率等情况中的任意一个情况后,主播端向边缘推流节点发送元数据1,边缘推流节点向中心节点发送该元数据1。
需要重推时,边缘推流节点向中心节点再次发送元数据以及第X个AMF数据包和第X组直播数据包。中心节点接收到元数据后,根据第X个AMF数据包中的切片名确定是否丢弃第X组直播数据包。若第X个AMF数据包中的切片名小于或等于目标AMF数据包包含的切片名时,丢弃所述第X组直播数据包。若第X个AMF数据包中的切片名大于目标AMF数据包包含的切片名时,则对第X组直播数据包切片,例如,把第X组直播数据包封装到新的TS切片中,或者,把第X组直播数据包拼接到第X-1组直播数据包所在的TS切片中。其中,目标AMF数据包是所述中心节点接收到所述元数据之前最后一次接收到的AMF数据包。
采用该种方案,中心节点接收到AMF数据包后,能够根据AMF数据包中的切片名确定出一组直播数据包是否为重推数据包,当一组直播数据包是重推数据包时,丢弃该组直播数据包,通过明确的去重机制,当切换中心节点时,保证TS切片内容不会倒退,保证播放端不会发生画面重复等,提升了直播质量。
可选的,上述实施例中,当所述直播数据包是第X个满足预设条件的直播数据包时,边缘推流节点针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包时,确定所述第X个满足预设条件的直播数据包与所述边缘推流节点接收到元数据的位置关系之后,边缘推流节点根据所述位置关系生成第X个动作消息格式AMF数据包。
示例性的,不论是纯音频直播场景、纯视频直播场合还是音视频混合直播场景,边缘推流节点接收到来自主播端的直播数据包后,若该直播数据包不是首个直播数据包,则边缘推流节点进一步的判断该直播数据包是否为最近一次接收到元数据后的第一个直播数据包,若来自主播端的直播数据包是最近一次接收到元数据后的第一个直播数据包,则根据第X-1个AMF数据包包含的切片名确定第X个AMF数据包包含的切片名,进而生成第X个AMF数据包。若来自主播端的直播数据包不是最近一次接收到元数据后的第一个直播数据包,则根据第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值关系确定第X个AMF数据包包含的切片名,进而生成第X个AMF数据包。
采用该种方案,边缘推流节点根据第X个满足预设条件的直播数据包与边缘推流节点接收到元数据的位置关系生成第X个AMF数据包,由于边缘推流节点接收到元数据意味着主播端切片头发生改变等,生成AMF数据包的过程中充分考虑元数据,通过生成准确的AMF数据包,进而提高切片准确率。
可选的,上述实施例中,边缘推流节点根据所述位置关系生成第X个动作消息格式AMF数据包时,当所述位置关系指示所述第X个满足预设条件的直播数据包不是所述边缘推流节点最近接收到元数据后的第一个直播数据包时,根据所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值确定所述第X个AMF数据包包含的切片名,所述前序时间戳用于指示切片的起始位置;根据所述第X个AMF数据包包含的切片名,生成所述第X个AMF数据包。
示例性的,当第X个满足预设条件的直播数据包不是边缘推流节点最近一次接收到元数据后的第一个直播数据包时,说明主播端最近没有改变切片头等,因此,需要进一步的根据第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值确定第X个AMF数据包包含的切片名,第X个AMF数据包包含的切片名用于指示中心节点切片时,将第X组直播数据包封装到当前的切片中,还是封装到新的切片中。
采用该种方案,当主播端未改变切片头时,根据第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值等生成第X个AMF数据包,实现未改变切片头时准确切片的目的。
可选的,上述实施例中,边缘推流节点根据所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值确定所述第X个AMF数据包包含的切片名时,当所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值大于或等于切片时长时,确定所述第X个AMF数据包包含的切片名大于第X-1个AMF数据包包含的切片名。
示例性的,第X个AMF数据包包含的切片名大于或等于第X-1个AMF数据包包含的切片名,意味着中心节点要将第X组直播数据包封装到新的切片中。边缘推流节点根据第X-1个AMF数据包包含的切片名确定第X个AMF数据包包含的切片名。例如,边缘推流节点对第X-1个AMF数据包包含的切片名递增1得到第X个AMF数据包包含的切片名。
采用该种方案,当时间戳的差值大于或等于切片时长时,边缘推流节点生成的第X个AMF数据包中的切片名发生更新,且大于之前的AMF数据包的切片名,便于中心节点识别。
可选的,上述实施例中,边缘推流节点根据所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值确定所述第X个AMF数据包包含的切片名时,当所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值小于切片时长时,确定所述第X个AMF数据包包含的切片名等于第X-1个AMF数据包包含的切片名。
示例性的,第X个AMF数据包包含的切片名小于第X-1个AMF数据包包含的切片名,意味着中心节点要将第X组直播数据包封装到当前的切片中,即无需封装新的切片。边缘推流节点将第X-1个AMF数据包包含的切片名作为第X个AMF数据包包含的切片名。
采用该种方案,当时间戳的差值小于切片时长时,边缘推流节点生成的第X个AMF数据包中的切片名未发生更新,便于中心节点确认将第X组直播数据包封装到当前的切片中。
可选的,上述实施例中,边缘推流节点根据所述位置关系生成第X个动作消息格式AMF数据包时,当所述位置关系指示所述第X个满足预设条件的直播数据包是所述边缘推流节点最近接收到元数据后的第一个直播数据包时,边缘推流节点确定所述第X个AMF数据包包含的切片名大于第X-1个AMF数据包包含的切片名。之后,边缘推流节点根据所述第X个AMF数据包包含的切片名,生成所述第X个AMF数据包。
示例性的,当第X个满足预设条件的直播数据包是边缘推流节点最近一次接收到元数据后的第一个直播数据包时,说明主播端最近改变切片头等,此时,为了避免后续播放端抖动、画面异常等,需要指示中心节点将第X组直播数据包封装到新的切片中,因此,需要根据第X-1个AMF数据包包含的切片名,更新第X个AMF数据包中的切片名。例如,边缘推流节点对第X-1个AMF数据包包含的切片名递增1得到第X个AMF数据包包含的切片名。
采用该种方案,当主播端改变切片头时,根据第X-1个AMF数据包包含的切片名,更新第X个AMF数据包中的切片名进而生成第X个AMF数据包,实现改变切片头时准确切片的目的。
可选的,上述实施例中,若所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值大于或等于切片时长,或者,第X个满足预设条件的直播数据包是所述边缘推流节点最近接收到元数据后的第一个直播数据包,则边缘推流节点生成第X个AMF数据包时,将第X个AMF数据包中用于指示切片头改变的标志位(ts_header_chg)置为真(true)。同时,将前序时间戳更新为第X个满足预设条件的直播数据包的时间戳。
对于中心节点而言,中心节点接收到第X个AMF数据包后,若第X个AMF数据包中切片头改变的标志位为真且第X组直播数据包不是推流上来的重复数据时,则后续生成M3U8文件的时候,在第X组直播数据包对应的TS切片中增加重新初始化标签(#EXT-X-DISCONTINUITY)。
拉流过程中,边缘拉流节点接收到来自播放端的拉流请求后,向中心节点发送索引请求以请求M3U8索引文件。中心节点根据最新生成的预设数量的TS切片生成M3U8索引文件,该M3U8索引文件保护预设数量的TS切片中各TS切片的链接地址。同时,若预设数量的TS切片中存在目标切片,则M3U8文件中还包括该目标切片的重新初始化标签,重新初始化标签用于指示播放器播放所述目标标签时重新初始化,所述目标切片中用于指示切片头改变的标志位置为真。
播放器通过边缘拉流节点获取到M3U8索引文件后,若M3U8索引文件指示的TS切片中,存在一个具有重新初始化标签目标切片,则播放端根据M3U8索引文件包含的链接地址下载该TS切片后,重新初始化后再播放TS切片。
采用该种方案,通过将第X个AMF数据包中用于指示切片头改变的标志位置为真,使得中心节点能够确定出是否需要增加重新初始化标签,保证播放端能够及时重新初始化的同时,实现及时更新前序时间戳的目的。也就是说,当发生“换头”时,播放端能够正常播放。
下面,对纯视频直播和音视频混合直播中,来自主播端的直播数据包不是边缘推流节点首次接收到的直播数据包,且预设条件例如为来自主播端的直播数据包为关键帧时,边缘推流节点如何生成第X个AMF数据包进行详细说明。示例性的,请参见图3。图3是本申请示例提供的切片方法的另一个流程图。本示例包括:
301、当来自所述主播端的直播数据包为关键帧时,边缘推流节点确定来自所述主播端的直播数据包为所述第X个满足预设条件的直播数据包,所述X≥2。
示例性的,每次接收到一个直播数据包后,边缘推流节点都会确定该直播数据包是否为关键帧,如果是关键帧,则将该直播数据包作为第X个满足预设条件的关键帧。如果直播数据包不是关键帧,则无需生成第X个AMF数据包。
302、边缘推流节点确定所述关键帧的时间戳与前序时间戳的差值是否大于或等于切片时长,所述前序时间戳用于指示切片的起始位置。当关键帧的时间戳与前序时间戳的差值大于或等于切片时长时,执行步骤303;当关键帧的时间戳与前序时间戳的差值小于切片时长时,执行步骤304。
示例性的,切片时长例如为3秒、6秒、10秒等,本申请实施例并不限制。边缘推流节点本地维护一个前序时间戳,前序时间戳的初始值为第1个满足预设条件的直播数据包的时间戳。
303、生成所述第X个AMF数据包,并将所述前序时间戳更新为所述第X个满足所述预设条件的直播数据包的时间戳,所述第X个AMF数据包包含的切片名是第X-1个AMF数据包包含的切片名递增得到的。
304、生成所述第X个AMF数据包,所述第X个AMF数据包包含的切片名与所述第X-1个AMF数据包包含的切片名相同。
步骤303和步骤304中,只要直播数据包是关键帧,不论时间戳的差值是否大于或等于前序时间戳,边缘推流节点都会生成第X个AMF数据包。但是,步骤303和步骤304中的第X个AMF数据包中切片名不同。步骤303中生成的第X个AMF数据包中切片名在第X-1个AMF数据包的切片名的基础上递增1。而步骤304中生成的第X个AMF数据包中切片名与第X-1个AMF数据包中的切片名相同。
采用该种方案,纯视频直播或音视频混合直播场景中,边缘推流节点根据时间戳差值生成第X个AMF数据包,用于指导中心节点对第X组直播数据包进行切片,实现准确指导中心节点切片的目的。
对于中心节点而言,中心节点接收第X个AFM数据包,并依据第X个AFM数据包对第X组直播数据包进行切片。其中,第X组直播数据包是边缘推流节点实时按照接收顺序推送给中心节点的。切片过程中,中心节点接收到第X个AFM数据包后,从第X个AMF数据包中提取出切片名。然后,中心节点判断从第X个AMF数据包中提取出的切片名与第X-1个AFM数据包中的切片名是否相同。若两者相同,则将第X组直播数据包中的直播数据包依次拼接到第X-1组直播数据包所在的TS切片中。若两者不同,则将第X组直播数据包封装到新的TS切片中。
采用该种方案,中心节点根据第X个AMF数据包对第X组直播数据包进行切片,由于各中心节点均是采用相同的方式对同一组直播数据包进行切片,因此,能保证切片一致性。当边缘拉流节点切换中心节点时,能够保证切换后的中心节点响应的内容和切换前的中心节点响应的内容一致,进而保证播放端不会发生异常,提高直播质量。
可选的,上述的预设条件为来自主播端的直播数据包为所述边缘推流节点接收到元数据后的第一个直播数据包。
示例性的,直播过程中,主播端可能会发送改变编码方式、帧率、分辨率、码率等现象。这种现象称之为切片头改变,俗称“换头”。例如,主播端将编码格式从H264切换为H265;又如,主播端将分辨率从720P切换为1080P。主播端每次“换头”后,均向边缘推流节点发送元数据(metadata)。边缘推流节点一旦接收到元数据,则将接收到元数据后的第一个直播数据包作为第X个满足预设条件的直播数据包,并针对所述第X个满足预设条件的直播数据包生成所述第X个AMF数据包,所述第X个AMF数据包包含的切片名是第X-1个AMF数据包包含的切片名递增得到的。
例如,边缘推流节点接收到第3个满足预设条件的直播数据包后,接收到一系列非关键帧等。之后,接收到一个元数据。边缘推流节点接收到元数据后,接收到一个关键帧,则将该关键帧作为第4个满足预设条件的直播数据包。针对该第4个满足预设条件的直播数据包生成所述第4个AMF数据包。第4个AMF数据包包含的切片名是第3个AMF数据包包含的切片名递增得到的。
本实施例中,边缘推流节点接收到元数据后,则认为主播端改变编码方式、帧率、分辨率或码率等。边缘推流节点生成的第X个AMF数据包中的切片名相较于第X-1个AMF数据包中的切片名发生变化,从而指示中心节点将第X组直播数据包封装到新的切片中。
采用该种方案,每次“换头”后,中心节点将换头后的第一组直播数据包封装到新的TS切片中,便于播放器播放时及时重新初始化。
可选的,上述实施例中,纯音频直播场景中,预设条件为来自所述主播端的直播数据包之前预设时长内的直播数据包均为纯音频数据包。也就是说,边缘推流节点接收到一个直播数据包之前,若预设时长内接收到的直播数据包均为纯音频数据包,不包含视频帧,则说明这是一个纯音频直播场景。其中预设时长例如为一个TS切片时长等。
当来自所述直播端的直播数据包满足所述预设条件时,边缘推流节点将该直播数据包作为第X个满足预设条件的直播数据包。边缘推流节点确定所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值是否大于或等于切片时长。
若所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值大于或等于切片时长,则生成所述第X个AMF数据包,并将所述前序时间戳更新为所述第X个满足所述预设条件的直播数据包的时间戳,所述第X个AMF数据包包含的切片名是第X-1个AMF数据包包含的切片名递增得到的。
若所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值小于切片时长,则生成所述第X个AMF数据包,所述第X个AMF数据包包含的切片名与所述第X-1个AMF数据包包含的切片名相同。
本实施例中,纯音频直播场景中,不论时间戳的差值是否大于或等于前序时间戳,边缘推流节点都会生成第X个AMF数据包。但是,不同情况下的第X个AMF数据包不同。当时间戳的差值大于或等于前序时间戳时,则第X个AMF数据包中切片名在第X-1个AMF数据包的切片名的基础上递增1。若时间戳的差值小于前序时间戳,则第X个AMF数据包中切片名与第X-1个AMF数据包中的切片名相同。
采用该种方案,能够实现纯音频直播场景中,TS切片一致性的目的。
可选的,上述实施例中,纯视频场景或音视频混合场景中,若中心节点连续收到a个关键帧,且接收该a个关键帧的过程中没有接收到AMF数据包,则认为边缘推流节点没有生成AMF数据包的能力,采用传统的TS切片方式进行TS切片。其中,a≥2,可根据实际需求设置a的大小。
纯音频直播场景中,若中心节点在一定时长内未接收到AMF数据包,则认为边缘推流节点没有生成AMF数据包的能力,采用传统的TS切片方式进行TS切片。
针对FLV、实时消息传输协议(Real Time Messaging Protocol,RTMP)的拉流请求,边缘拉流节点去掉AMF数据包。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图4为本申请实施例提供的一种切片装置的示意图。该切片装置400包括:接收模块41、处理模块42和发送模块43。
接收模块41,用于接收来自主播端的直播数据包;
处理模块42,用于当所述直播数据包是第X个满足预设条件的直播数据包时,针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包,所述第X个AMF数据包用于指导中心节点对第X组直播数据包切片,所述第X组直播数据包包括所述第X个满足预设条件的直播数据包,以及所述边缘推流节点接收到所述第X个满足预设条件的直播数据包之后、接收第X+1个满足预设条件的直播数据包之前接收到的直播数据包,其中,X≥1且为整数;
发送模块43,用于向所述中心节点发送所述第X个AMF数据包。
一种可行的实现方式中,所述处理模块42针对所述第X个满足预设条件的直播数据包生成第X个网络协议AMF数据包时,用于确定所述第X个满足预设条件的直播数据包与所述边缘推流节点接收到元数据的位置关系;根据所述位置关系生成第X个动作消息格式AMF数据包。
一种可行的实现方式中,所述处理模块42根据所述位置关系生成第X个动作消息格式AMF数据包时,用于当所述位置关系指示所述第X个满足预设条件的直播数据包不是所述边缘推流节点最近接收到元数据后的第一个直播数据包时,根据所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值确定所述第X个AMF数据包包含的切片名,所述前序时间戳用于指示切片的起始位置;根据所述第X个AMF数据包包含的切片名,生成所述第X个AMF数据包。
一种可行的实现方式中,所述处理模块42根据所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值确定所述第X个AMF数据包包含的切片名时,用于当所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值大于或等于切片时长时,确定所述第X个AMF数据包包含的切片名大于第X-1个AMF数据包包含的切片名。
一种可行的实现方式中,所述处理模块42根据所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值确定所述第X个AMF数据包包含的切片名时,用于当所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值小于切片时长时,确定所述第X个AMF数据包包含的切片名等于第X-1个AMF数据包包含的切片名
一种可行的实现方式中,所述处理模块42根据所述位置关系生成第X个动作消息格式AMF数据包时,用于当所述位置关系指示所述第X个满足预设条件的直播数据包是所述边缘推流节点最近接收到元数据后的第一个直播数据包时,确定所述第X个AMF数据包包含的切片名大于第X-1个AMF数据包包含的切片名;根据所述第X个AMF数据包包含的切片名,生成所述第X个AMF数据包。
一种可行的实现方式中,所述处理模块42还用于将所述第X个AMF数据包中用于指示切片头改变的标志位置为真;将所述前序时间戳更新为所述第X个满足所述预设条件的直播数据包的时间戳。
一种可行的实现方式中,所述处理模块42针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包之前,还用于确定所述第X个满足预设条件的直播数据包对应的直播场景;根据所述直播场景,确定所述预设条件。
一种可行的实现方式中,当所述直播场景是纯视频直播或音视频混合直播场景时,所述预设条件包括来自主播端的直播数据包为关键帧;当所述直播场景是纯视频直播场景时,所述预设条件包括来自所述主播端的直播数据包之前预设时长内的直播数据包均为纯音频数据包。
一种可行的实现方式中,当所述直播数据包是第X个满足预设条件的直播数据包时,所述处理模块42针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包时,用于当来自主播端的直播数据包为主播端首次推送的关键帧或纯音频数据包时,将来自主播端的直播数据包作为第1个满足预设条件的直播数据包,针对第1个满足预设条件的直播数据包生成第1个网络协议AMF数据包,并根据所述第1个直播数据包的时间戳初始化前序时间戳。
一种可行的实现方式中,所述处理模块42还用于根据接收所述第1个满足预设条件的直播数据包的系统时间,初始化所述第1个AMF数据包包含的切片名。
一种可行的实现方式中,所述发送模块43向所述中心节点发送所述第X个AMF数据包之后,还用于当所述边缘推流节点与所述中心节点之间的线路中断需要重新推流时,向所述中心节点发送元数据,所述元数据是所述边缘推流节点生成所述第X个AMF数据包之前最近一次接收到的元数据;向所述中心节点重新发送所述第X个AMF数据包以及所述第X组直播数据包。
本申请实施例提供的切片装置,可以执行上述实施例中边缘推流节点的动作,其实现原理和技术效果类似,在此不再赘述。
图5为本申请实施例提供的另一种切片装置的示意图。该切片装置500包括:收发模块51、处理模块52。
收发模块51,用于接收来自边缘推流节点的第X个网络协议AMF数据包,所述第X个AMF数据包是所述边缘推流节点针对第X个满足预设条件的直播数据包生成的,所述X≥1且为整数;
处理模块52,用于根据所述第X个AMF数据包对第X组直播数据包切片,所述第X组直播数据包包括所述第X个满足预设条件的直播数据包,以及所述中心节点接收到所述第X个满足预设条件的直播数据包之后、接收第X+1个满足预设条件的直播数据包之前接收到的直播数据包。
一种可行的实现方式中,所述处理模块52用于确定所述第X个AMF数据包与所述中心节点最近一次接收到元数据的位置关系;根据所述位置关系对第X组直播数据包切片。
一种可行的实现方式中,所述处理模块52根据所述位置关系对第X组直播数据包切片时,用于当所述位置关系指示所述X个AMF数据包不是所述中心节点最近一次接收到元数据后的第一个AMF数据包时,从所述第X个AMF数据包中提取出切片名;当所述第X个AMF数据包包含的切片名与第X-1个AMF数据包包含的切片名相同时,将所述第X组直播数据包封装到所述第X-1组直播数据包对应的传输流TS切片中;当所述第X个AMF数据包包含的切片名与所述第X-1个AMF数据包包含的切片名不同时,将所述第X组直播数据封装到新的TS切片中。
一种可行的实现方式中,所述处理模块52根据所述位置关系对第X组直播数据包切片时,用于当所述位置关系指示所述X个AMF数据包是所述中心节点最近一次接收到元数据后的第一个AMF数据包时,确定所述第X个AMF数据包包含的切片名是否小于或等于目标AMF数据包包含的切片名,所述目标AMF数据包是所述中心节点接收到所述元数据之前最后一次接收到的AMF数据包;当所述第X个AMF数据包包含的切片名小于或等于所述目标AMF数据包包含的切片名时,丢弃所述第X组直播数据包
一种可行的实现方式中,所述收发模块51在所述处理模块52根据所述第X个AMF数据包对第X组直播数据包切片之后,还用于接收来自边缘拉流节点的索引请求,所述索引请求用于请求M3U8索引文件;
所述处理模块52,还用于根据所述中心节点最近生成的预设数量的TS切片生成M3U8索引文件,所述M3U8索引文件包含所述预设数量的TS切片中各TS切片的链接地址;
所述收发模块51,用于向所述边缘拉流节点发送所述M3U8索引文件。
一种可行的实现方式中,当所述预设数量的切片包含目标切片时,所述M3U8文件还包含所述重新初始化标签,所述重新初始化标签用于指示播放器播放所述目标标签时重新初始化,所述目标切片中用于指示切片头改变的标志位置为真;
本申请实施例提供的切片装置,可以执行上述实施例中中心节点的动作,其实现原理和技术效果类似,在此不再赘述。
图6为本申请实施例提供的一种电子设备的结构示意图。如图6所示,该电子设备600例如为上述的边缘推流节点或中心节点,该电子设备600包括:
处理器61和存储器62;
所述存储器62存储计算机指令;
所述处理器61执行所述存储器62存储的计算机指令,使得所述处理器61执行如上边缘推流节点实现的切片方法;或者,使得所述处理器61执行如上中心节点实现的切片方法。
处理器61的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
可选地,该电子设备600还包括通信部件63。其中,处理器61、存储器62以及通信部件63可以通过总线64连接。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如上边缘推流节点或中心节点实施的切片方法。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包含计算机程序,计算机程序被处理器执行时实现如上边缘推流节点或中心节点实施的切片方法。
本领域技术人员在考虑说明书及实践本申请实施例公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (22)
1.一种切片方法,其特征在于,应用于边缘推流节点,包括:
接收来自主播端的直播数据包;
当所述直播数据包是第X个满足预设条件的直播数据包时,针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包,所述第X个AMF数据包用于指导中心节点对第X组直播数据包切片,所述第X组直播数据包包括所述第X个满足预设条件的直播数据包,以及所述边缘推流节点接收到所述第X个满足预设条件的直播数据包之后、接收第X+1个满足预设条件的直播数据包之前接收到的直播数据包,其中,X≥1且为整数;
向所述中心节点发送所述第X个AMF数据包。
2.根据权利要求1所述的方法,其特征在于,所述当所述直播数据包是第X个满足预设条件的直播数据包时,针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包,包括:
确定所述第X个满足预设条件的直播数据包与所述边缘推流节点接收到元数据的位置关系;
根据所述位置关系生成第X个动作消息格式AMF数据包。
3.根据权利要求2所述的方法,其特征在于,所述根据所述位置关系生成第X个动作消息格式AMF数据包,包括:
当所述位置关系指示所述第X个满足预设条件的直播数据包不是所述边缘推流节点最近接收到元数据后的第一个直播数据包时,根据所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值确定所述第X个AMF数据包包含的切片名,所述前序时间戳用于指示切片的起始位置;
根据所述第X个AMF数据包包含的切片名,生成所述第X个AMF数据包。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值确定所述第X个AMF数据包包含的切片名,包括:
当所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值大于或等于切片时长时,确定所述第X个AMF数据包包含的切片名大于第X-1个AMF数据包包含的切片名。
5.根据权利要求3所述的方法,其特征在于,所述根据所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值确定所述第X个AMF数据包包含的切片名,包括:
当所述第X个满足预设条件的直播数据包的时间戳与前序时间戳的差值小于切片时长时,确定所述第X个AMF数据包包含的切片名等于第X-1个AMF数据包包含的切片名。
6.根据权利要求2所述的方法,其特征在于,所述根据所述位置关系生成第X个动作消息格式AMF数据包,包括:
当所述位置关系指示所述第X个满足预设条件的直播数据包是所述边缘推流节点最近接收到元数据后的第一个直播数据包时,确定所述第X个AMF数据包包含的切片名大于第X-1个AMF数据包包含的切片名;
根据所述第X-1个AMF数据包包含的切片名,生成所述第X个AMF数据包。
7.根据权利要求4或6所述的方法,其特征在于,还包括:
将所述第X个AMF数据包中用于指示切片头改变的标志位置为真;
将前序时间戳更新为所述第X个满足所述预设条件的直播数据包的时间戳,所述前序时间戳用于指示切片的起始位置。
8.根据权利要求1-6任一项所述的方法,其特征在于,所述当所述直播数据包是第X个满足预设条件的直播数据包时,针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包之前,还包括:
确定所述第X个满足预设条件的直播数据包对应的直播场景;
根据所述直播场景,确定所述预设条件。
9.根据权利要求8所述的方法,其特征在于,
当所述直播场景是纯视频直播或音视频混合直播场景时,所述预设条件包括来自主播端的直播数据包为关键帧;
当所述直播场景是纯视频直播场景时,所述预设条件包括来自所述主播端的直播数据包之前预设时长内的直播数据包均为纯音频数据包。
10.根据权利要求1-6任一项所述的方法,其特征在于,所述当所述直播数据包是第X个满足预设条件的直播数据包时,针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包,包括:
当来自主播端的直播数据包为主播端首次推送的关键帧或纯音频数据包时,将来自主播端的直播数据包作为第1个满足预设条件的直播数据包,针对第1个满足预设条件的直播数据包生成第1个网络协议AMF数据包,并根据所述第1个直播数据包的时间戳初始化前序时间戳。
11.根据权利要求10所述的方法,其特征在于,还包括:
根据接收所述第1个满足预设条件的直播数据包的系统时间,初始化所述第1个AMF数据包包含的切片名。
12.根据权利要求1-6任一项所述的方法,其特征在于,所述向所述中心节点发送所述第X个AMF数据包之后,还包括:
当所述边缘推流节点与所述中心节点之间的线路中断需要重新推流时,向所述中心节点发送元数据,所述元数据是所述边缘推流节点生成所述第X个AMF数据包之前最近一次接收到的元数据;
向所述中心节点重新发送所述第X个AMF数据包以及所述第X组直播数据包。
13.一种切片方法,其特征在于,应用于中心节点,包括:
接收来自边缘推流节点的第X个网络协议AMF数据包,所述第X个AMF数据包是所述边缘推流节点针对第X个满足预设条件的直播数据包生成的,所述X≥1且为整数;
根据所述第X个AMF数据包对第X组直播数据包切片,所述第X组直播数据包包括所述第X个满足预设条件的直播数据包,以及所述中心节点接收到所述第X个满足预设条件的直播数据包之后、接收第X+1个满足预设条件的直播数据包之前接收到的直播数据包。
14.根据权利要求13所述的方法,其特征在于,所述根据所述第X个AMF数据包对第X组直播数据包切片,包括:
确定所述第X个AMF数据包与所述中心节点最近一次接收到元数据的位置关系;
根据所述位置关系对第X组直播数据包切片。
15.根据权利要求14所述的方法,其特征在于,所述根据所述位置关系对第X组直播数据包切片,包括:
当所述位置关系指示所述X个AMF数据包不是所述中心节点最近一次接收到元数据后的第一个AMF数据包时,从所述第X个AMF数据包中提取出切片名;
当所述第X个AMF数据包包含的切片名与第X-1个AMF数据包包含的切片名相同时,将所述第X组直播数据包封装到所述第X-1组直播数据包对应的传输流TS切片中;
当所述第X个AMF数据包包含的切片名与所述第X-1个AMF数据包包含的切片名不同时,将所述第X组直播数据封装到新的TS切片中。
16.根据权利要求14所述的方法,其特征在于,所述根据所述位置关系对第X组直播数据包切片,包括:
当所述位置关系指示所述X个AMF数据包是所述中心节点最近一次接收到元数据后的第一个AMF数据包时,确定所述第X个AMF数据包包含的切片名是否小于或等于目标AMF数据包包含的切片名,所述目标AMF数据包是所述中心节点接收到所述元数据之前最后一次接收到的AMF数据包;
当所述第X个AMF数据包包含的切片名小于或等于所述目标AMF数据包包含的切片名时,丢弃所述第X组直播数据包。
17.根据权利要求13-16任一项所述的方法,其特征在于,所述根据所述第X个AMF数据包对第X组直播数据包切片之后,还包括:
接收来自边缘拉流节点的索引请求,所述索引请求用于请求M3U8索引文件;
根据所述中心节点最近生成的预设数量的TS切片生成M3U8索引文件,所述M3U8索引文件包含所述预设数量的TS切片中各TS切片的链接地址;
向所述边缘拉流节点发送所述M3U8索引文件。
18.根据权利要求17所述的方法,其特征在于,
当所述预设数量的切片包含目标切片时,所述M3U8文件还包含重新初始化标签,所述重新初始化标签用于指示播放器播放所述目标标签时重新初始化,所述目标切片中用于指示切片头改变的标志位置为真。
19.一种切片装置,其特征在于,包括:
接收模块,用于接收来自主播端的直播数据包;
处理模块,用于当所述直播数据包是第X个满足预设条件的直播数据包时,针对所述第X个满足预设条件的直播数据包生成第X个动作消息格式AMF数据包,所述第X个AMF数据包用于指导中心节点对第X组直播数据包切片,所述第X组直播数据包包括所述第X个满足预设条件的直播数据包,以及边缘推流节点接收到所述第X个满足预设条件的直播数据包之后、接收第X+1个满足预设条件的直播数据包之前接收到的直播数据包,其中,X≥1且为整数;
发送模块,用于向所述中心节点发送所述第X个AMF数据包。
20.一种切片装置,其特征在于,包括:
收发模块,用于接收来自边缘推流节点的第X个网络协议AMF数据包,所述第X个AMF数据包是所述边缘推流节点针对第X个满足预设条件的直播数据包生成的,所述X≥1且为整数;
处理模块,用于根据所述第X个AMF数据包对第X组直播数据包切片,所述第X组直播数据包包括所述第X个满足预设条件的直播数据包,以及中心节点接收到所述第X个满足预设条件的直播数据包之后、接收第X+1个满足预设条件的直播数据包之前接收到的直播数据包。
21.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时使得所述电子设备实现如权利要求1至18任一所述的方法。
22.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至18任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111299337.3A CN114245153B (zh) | 2021-11-04 | 2021-11-04 | 切片方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111299337.3A CN114245153B (zh) | 2021-11-04 | 2021-11-04 | 切片方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114245153A true CN114245153A (zh) | 2022-03-25 |
CN114245153B CN114245153B (zh) | 2023-10-24 |
Family
ID=80743747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111299337.3A Active CN114245153B (zh) | 2021-11-04 | 2021-11-04 | 切片方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114245153B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114598428A (zh) * | 2022-05-10 | 2022-06-07 | 北京中科大洋科技发展股份有限公司 | 一种基于srt协议的冗余推流方法 |
CN115373645A (zh) * | 2022-10-24 | 2022-11-22 | 济南新语软件科技有限公司 | 一种基于可动态定义的复杂数据包操作方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107809681A (zh) * | 2017-10-19 | 2018-03-16 | 广东省南方数字电视无线传播有限公司 | 切片视频传输的方法及装置 |
CN108600859A (zh) * | 2018-03-30 | 2018-09-28 | 深圳市网心科技有限公司 | 一种数据切片方法及系统 |
US20200120721A1 (en) * | 2018-10-11 | 2020-04-16 | Verizon Patent And Licensing Inc. | Method and system for network slice identification and selection |
CN111416745A (zh) * | 2020-03-26 | 2020-07-14 | 腾讯科技(深圳)有限公司 | 一种网络切片确定方法和相关装置 |
CN113596932A (zh) * | 2020-04-30 | 2021-11-02 | 大唐移动通信设备有限公司 | 信息提供、生成、目标基站确定方法及设备、介质 |
-
2021
- 2021-11-04 CN CN202111299337.3A patent/CN114245153B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107809681A (zh) * | 2017-10-19 | 2018-03-16 | 广东省南方数字电视无线传播有限公司 | 切片视频传输的方法及装置 |
CN108600859A (zh) * | 2018-03-30 | 2018-09-28 | 深圳市网心科技有限公司 | 一种数据切片方法及系统 |
US20200120721A1 (en) * | 2018-10-11 | 2020-04-16 | Verizon Patent And Licensing Inc. | Method and system for network slice identification and selection |
CN111416745A (zh) * | 2020-03-26 | 2020-07-14 | 腾讯科技(深圳)有限公司 | 一种网络切片确定方法和相关装置 |
CN113596932A (zh) * | 2020-04-30 | 2021-11-02 | 大唐移动通信设备有限公司 | 信息提供、生成、目标基站确定方法及设备、介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114598428A (zh) * | 2022-05-10 | 2022-06-07 | 北京中科大洋科技发展股份有限公司 | 一种基于srt协议的冗余推流方法 |
CN115373645A (zh) * | 2022-10-24 | 2022-11-22 | 济南新语软件科技有限公司 | 一种基于可动态定义的复杂数据包操作方法及系统 |
CN115373645B (zh) * | 2022-10-24 | 2023-02-03 | 济南新语软件科技有限公司 | 一种基于可动态定义的复杂数据包操作方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114245153B (zh) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109889543B (zh) | 视频传输的方法、根节点、子节点、p2p服务器和系统 | |
CN110933449B (zh) | 一种外部数据与视频画面的同步方法、系统及装置 | |
CN110430457B (zh) | 异端音视频播放方法、装置及音视频播放系统 | |
US20140129618A1 (en) | Method of streaming multimedia data over a network | |
US10863211B1 (en) | Manifest data for server-side media fragment insertion | |
CN111031385B (zh) | 视频播放的方法及装置 | |
CN108810657B (zh) | 一种设置视频封面的方法和系统 | |
US10701461B2 (en) | Video Processing Method, Terminal and Server | |
CN114245153B (zh) | 切片方法、装置、设备及可读存储介质 | |
US20140109156A1 (en) | Method, terminal, server and system for playing media file | |
CN112752109B (zh) | 视频播放控制方法和系统 | |
EP3490263A1 (en) | Channel switching method and device | |
CN106789976A (zh) | 媒体文件的播放方法、服务端、客户端及系统 | |
CN112616065A (zh) | 一种屏幕镜像发起方法、装置、计算机设备、可读存储介质及屏幕镜像呈现系统 | |
CN112087642A (zh) | 云导播播放方法、云导播服务器及远程管理终端 | |
US20230164398A1 (en) | Video stream control | |
JP2005086362A (ja) | データ多重化方法、データ送信方法およびデータ受信方法 | |
US11825136B2 (en) | Video transcoding method and apparatus | |
US11716503B2 (en) | Method for managing multimedia content, and device for carrying out said method | |
WO2023071467A1 (zh) | 数据去重方法、装置及存储介质 | |
CN108632681B (zh) | 播放媒体流的方法、服务器及终端 | |
WO2016110324A1 (en) | An improved method and apparatus for trick-play in abr streaming | |
WO2012046090A1 (en) | System and method for error detection and data replacement in broadcast services | |
CN115119009A (zh) | 视频对齐方法、视频编码方法、装置及存储介质 | |
KR101690153B1 (ko) | Http 기반 무버퍼링 영상전송 방법을 이용한 실시간 스트리밍 시스템 |
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 |