一种直播流切片同步方法及系统与流程

文档序号:16673905发布日期:2019-01-18 23:47阅读:308来源:国知局
一种直播流切片同步方法及系统与流程

本申请涉及直播技术领域,特别涉及一种直播流切片同步方法及系统。



背景技术:

现有直播技术,采用的流媒体传输协议主要包括flv、dash、hls(httplivestreaming)等。其中,hls协议因其的简洁性及针对http协议的友好性,其已经成为直播上使用较为广泛的标准之一。

hls直播时,需要将不断更新的m3u8文件及不断更替的切片传输到每个直播用户,以进行直播。为了能够可靠的提供切片,一般可以由多个切片服务器提供切片服务,具体可从多个切片服务器中选取出任意一个正常运行的切片服务器,提供切片,当该切片服务器故障时,可以任意切换到其他切片服务器提供切片。这种方式需要保证各个切片服务器的切片同步,但如何实现不同切片服务器之间的切片同步成为问题。



技术实现要素:

为解决上述技术问题,本申请实施例提供一种直播流切片同步方法及系统,以达到实现各个切片服务器同步切片的目的,技术方案如下:

一种直播流切片同步方法,基于直播流切片同步系统,所述直播流切片同步系统包括多个切片服务器,各个所述切片服务器在一个组播组中,所述方法包括:

各个所述切片服务器同步执行切片流程,进行同步切片,所述切片流程,包括:

从切片参数同步节点中获取最新的切片参数;

从设定的组播地址中接收直播视频流,并在所述直播视频流中设定的关键帧位置,根据所述最新的切片参数,判断切片速度是否满足设定条件;

若是,按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数;

若否,调整切片速度,并将利用调整后的切片速度完成的切片的参数保存至所述切片参数同步节点。

优选的,所述在所述直播视频流中设定的关键帧位置,根据所述最新的切片参数,判断切片速度是否满足设定条件,包括:

确定所述关键帧位置对应的切片序号,作为本地切片序号;

从所述最新的切片参数中获取切片序号,并将获取到的切片序号加1的结果作为基准切片序号;

比较所述本地切片序号与所述基准切片序号的大小;

若所述本地切片序号与所述基准切片序号相同,则执行所述按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数的步骤;

若所述本地切片序号小于所述基准切片序号,则所述调整切片速度,包括:加快切片速度。

优选的,所述方法还包括:

若所述本地切片序号大于所述基准切片序号,则确定所述本地切片序号对应的解码时间戳dts,作为本地切片开始的dts;

从所述最新的切片参数中获取解码时间戳dts,并将获取到的dts与设定切片时长之和作为基准dts;

比较所述本地切片开始的dts与所述基准dts的大小;

若所述本地切片开始的dts与所述基准dts相同,则执行所述按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数的步骤;

若所述本地切片开始的dts小于所述基准dts,则所述调整切片速度包括:减慢切片速度;

若所述本地切片开始的dts大于所述基准dts,则所述调整切片速度包括:加快切片速度。

优选的,所述加快切片速度,包括:

在下一次切片之前,判断是否存在携带的dts与预估dts相同的关键帧,所述预估dts等于所述基准dts与所述设定切片时长之和;

若是,将所述携带的dts与预估dts相同的关键帧的位置作为切片位置。

优选的,所述切片参数同步节点为切片参数同步集群中的任意一个正常运行的节点。

一种直播流切片同步系统,包括:多个切片服务器,各个所述切片服务器在一个组播组中;

各个所述切片服务器同步执行切片流程,进行同步切片,所述切片流程,包括:

从切片参数同步节点中获取最新的切片参数;

从设定的组播地址中接收直播视频流,并在所述直播视频流中设定的关键帧位置,根据所述最新的切片参数,判断切片速度是否满足设定条件;

若是,按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数;

若否,调整切片速度,并将利用调整后的切片速度完成的切片的参数保存至所述切片参数同步节点。

优选的,所述切片服务器具体用于执行的切片流程中在所述直播视频流中设定的关键帧位置,根据所述最新的切片参数,判断切片速度是否满足设定条件的过程,包括:

确定所述关键帧位置对应的切片序号,作为本地切片序号;

从所述最新的切片参数中获取切片序号,并将获取到的切片序号加1的结果作为基准切片序号;

比较所述本地切片序号与所述基准切片序号的大小;

若所述本地切片序号与所述基准切片序号相同,则执行所述按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数的步骤;

若所述本地切片序号小于所述基准切片序号,则所述调整切片速度,包括:加快切片速度。

优选的,所述切片服务器执行的切片流程还包括:

若所述本地切片序号大于所述基准切片序号,则确定所述本地切片序号对应的解码时间戳dts,作为本地切片开始的dts;

从所述最新的切片参数中获取解码时间戳dts,并将获取到的dts与设定切片时长之和作为基准dts;

比较所述本地切片开始的dts与所述基准dts的大小;

若所述本地切片开始的dts与所述基准dts相同,则执行所述按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数的步骤;

若所述本地切片开始的dts小于所述基准dts,则所述调整切片速度包括:减慢切片速度;

若所述本地切片开始的dts大于所述基准dts,则所述调整切片速度包括:加快切片速度。

优选的,所述切片服务器执行的切片流程中加快切片速度的过程,包括:

在下一次切片之前,判断是否存在携带的dts与预估dts相同的关键帧,所述预估dts等于所述基准dts与所述设定切片时长之和;

若是,将所述携带的dts与预估dts相同的关键帧的位置作为切片位置。

优选的,所述切片参数同步节点为切片参数同步集群中的任意一个正常运行的节点。

与现有技术相比,本申请的有益效果为:

在本申请中,直播流切片同步系统中各个切片服务器在一个组播组中,可以保证各个切片服务器可以在相同的时间接收相同的直播视频流,从而保证各个切片服务器接收直播视频流的同步性,在此基础上,各个切片服务器同步执行切片流程,具体从切片参数同步节点中获取最新的切片参数,保证各个切片服务器获取的最新的切片参数相同,并从设定的组播地址中接收直播视频流,保证各个切片服务器接收到的直播视频流相同,在此基础上,根据相同的最新的切片参数,在相同的直播视频流中的关键帧位置,通过判断切片速度是否满足切片速度,来调整切片速度或决定是否切片,使得各个切片服务器的切片速度保持一致或在相同时间进行切片,实现同步切片。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请提供的切片流程的一种流程图;

图2是本申请提供的切片流程的另一种流程图;

图3是本申请提供的切片流程的再一种流程图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例公开了一种直播流切片同步方法,基于直播流切片同步系统,所述直播流切片同步系统包括多个切片服务器,各个所述切片服务器在一个组播组中,方法包括:各个所述切片服务器同步执行切片流程,进行同步切片,所述切片流程,包括:从切片参数同步节点中获取最新的切片参数;从设定的组播地址中接收直播视频流,并在所述直播视频流中的关键帧位置,根据所述最新的切片参数,判断切片速度是否满足设定条件;若是,按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数;若否,调整切片速度,并将调整后的切片速度对应的切片参数保存值所述切片参数同步节点。在本申请中,可以实现各个切片服务器的同步切片。

接下来对本申请实施例公开的直播流切片同步方法进行介绍,需要说明的是,直播流切片同步方法基于直播流切片同步系统,所述直播流切片同步系统包括多个切片服务器,各个所述切片服务器在一个组播组中,直播流切片同步方法可以包括:

各个所述切片服务器同步执行切片流程,进行同步切片。

各个所述切片服务器在一个组播组中,可以接收到相同的组播数据,组播数据为直播信源向特定组播地址组播的直播视频流。

需要说明的是,各个切片服务器同步执行的切片流程是相同的,以实现同步切片。

本实施例中,请参见图1,切片流程可以包括:

步骤s11、从切片参数同步节点中获取最新的切片参数。

切片参数同步节点用于存储最新的切片参数。最新的切片参数为切片服务器每次进行切片后,根据已完成的切片的参数进行更新后确定的参数。

优选的,最新的切片参数可以包括:最新的切片序号和/或最新dts(解码时间戳,decodetimestamp)。

最新的切片序号可以理解为:每次切片完成后,该完成的切片的序号。

最新dts可以理解为:每次切片完成后,该完成的切片开始的dts。

需要说明的是,可以仅设置一个切片参数同步节点来存储切片参数,也可以设置一个切片参数同步集群,切片参数同步集群中包括多个切片参数同步节点,各个切片参数同步节点均可以存储切片参数,具体可以选取其中任意一个正常运行的节点存储切片参数。

可以理解的是,设置一个切片参数同步集群,可以保证在某一个切片参数同步节点故障时,可以选择其他正常的切片参数同步节点存储切片参数,保证了切片参数存储的可靠性。

步骤s12、从设定的组播地址中接收直播视频流,并在所述直播视频流中设定的关键帧位置,根据所述最新的切片参数,判断切片速度是否满足设定条件。

直播信源可以向设定的组播地址组播直播视频流,各个切片服务器在同一个组播组中,则可以从设定的组播地址中接收直播视频流。

关键帧可以理解为:直播视频流中承载全量视频画面信息的视频帧。

设定的关键帧位置具体可以根据设定的切片时长确定。可以理解的是,每隔设定的切片时长,便需要进行切片,且切片的位置为某一个关键帧位置,因此可以在所述直播视频流中设定的关键帧位置,根据所述最新的切片参数,判断切片速度是否满足设定条件。

其中,切片的位置为关键帧位置,可以保证每个切片都能启播,并且在播放时不出现花屏等现象。

若是,则执行步骤s13;若否,则执行步骤s14。

步骤s13、按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数。

设定切片策略可以包括但不局限于:设定的切片时长。根据设定的切片时长可以确定需要进行切片的关键帧位置。

在确定了关键帧位置之后,在关键帧位置对直播视频流进行切片,并确定切片参数,作为目标切片参数。目标切片参数可以包括:目标切片的序号及目标切片的dts。

由于各个切片服务器是同步执行切片流程,在同步确定切片参数,作为目标切片参数之后,每个切片服务器均支持将目标切片参数保存至切片参数同步节点的操作,但是为了避免切片参数同步节点中最新的切片参数重复更新造成的错误,可以仅允许多个切片服务器中的其中一个切片服务器来保存目标切片参数。因此各个切片服务器在确定目标切片参数之后,需要判断自身是否被允许保存目标切片参数,在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数。

仅允许多个切片服务器中的其中一个切片服务器来保存目标切片参数的实现方式,可以为:各个切片服务器共享一个分布式更新锁,在每次需要更新切片参数同步节点中切片参数时,由获得分布式更新锁的切片服务器保存目标切片参数至切片参数同步节点。

步骤s14、调整切片速度,并将利用调整后的切片速度完成的切片的参数保存至所述切片参数同步节点。

在步骤s12判断出切片速度不满足设定条件的基础上,调整切片速度。

可以理解的是,在某一个切片服务器的切片速度不满足设定条件时,调整切片速度可以保证各个切片服务器之间的切片速度的偏差在可接受范围内,保证切片同步。正常的情况下,调整切片速度可以保证各个切片服务器之间的切片速度完全一致。

在本申请中,直播流切片同步系统中各个切片服务器在一个组播组中,可以保证各个切片服务器可以在相同的时间接收相同的直播视频流,从而保证各个切片服务器接收直播视频流的同步性,在此基础上,各个切片服务器同步执行切片流程,具体从切片参数同步节点中获取最新的切片参数,保证各个切片服务器获取的最新的切片参数相同,并从设定的组播地址中接收直播视频流,保证各个切片服务器接收到的直播视频流相同,在此基础上,根据相同的最新的切片参数,在相同的直播视频流中的关键帧位置,通过判断切片速度是否满足切片速度,来调整切片速度或决定是否切片,使得各个切片服务器的切片速度保持一致或在相同时间进行切片,实现同步切片。

在本申请的另一个实施例中,介绍另外一种切片流程,请参见图2,可以包括:

步骤s21、从切片参数同步节点中获取最新的切片参数。

步骤s21与前述实施例中的步骤s11相同,步骤s21的详细过程可以参见步骤s11的相关介绍,在此不再赘述。

步骤s22、确定所述关键帧位置对应的切片序号,作为本地切片序号。

所述关键帧位置对应的切片序号,可以理解为:在所述关键帧位置完成的切片的序号。

步骤s23、从所述最新的切片参数中获取切片序号,并将获取到的切片序号加1的结果作为基准切片序号。

由于最新的切片参数为切片服务器上一次切片完成后,根据上一次完成的切片的参数更新得到的参数,因此可以将最新的切片参数中的切片序号加1的结果,作为基准切片序号。

步骤s24、比较所述本地切片序号与所述基准切片序号的大小。

若所述本地切片序号与所述基准切片序号相同,说明切片速度不快也不慢,则执行步骤s25;若所述本地切片序号小于所述基准切片序号,说明切片速度过慢,则执行步骤s26。

步骤s22-s23为前述实施例中步骤s12的一种具体实施方式。

步骤s25、按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数。

步骤s25与前述实施例中的步骤s13相同,步骤s25的详细过程可以参见步骤s13的相关介绍,在此不再赘述。

步骤s26、加快切片速度,并将利用加快后的切片速度完成的切片的参数保存至所述切片参数同步节点。

步骤s26为前述实施例中步骤s14的一种具体实施方式。

加快切片速度具体可以通过缩短设定的切片时长来实现,即缩短切片需要经历的时间间隔,提前进行切片。

在本申请的另一个实施例中,介绍另外一种切片流程,请参见图3,可以包括:

步骤s31、从切片参数同步节点中获取最新的切片参数。

步骤s32、确定所述关键帧位置对应的切片序号,作为本地切片序号。

步骤s33、从所述最新的切片参数中获取切片序号,并将获取到的切片序号加1的结果作为基准切片序号。

步骤s34、比较所述本地切片序号与所述基准切片序号的大小。

若所述本地切片序号与所述基准切片序号相同,则执行步骤s35;若所述本地切片序号小于所述基准切片序号,则执行步骤s36;若所述本地切片序号大于所述基准切片序号,则执行步骤s37。

步骤s35、按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数。

步骤s36、加快切片速度,并将利用加快后的切片速度完成的切片的参数保存至所述切片参数同步节点。

步骤s31-s36与前述实施例中的步骤s21-s26相同,步骤s31-s36的详细过程可以参见步骤s21-s26的相关介绍,在此不再赘述。

步骤s37、确定所述本地切片序号对应的解码时间戳dts,作为本地切片开始的dts。

确定所述本地切片序号对应的解码时间戳dts的过程,可以包括:从所述本地切片序号对应的关键帧中获取dts。

步骤s38、从所述最新的切片参数中获取解码时间戳dts,并将获取到的dts与设定切片时长之和作为基准dts。

从最新的切片参数中获取的dts即为最新dts,最新dts的相关介绍请参见前述实施例中步骤s11中最新dts的相关介绍,在此不再赘述。

步骤s39、比较所述本地切片开始的dts与所述基准dts的大小。

若所述本地切片开始的dts与所述基准dts相同,说明切片速度不快不慢,则执行步骤s35;若所述本地切片开始的dts小于所述基准dts,说明切片速度过快,则可以减慢切片速度,当然也可以不对切片速度进行调整,因为其他切片速度慢的切片服务器在判断出切片速度慢的情况下,会加快切片速度;若所述本地切片开始的dts大于所述基准dts,说明切片速度过慢,则执行步骤s36。

优选的,加快切片速度除了通过缩短设定切片时长的方式来实现,还可以通过以下方式实现,具体为:

a11、在下一次切片之前,判断是否存在携带的dts与预估dts相同的关键帧,所述预估dts等于所述基准dts与所述设定切片时长之和。

在下一次切片之前,可以理解为:从当前完成的切片的时间开始,时间间隔小于设定切片时长时。

若是,执行步骤a12。

a12、将所述携带的dts与预估dts相同的关键帧的位置作为切片位置。

在步骤a11判断出在下一次切片之前,存在携带的dts与预估dts相同的关键帧的基础上,可以将所述携带的dts与预估dts相同的关键帧的位置作为切片位置,而不需要等到时间间隔等于设定切片时长时再进行切片,进一步加快了切片速度。

接下来对本申请提供的直播流切片同步系统进行介绍,下文介绍的直播流切片同步系统与上文介绍的直播流切片同步方法可相互对应参照。

直播流切片同步系统包括:多个切片服务器,各个所述切片服务器在一个组播组中。

各个所述切片服务器同步执行切片流程,进行同步切片,所述切片流程,包括:

从切片参数同步节点中获取最新的切片参数;

从设定的组播地址中接收直播视频流,并在所述直播视频流中设定的关键帧位置,根据所述最新的切片参数,判断切片速度是否满足设定条件;

若是,按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数;

若否,调整切片速度,并将利用调整后的切片速度完成的切片的参数保存至所述切片参数同步节点。

本实施例中,所述切片服务器具体用于执行的切片流程中在所述直播视频流中设定的关键帧位置,根据所述最新的切片参数,判断切片速度是否满足设定条件的过程,可以包括:

确定所述关键帧位置对应的切片序号,作为本地切片序号;

从所述最新的切片参数中获取切片序号,并将获取到的切片序号加1的结果作为基准切片序号;

比较所述本地切片序号与所述基准切片序号的大小;

若所述本地切片序号与所述基准切片序号相同,则执行所述按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数的步骤;

若所述本地切片序号小于所述基准切片序号,则所述调整切片速度,包括:加快切片速度。

本实施例中,所述切片服务器执行的切片流程还可以包括:

若所述本地切片序号大于所述基准切片序号,则确定所述本地切片序号对应的解码时间戳dts,作为本地切片开始的dts;

从所述最新的切片参数中获取解码时间戳dts,并将获取到的dts与设定切片时长之和作为基准dts;

比较所述本地切片开始的dts与所述基准dts的大小;

若所述本地切片开始的dts与所述基准dts相同,则执行所述按照设定切片策略对所述直播视频流进行切片,并确定切片参数,作为目标切片参数,并在所述切片服务器被允许更新切片参数时,将所述目标切片参数保存至所述切片参数同步节点,以使所述切片参数同步节点根据所述目标切片参数更新所述最新的切片参数的步骤;

若所述本地切片开始的dts小于所述基准dts,则所述调整切片速度包括:减慢切片速度;

若所述本地切片开始的dts大于所述基准dts,则所述调整切片速度包括:加快切片速度。

本实施例中,所述切片服务器执行的切片流程中加快切片速度的过程,可以包括:

在下一次切片之前,判断是否存在携带的dts与预估dts相同的关键帧,所述预估dts等于所述基准dts与所述设定切片时长之和;

若是,将所述携带的dts与预估dts相同的关键帧的位置作为切片位置。

本实施例中,所述切片参数同步节点可以为切片参数同步集群中的任意一个正常运行的节点。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

以上对本申请所提供的一种直播流切片同步方法及系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1