直播媒体流获取方法、装置、终端及存储介质与流程

文档序号:15848938发布日期:2018-11-07 09:32阅读:182来源:国知局
直播媒体流获取方法、装置、终端及存储介质与流程

本发明涉及网络技术领域,特别涉及一种直播媒体流获取方法、装置、终端及存储介质。

背景技术

随着网络技术的发展以及终端功能的多样化,人们越来越喜欢通过网络与其他人进行数据共享,例如,人们可以通过终端建立直播房间,并在该直播房间中进行网络直播,其他人可以进入该直播房间,观看直播内容,或与该直播房间的发起者进行互动。

在直播过程中,主播所在终端通常可以通过采集主播的直播音频帧和直播视频帧,并对该直播音频帧和直播视频帧进行编码和封装,得到待发送的直播媒体流,终端可以将该待发送的直播媒体流放入发送队列中,逐一发送至内容分发网络,由该内容分发网络将接收到的直播媒体流转发至观众所在终端。但是该主播所在终端到内容分发网络之间的网络经常会发生波动,或该主播所在终端的网络带宽情况不佳,均可能导致上述发送队列中的直播媒体流达到上限,也即是发送队列满了,则该主播所在终端则可以采集到的视频帧或音频帧进行丢帧处理,这样可能会出现观众所在终端接收到的直播媒体流不完整,或延时较大,或音视频不同步等直播质量下降的问题。因此,亟需一种直播媒体流获取方法,以解决该直播质量下降的问题。



技术实现要素:

本发明实施例提供了一种直播媒体流获取方法、装置、终端及存储介质,提供了一种直播媒体流获取方法,以提高直播质量,解决直播质量下降的问题。所述技术方案如下:

一方面,提供了一种直播媒体流获取方法,所述方法包括

在直播过程中,获取预设时长内直播媒体帧的丢帧信息,所述直播媒体帧为直播视频帧或直播音频帧中的至少一种;

当所述丢帧信息大于丢帧阈值时,基于第一码率,获取第二码率,所述第二码率小于所述第一码率,所述第一码率为当前对直播媒体帧进行编码时采用的码率,所述第二码率用于对待编码的直播媒体帧进行编码;

根据所述第二码率和所述待编码的直播媒体帧,获取待发送的直播媒体流。

在一种可能实现方式中,所述获取预设时长内直播媒体帧的丢帧信息,包括:

获取所述预设时长内直播媒体帧的丢失帧数,并获取所述丢失帧数与所述预设时长的比值;或,

获取所述预设时长内直播媒体帧的丢失帧数与采集到的直播媒体帧的总帧数,并获取所述丢失帧数与所述总帧数的比值;或,

获取所述预设时长内直播媒体帧的丢失帧数。

在一种可能实现方式中,所述基于第一码率,获取第二码率,包括:

获取所述第一码率与预设码率降幅的差值,将所述差值作为第二码率。

在一种可能实现方式中,所述方法还包括:

当所述丢帧信息小于或等于所述丢帧阈值,且当前时间点距离上次调整码率的时间点之间的时长达到目标时长时,基于所述第一帧率,获取第三帧率,所述第三码率大于所述第一码率,所述第三帧率用于对待编码的直播媒体帧进行编码;

根据所述第三码率和所述待编码的直播媒体帧,获取待发送的直播媒体流。

在一种可能实现方式中,所述第三码率与所述第一码率的第一差值小于第二差值,所述第二差值为所述第一码率与所述第二码率的差值。

在一种可能实现方式中,所述目标时长与所述直播过程中码率的降低次数正相关。

在一种可能实现方式中,所述方法还包括:

当所述丢帧信息小于或等于所述丢帧阈值,当前时间点距离上次调整码率的时间点之间的时长达到目标时长,且所述第一码率小于初始码率时,基于所述第一码率,获取第三码率,所述初始码率为直播开始时的码率;

根据所述第三码率和所述待编码的直播媒体帧,获取待发送的直播媒体流。

一方面,提供了一种直播媒体流获取装置,所述装置包括:

丢帧信息获取模块,用于在直播过程中,获取预设时长内直播媒体帧的丢帧信息,所述直播媒体帧为直播视频帧或直播音频帧中的至少一种;

码率获取模块,用于当所述丢帧信息大于丢帧阈值时,基于第一码率,获取第二码率,所述第二码率小于所述第一码率,所述第一码率为当前对直播媒体帧进行编码时采用的码率,所述第二码率用于对待编码的直播媒体帧进行编码;

直播媒体流获取模块,用于根据所述第二码率和所述待编码的直播媒体帧,获取待发送的直播媒体流。

在一种可能实现方式中,所述丢帧信息获取模块用于:

获取所述预设时长内直播媒体帧的丢失帧数,并获取所述丢失帧数与所述预设时长的比值;或,

获取所述预设时长内直播媒体帧的丢失帧数与采集到的直播媒体帧的总帧数,并获取所述丢失帧数与所述总帧数的比值;或,

获取所述预设时长内直播媒体帧的丢失帧数。

在一种可能实现方式中,所述码率获取模块用于获取所述第一码率与预设码率降幅的差值,将所述差值作为第二码率。

在一种可能实现方式中,所述码率获取模块还用于当所述丢帧信息小于或等于所述丢帧阈值,且当前时间点距离上次调整码率的时间点之间的时长达到目标时长时,基于所述第一帧率,获取第三帧率,所述第三码率大于所述第一码率,所述第三帧率用于对待编码的直播媒体帧进行编码;

所述直播媒体流获取模块还用于根据所述第三码率和所述待编码的直播媒体帧,获取待发送的直播媒体流。

在一种可能实现方式中,所述第三码率与所述第一码率的第一差值小于第二差值,所述第二差值为所述第一码率与所述第二码率的差值。

在一种可能实现方式中,所述目标时长与所述直播过程中码率的降低次数正相关。

在一种可能实现方式中,所述码率获取模块还用于当所述丢帧信息小于或等于所述丢帧阈值,当前时间点距离上次调整码率的时间点之间的时长达到目标时长,且所述第一码率小于初始码率时,基于所述第一码率,获取第三码率,所述初始码率为直播开始时的码率;

所述直播媒体流获取模块还用于根据所述第三码率和所述待编码的直播媒体帧,获取待发送的直播媒体流。

一方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现所述直播媒体流获取方法所执行的操作。

一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现所述直播媒体流获取方法所执行的操作。

本发明实施例提供的技术方案带来的有益效果至少包括:

本发明实施例通过在直播过程中,基于预设时长内的丢帧信息与丢帧阈值的大小关系,确定丢帧情况是否严重,并在严重时,可以降低码率,并基于降低的码率,得到待发送的直播媒体流,从而减少了待发送的直播媒体流的数据量,以解决发送堵塞时进行丢帧使得直播质量下降的问题,有效地提高了直播质量。

附图说明

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

图1是本发明实施例提供的一种网络直播系统示意图;

图2是本发明实施例提供的一种直播媒体流获取方法流程图;

图3是本发明实施例提供的一种直播媒体流获取方法流程图;

图4是本发明实施例提供的一种直播媒体流获取方法流程图;

图5是本发明实施例提供的一种直播媒体流获取装置的结构示意图;

图6是本发明实施例提供的一种终端的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1是本发明实施例提供的一种网络直播系统示意图,网络直播是一种新兴的网络社交方式,它是多个用户可以在同一时间通过网络观看或收听同样的直播内容的一种社交方式。

用户可以在终端上进行操作,该终端可以向服务器发送网络直播请求,由该服务器为该用户创建直播房间,该直播房间是一种提供弹幕式音视频直播的在线虚拟房间,则该用户即为该直播房间的发起者,也即是主播,该主播可以在该直播房间中展示歌唱、游戏、电影、电视剧等音视频内容,其他用户也可以通过终端进入该直播房间,在该直播房间中观看或收听主播的展示内容,也可以与该主播进行互动,例如,点赞、为该主播送礼物、关注或者分享该主播、与该主播进行聊天等,该其他用户即为观众。

如图1所示,该网络直播系统可以包括多个终端和内容分发网络,其中,该多个终端中可以包括一个主播所在终端和n个观众所在终端。该内容分发网络用于为该多个终端提供音视频服务。该主播所在终端可以采集主播直播过程中的音视频数据,并基于该音视频数据获取直播媒体流,从而将该直播媒体流发送至内容分发网络,由该内容分发网络将该直播媒体流转发至该n个观众所在终端,则该观众所在终端可以对该直播媒体流进行解码并播放,使得观众可以观看主播的直播内容。

其中,该主播所在终端可以通过终端上的直播应用进行直播,也可以通过门户网站进行直播,同理地,该n个观众所在终端也可以通过直播应用或门户网站获取到直播媒体流,本发明实施例对此不作限定。

当然,该网络直播系统还可以包括消息中转分发服务器,该消息中转分发服务器不区分终端是观众所在终端,还是主播所在终端,该消息中转分发服务器可以将任一终端发送的消息,广播给其他终端,从而该直播房间内的所有终端均可以看到该消息,该消息通常是观众和主播的互动内容,本发明实施例对在此不作过多赘述。

图2是本发明实施例提供的一种直播媒体流获取方法流程图,参见图2,该方法可以包括:

201、终端在直播过程中,获取预设时长内直播媒体帧的丢帧信息,该直播媒体帧为直播视频帧或直播音频帧中的至少一种。

202、当该丢帧信息大于丢帧阈值时,终端基于第一码率,获取第二码率,该第二码率小于该第一码率,该第一码率为当前对直播媒体帧进行编码时采用的码率,该第二码率用于对待编码的直播媒体帧进行编码。

203、终端根据该第二码率和该待编码的直播媒体帧,获取待发送的直播媒体流。

本发明实施例通过在直播过程中,基于预设时长内的丢帧信息与丢帧阈值的大小关系,确定丢帧情况是否严重,并在严重时,可以降低码率,并基于降低的码率,得到待发送的直播媒体流,从而减少了待发送的直播媒体流的数据量,以解决发送堵塞时进行丢帧使得直播质量下降的问题,有效地提高了直播质量。

在一种可能实现方式中,该获取预设时长内直播媒体帧的丢帧信息,包括:

获取该预设时长内直播媒体帧的丢失帧数,并获取该丢失帧数与该预设时长的比值;或,

获取该预设时长内直播媒体帧的丢失帧数与采集到的直播媒体帧的总帧数,并获取该丢失帧数与该总帧数的比值;或,

获取该预设时长内直播媒体帧的丢失帧数。

在一种可能实现方式中,该基于第一码率,获取第二码率,包括:

获取该第一码率与预设码率降幅的差值,将该差值作为第二码率。

在一种可能实现方式中,该方法还包括:

当该丢帧信息小于或等于该丢帧阈值,且当前时间点距离上次调整码率的时间点之间的时长达到目标时长时,基于该第一帧率,获取第三帧率,该第三码率大于该第一码率,该第三帧率用于对待编码的直播媒体帧进行编码;

根据该第三码率和该待编码的直播媒体帧,获取待发送的直播媒体流。

在一种可能实现方式中,该第三码率与该第一码率的第一差值小于第二差值,该第二差值为该第一码率与该第二码率的差值。

在一种可能实现方式中,该目标时长与该直播过程中码率的降低次数正相关。

在一种可能实现方式中,该方法还包括:

当该丢帧信息小于或等于该丢帧阈值,当前时间点距离上次调整码率的时间点之间的时长达到目标时长,且该第一码率小于初始码率时,基于该第一码率,获取第三码率,该初始码率为直播开始时的码率;

根据该第三码率和该待编码的直播媒体帧,获取待发送的直播媒体流。

图3是本发明实施例提供的一种直播媒体流获取方法流程图,参见图2,该方法可以包括以下步骤:

301、在直播过程中,终端获取预设时长内直播媒体帧的丢帧信息。

终端的用户可以在终端上进行开播操作,由服务器为该用户创建直播房间,当然,服务器也可以为本次直播生成初始信息,例如,直播房间号、直播房间名称、开播时间、开播封面或其他信息,该终端的用户即为主播。其他用户通过直播应用或直播门户网站中看到该初始信息,或者,该其他用户也可以通过关注该终端的用户,从而在该终端的用户开播时接收到上述直播房间的链接或开播通知,当然,该其他用户也可以接收到别人分享的该直播房间的链接,从而该其他用户可以进入该直播房间中观看或收听该用户的直播内容,该其他用户即为观众。

在该终端的用户的直播过程中,终端可以基于麦克风采集用户的直播音频帧,基于摄像头采集用户的直播视频帧,该直播音频帧和直播视频帧也即是直播媒体帧,终端可以对该直播媒体帧进行编码和封装后得到直播媒体流,并将该直播媒体流发送至服务器。当然,终端也可以仅采集直播音频帧,并基于直播音频帧得到直播媒体流,本发明实施例对此不作限定。该服务器接收到该直播媒体流,可以将该直播媒体流转发至其他终端。

其中,该其他终端是指在进入该直播房间的观众所在终端,也可以是进入该直播房间的在线观众所在终端,本发明实施例对此不作限定。其中,该服务器可以为内容分发网络中的任一节点服务器,也可以是任一用于提供音视频服务的服务器,例如,用于为上述直播应用或直播门户网站提供音视频服务的服务器,本发明实施例对此不作限定。

终端还可以为采集到的每个视频帧和音频帧打上时间戳,该时间戳用于指示该视频帧或音频帧在直播流中的时间信息,后续终端或服务器可以基于该时间戳,确定视频帧或音频帧的播放顺序。在一种可能实现方式中,终端可以与服务器之间进行交互,以服务器的时间为准,为采集到的视频帧或音频帧打时间戳,当然,也可以基于该终端的系统时间,本发明实施例对此不作限定。

在一种可能实现方式中,终端可以将处理后得到的直播媒体流缓存于发送队列中,并根据发送队列中的顺序发送至服务器。如果该终端与该服务器之间的网络出现异常,或该终端的网络带宽情况不佳,该发送队列中缓存的直播媒体流可能会达到该发送队列的最大容量,则终端可能需要对采集到的直播媒体帧进行丢帧处理,也即是,终端将可以将还没有采集到但还未进行编码等处理的直播媒体帧进行丢帧处理,当然,终端也可以将该发送队列中还未发送的直播媒体流进行丢帧处理,以缓解发送堵塞导致直播质量下降的问题,本发明实施例对此不作具体限定。

在本发明实施例中,在上述直播过程中,终端可以获取预设时长内直播媒体帧的丢帧信息,从而根据该丢帧信息,确定当前的丢帧情况是否严重,并在确定严重时,可以执行下述步骤,对直播媒体帧的码率进行调整,以解决该发送堵塞、影响直播质量的问题,提高了网络直播的质量。

其中,该直播媒体帧可以为直播视频帧或直播音频帧中的至少一种,也即是该直播媒体帧可以是直播视频帧,也可以是直播音频帧,还可以是直播视频帧和直播音频帧,本发明实施例对此不作限定。例如,在音乐直播过程中,该直播媒体帧可以为直播视频帧,这样终端可以仅丢掉采集到的视频帧,保证发送至观众所在终端的直播媒体流中音频帧的完整性,从而可以有效提高直播质量。

该预设时长是指终端确定是否需要调整码率的时间周期,终端可以根据该预设时长内的丢帧情况,来确定是否需要调整码率。该预设时长可以由相关技术人员根据直播服务的需求设置,例如,该预设时长可以为5秒,本发明实施例对该预设时长的具体取值不作限定。

在一种可能实现方式中,该丢帧信息可以为单位时间内直播媒体帧的丢失帧数,也即是基于时间的丢帧率,相应地,该步骤301中终端获取丢帧信息的过程可以通过下述两个步骤实现:

步骤一、终端获取预设时长内直播媒体帧的丢失帧数。

终端可以每隔该预设时长,检测该预设时长内是否对直播媒体帧进行过丢帧处理,如果是,可以确定该预设时长内的丢失帧数。或者,终端也可以在每个预设时长内对直播媒体帧进行丢帧处理时,实时对丢失帧数进行统计,并在当前时间点距离上次获取统计结果的时间点之间的时长达到该预设时长时,获取统计结果,本发明实施例对此不作限定。例如,以该预设时长的时长为5秒为例,终端可以获取到某个预设时长(5秒)内直播媒体帧的丢失帧数为6帧。

步骤二、终端获取该丢失帧数与该预设时长的比值,将该比值作为该预设时长内直播媒体帧的丢帧信息。

终端获取到预设时长内的丢失帧数后,即可基于该丢失帧数和预设时长,获取到该预设时长内直播媒体帧的丢帧信息,具体地,终端可以获取丢失帧数与预设时长的比值,即可得到该预设时长内的单位时间内直播媒体帧的丢失帧数。例如,以该预设时长的时长为5秒,该5秒内的丢失帧数为6帧为例,终端就可以获取丢失帧数为6帧与5秒的比值,也即是1.2帧每秒,并将该1.2帧每秒作为该预设时长内直播媒体帧的丢帧信息。

在另一种可能实现方式中,该直播媒体帧的丢帧信息还可以是指丢失帧数在采集到的直播媒体帧的总帧数中的比例,也即是基于比例的丢帧率,相应地,该步骤301还可以为终端获取预设时长内直播媒体帧的丢失帧数与采集到的直播媒体帧的总帧数,终端获取该丢失帧数与该总帧数的比值,将该比值作为该预设时长内直播媒体帧的丢帧信息。在又一种可能实现方式中,该直播媒体帧的丢帧信息还可以是指丢失帧数,则该终端执行上述步骤一即可,也即是,终端获取该预设时长内直播媒体帧的丢失帧数,将该丢失帧数作为该预设时长内直播媒体帧的丢帧信息。当然,该丢帧信息还可以是其他释义,相应地,该步骤301还可以通过其他方式实现,该直播媒体帧的丢帧信息的具体释义可以由相关技术人员根据直播服务的需求确定,本发明实施例对该丢帧信息的具体释义以及具体采用上述哪种实现方式不作限定。

302、当该丢帧信息大于丢帧阈值时,终端基于第一码率,获取第二码率。

其中,该第二码率小于该第一码率,该第一码率为当前对直播媒体帧进行编码时采用的码率,该第二码率用于对待编码的直播媒体帧进行编码。该码率是指视频数据(视频色彩量、亮度量、像素量)每秒输出的位数,计量单位通常为千位每秒(kbps)。终端基于不同的码率,对该直播媒体帧进行编码时的压缩比不同。其中,该压缩比为压缩前的数据大小与压缩后的数据大小的比值。在一种可能实现方式中,该码率与压缩比负相关,也即是该码率越小,压缩比越大,该码率越大,压缩比越小。

在该步骤302中,终端确定丢帧信息大于丢帧阈值,说明在该预设时长内直播媒体帧的丢帧情况较为严重,终端可以对待编码的直播媒体帧进行降码率的操作,也即是基于第一码率,获取第二码率,从而可以基于第二码率,对待编码的直播媒体帧进行编码。这样在丢帧情况较为严重时,终端将码率降低,可以基于降低后的码率对待编码的直播媒体帧进行编码,则后续获取的直播媒体流的数据大小可以降低,则上述发送队列中待发送的直播媒体流数量会慢慢减少,可以解决上述发送堵塞、直播质量下降的问题,从而提高直播质量。

其中,由于该丢帧信息可以有多种形式,该丢帧阈值也可以对应有多种形式,例如,当该丢帧信息为基于时间的丢帧率时,该丢帧阈值可以是单位时间内的丢失帧数阈值,例如,1帧每秒;当该丢帧信息为基于比例的丢帧率时,该丢帧阈值可以是小数或百分比的形式,该丢帧阈值的取值范围为0至1,例如,该丢帧阈值可以是0.1或10%;当该丢帧信息为丢失帧数时,该丢帧阈值也可以是预设时长内的丢失帧数阈值,例如,该丢帧阈值可以是5帧。需要说明的是,该丢帧阈值可以由相关技术人员根据直播服务的需求设置,本发明实施例对该丢帧阈值的具体形式和取值不作限定。

在一种可能实现方式中,该步骤302中,终端基于第一码率,获取第二码率的过程可以为:终端获取该第一码率与预设码率降幅的差值,将该差值作为第二码率。

在该终端中可以预先设置有码率降幅,当终端确定需要降码率时,也即是当丢帧信息大于丢帧阈值时,终端可以获取直播媒体帧当前的码率(第一码率)与预设码率降幅的差值,将该差值作为降低后的码率,也即是第二码率。其中,该预设码率降幅可以由相关技术人员预先设置,例如,10kbps,本发明实施例对该预设码率降幅的具体取值不作限定。

在一种可能实现方式中,该预设码率降幅还可以与该直播过程中码率的降低次数负相关。也即是,降低次数越大,该预设码率降幅越小。这样不会因将码率降到很低,使得后续不断地升码率,可以有效减少升码率的次数,从而减少码率的震荡次数,以保证直播过程的稳定性。

在另一种可能实现方式中,在该终端中还可以预设有多个候选码率,该多个候选码率可以按照大小顺序进行排序,例如,可以按照从大到小的顺序排序,在该步骤302中,当丢帧信息大于丢帧阈值时,终端可以从该多个候选码率中,获取该终端当前的码率(第一码率)在上述排列顺序中的下一个候选码率作为第二码率,本发明实施例对该多个候选码率的具体取值不作限定。同理地,在一种可能实现方式中,该多个候选码率之间的码率间隔也可以与该直播过程中码率的降低次数负相关,本发明实施例对此不作限定。当然,该步骤302还可以通过其他方式实现,本发明实施例对具体采用哪种实现方式不作限定。

303、终端根据该第二码率和该待编码的直播媒体帧,获取待发送的直播媒体流,并基于获取到的待发送的直播媒体流,执行步骤308。

具体地,该步骤303可以为:终端根据该第二码率,对该待编码的直播媒体帧进行编码,并对编码后得到的数据进行封装处理,得到待发送的直播媒体流。需要说明的是,终端根据降低后的第二码率,对待编码的直播媒体帧进行编码时,压缩比也即变大了,则直播媒体帧在该编码过程中可以去除更多的冗余信息,编码后的数据大小则会变小,这样减少了待发送的数据量,可以有效解决上述发送堵塞、丢帧情况严重的问题,从而无需进行过多的丢帧处理,可以有效保证直播的质量。

需要说明的是,该终端对该待编码的直播媒体帧进行编码时可以采用任一种编码算法,本发明实施例对此不作限定。例如,终端对视频帧进行编码时可以采用任一种视频编码算法,例如,可以采用xvid算法、h264算法、动态图像专家组-1(movingpictureexpertsgroup-1,mpeg-1)算法或mpeg-2算法,或采用其他算法。以采用h264算法进行编码为例,终端可以对直播媒体帧进行帧内检测编码、帧间预测编码、整数变换、量化以及熵编码等步骤,该终端采用的编码算法不同,该编码过程也可能不同,本发明实施例对此不作限定。终端对音频帧进行编码时可以采用任一种音频编码方式,例如,脉冲编码调制(pulsecodemodulation,pcm)编码、wma(windowsmediaaudio)编码、自适应差分脉冲编码调制(adaptivedifferentialpulsecodemodulation,adpcm)编码、线性预测编码(linearpredictivecoding,lpc)编码、动态影像专家压缩标准音频层面3(movingpictureexpertsgroupaudiolayeriii,mp3)编码、高级音频编码(advancedaudiocoding,aac)等,或其他编码方式。在一种可能实现方式中,上述第一码率和第二码率通常是指该直播媒体帧中音频帧和视频帧的码率之和,具体音频帧和视频帧所采用的码率可以根据上述编码算法或预设规则确定,本发明实施例对此不作限定。

在该步骤303中,终端对采集到的直播媒体帧进行编码等处理时,可以基于降低后的第二码率进行编码,则降低了后续获取的直播媒体流的数据大小,以使得后续终端将当前发送队列中的直播媒体流发送完成后,再发送基于降低后的码率得到的直播媒体流时,发送队列中的直播媒体流的发送效率变高,有效解决了上述发送堵塞、直播质量下降的问题,从而提高了直播质量。

上述步骤302和步骤303为当丢帧信息大于丢帧阈值时,终端可以降低码率,从而根据降低后的码率,对待编码的直播媒体帧进行编码和封装处理,得到直播媒体流的过程,该丢帧信息还可能小于或等于丢帧阈值,终端可以确定不需要降码率,并进一步确定是否需要升码率,具体可以参见步骤304。

304、当该丢帧信息小于或等于丢帧阈值时,终端判断当前时间点距离上次调整码率的时间点之间的时长是否达到目标时长,如果是,则执行步骤305,如果否,则执行步骤307。

该丢帧信息小于或等于丢帧阈值,可以说明该预设时长内的丢帧情况比较好,终端则无需降低码率,进一步地,终端可以判断当前的码率(第一码率)已经保持的时间是否已经达到目标时长,如果是,则可以执行下述步骤305,将码率提升,如果否,则可以执行步骤307,保持当前码率不变。

上述过程也即是,如果该预设时长内的丢帧情况比较好,终端可以再判断丢帧情况比较好的情况是否已经保持了一段时间,并在确定一段时间内丢帧情况都很好的时候,可以提升码率,以使得基于更高的码率得到的待发送的直播媒体流更接近采集到的原始媒体数据,直播质量更好。而如果该丢帧情况比较好的情况没有保持一段时间,终端可能无法确定该终端的网络情况一直比较好还是仅仅在一个较短的时间内比较好,因而,可以不对码率进行调整。

305、终端基于该第一帧率,获取第三帧率。

其中,该第三码率大于该第一码率,该第三帧率用于对待编码的直播媒体帧进行编码。在一种可能实现方式中,该步骤305可以为:终端获取该第一码率与预设码率升幅的和值,将该和值作为第三码率。

与步骤302中终端获取第二帧率的过程同理,在该终端中还可以预先设置有码率升幅,当终端确定需要升码率时,终端可以获取直播媒体帧当前的码率(第一码率)与预设码率升幅的和值,将该和值作为提升后的码率,也即是第三码率。其中,该预设码率升幅可以由相关技术人员预先设置,例如,2kbps,本发明实施例对该预设码率升幅的具体取值不作限定。

在一个具体的可能实施例中,该第三码率与该第一码率的第一差值小于第二差值,该第二差值为该第一码率与该第二码率的差值。也即是,预设码率升幅小于预设码率降幅。这样可以快速降码率以缓解发送堵塞的问题,保证网络直播的质量,也避免了在临界值来回升降码率。当然,在丢帧情况在一段时间内都比较好才升码率,可以有效地减少了码率的震荡次数,从而保证了网络直播的质量。

在一个具体的可能实施例中,该预设码率升幅还可以与该直播过程中码率的连续提升次数负相关,也即是,连续提升次数越大,该码率升幅越小。这样可以在丢帧情况比较好的情况时,不会因一次提升码率过大,导致丢帧情况严重,造成直播质量下降的问题。

在另一种可能实现方式中,与步骤302同理,在该终端中还可以预设有多个候选码率,该多个候选码率可以按照大小顺序进行排序,例如,可以按照从小到大的顺序排序,在该步骤305中,当丢帧信息小于或等于丢帧阈值时,终端可以从该多个候选码率中,获取该终端当前的码率(第一码率)在上述排列顺序中的下一个候选码率作为第三码率,本发明实施例对该多个候选码率的具体取值不作限定。当然,该多个候选码率可以为步骤302中的多个候选码率,则该步骤305中终端可以获取该终端当前的码率(第一码率)在上述排列顺序中的上一个候选码率作为第三码率,当然,该多个候选码率也可以与步骤302中的多个候选码率不同,本发明实施例对此不作限定。同理地,在一种可能实现方式中,该多个候选码率之间的码率间隔也可以与该直播过程中码率的连续提升次数负相关,本发明实施例对此不作限定。当然,该步骤305还可以通过其他方式实现,本发明实施例对具体采用哪种实现方式不作限定。

在一种可能实现方式中,在上述获取第三码率的各种实现方式中,也可以设置有:该第三码率与该第一码率的第一差值小于第二差值,该第二差值为该第一码率与该第二码率的差值,本发明实施例对此不作限定。

需要说明的是,上述目标时长可以由相关技术人员预先设置,例如,该目标时长可以为20秒,该20秒仅为一种示例性说明,本发明实施例对此不作限定。在一种可能实现方式中,该目标时长与该直播过程中码率的降低次数正相关。也即是,该降低次数越大,该目标时长越大。例如,该目标时长可以为n*t,其中,t为初始目标时长,n为该直播过程中码率的降低次数。则终端每次降低码率,则在后续要提升码率时,丢帧信息小于或等于丢帧阈值的情况需保持的目标时长就越大。这样可以有效减少码率的震荡次数,以保证网络直播的稳定性。

306、终端根据该第三码率和该待编码的直播媒体帧,获取待发送的直播媒体流,并基于获取到的待发送的直播媒体流,执行步骤308。

该步骤306与上述步骤303同理,终端可以根据第三码率,对待编码的直播媒体帧进行编码,并对编码后得到的数据进行封装处理,得到待发送的直播媒体流,在此不多做赘述。其中,码率提升了,则编码过程中压缩比也相应变小了,则直播媒体帧在该编码过程中去除的冗余信息比之前要少,编码后的数据大小则会变大,则该直播媒体流则更接近采集到的原始媒体数据,可以有效提高网络直播的质量。

307、终端根据第一码率和该待编码的直播媒体帧,获取待发送的直播媒体流,并基于获取到的待发送的直播媒体流,执行步骤308。

该步骤307与上述步骤303、步骤306同理,终端可以不对码率进行调整,仍根据第一码率,对待编码的直播媒体帧进行编码,在此不多做赘述。

上述步骤304至步骤307仅为当丢帧信息小于或等于丢帧阈值时,以当前时间点距离上次调整码率的时间点之间的时长是否达到目标时长为判定条件,确定是否需要提升码率为例进行说明,在一种可能实现方式中,在该终端中还可以设置有初始码率,并设置有:终端对待编码的直播媒体流进行编码时采用的码率小于或等于该初始码率。其中,该初始码率是指直播开始时的码率,该初始码率可以由相关技术人员根据直播服务的需求设置。可以理解地,该初始码率可以是一个既可以满足直播质量,又可以不过多消耗终端性能和终端流量的数值,本发明实施例对此不作限定。相应地,该步骤304中还可以为:当该丢帧信息小于或等于丢帧阈值时,终端判断当前时间点距离上次调整码率的时间点之间的时长是否达到目标时长,且该第一码率是否小于初始码率,如果是,则终端可以执行步骤305和步骤306,如果否,则终端可以执行步骤307。

在另一种可能实现方式中,上述步骤304至步骤305还可以为:当该丢帧信息小于或等于丢帧阈值时,终端还可以直接执行步骤305和步骤306,以进行码率提升。当然,在又一种可能实现方式中,该步骤304还可以为:当该丢帧信息小于或等于丢帧阈值时,终端判断该直播媒体帧的码率是否小于初始码率,如果是,则终端执行步骤305和步骤306,如果否,则终端执行步骤307。

上述步骤提供了一种直播媒体流获取方法,该方法主要通过在预设时长内,基于丢帧信息与丢帧阈值的大小关系,对码率进行调整的方式,以适应由于网络情况不同时的发送需求,下面通过一个具体示例对上述直播媒体流获取方法的具体流程进行说明,以丢帧信息为基于时间的丢帧率为例,终端可以每隔t秒求出每秒丢帧数,该t秒即为预设时长,如果每秒丢帧数大于丢帧阈值,则终端立即降码率,也即对应于步骤302和步骤303,如果否,也即是每秒丢帧数小于或等于丢帧阈值,则终端可以判断当前码率是否小于初始码率,如果否,则终端保持码率不变,如果是,则终端可以继续判断当前码率的保持时间是否已达到n*t,如果是,则终端可以立即提码率,如果否,则终端也可以保持码率不变,也即是对应于上述步骤304至步骤307中的实现方式中的提升码率的判定过程。

308、终端将获取到的待发送的直播媒体流发送至服务器。

终端通过上述步骤,获取到待发送的直播媒体流后,可以将该直播媒体流发送至服务器,由该服务器将接收到的直播媒体流转发至观众所在终端,从而实现主播分享直播内容给观众的过程。其中,该服务器可以是上述内容分发网络中的任一节点服务器,也可以是其它用于为该终端提供音视频服务的服务器,本发明实施例对此不作限定。

本发明实施例通过在直播过程中,基于预设时长内的丢帧信息与丢帧阈值的大小关系,确定丢帧情况是否严重,并在严重时,可以降低码率,并基于降低的码率,得到待发送的直播媒体流,从而减少了待发送的直播媒体流的数据量,以解决发送堵塞时进行丢帧使得直播质量下降的问题,有效地提高了直播质量。

上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。

图5是本发明实施例提供的一种直播媒体流获取装置的结构示意图,参见图5,该装置包括:

丢帧信息获取模块501,用于在直播过程中,获取预设时长内直播媒体帧的丢帧信息,该直播媒体帧为直播视频帧或直播音频帧中的至少一种;

码率获取模块502,用于当该丢帧信息大于丢帧阈值时,基于第一码率,获取第二码率,该第二码率小于该第一码率,该第一码率为当前对直播媒体帧进行编码时采用的码率,该第二码率用于对待编码的直播媒体帧进行编码;

直播媒体流获取模块503,用于根据该第二码率和该待编码的直播媒体帧,获取待发送的直播媒体流。

在一种可能实现方式中,该丢帧信息获取模块501用于:

获取该预设时长内直播媒体帧的丢失帧数,并获取该丢失帧数与该预设时长的比值;或,

获取该预设时长内直播媒体帧的丢失帧数与采集到的直播媒体帧的总帧数,并获取该丢失帧数与该总帧数的比值;或,

获取该预设时长内直播媒体帧的丢失帧数。

在一种可能实现方式中,该码率获取模块502用于获取该第一码率与预设码率降幅的差值,将该差值作为第二码率。

在一种可能实现方式中,该码率获取模块502还用于当该丢帧信息小于或等于该丢帧阈值,且当前时间点距离上次调整码率的时间点之间的时长达到目标时长时,基于该第一帧率,获取第三帧率,该第三码率大于该第一码率,该第三帧率用于对待编码的直播媒体帧进行编码;

该直播媒体流获取模块503还用于根据该第三码率和该待编码的直播媒体帧,获取待发送的直播媒体流。

在一种可能实现方式中,该第三码率与该第一码率的第一差值小于第二差值,该第二差值为该第一码率与该第二码率的差值。

在一种可能实现方式中,该目标时长与该直播过程中码率的降低次数正相关。

在一种可能实现方式中,该码率获取模块502还用于当该丢帧信息小于或等于该丢帧阈值,当前时间点距离上次调整码率的时间点之间的时长达到目标时长,且该第一码率小于初始码率时,基于该第一码率,获取第三码率,该初始码率为直播开始时的码率;

该直播媒体流获取模块503还用于根据该第三码率和该待编码的直播媒体帧,获取待发送的直播媒体流。

本发明实施例提供的装置在直播过程中,基于预设时长内的丢帧信息与丢帧阈值的大小关系,确定丢帧情况是否严重,并在严重时,可以降低码率,并基于降低的码率,得到待发送的直播媒体流,从而减少了待发送的直播媒体流的数据量,以解决发送堵塞时进行丢帧使得直播质量下降的问题,有效地提高了直播质量。

需要说明的是:上述实施例提供的直播媒体流获取装置在获取直播媒体流时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的直播媒体流获取装置与直播媒体流获取方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图6是本发明实施例提供的一种终端的结构框图。该终端600可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端600包括有:处理器601和存储器602。

处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本发明中方法实施例提供的直播媒体流获取方法。

在一些实施例中,终端600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、触摸显示屏605、摄像头606、音频电路607、定位组件608和电源609中的至少一种。

外围设备接口603可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路604用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本发明对此不加以限定。

显示屏605用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置终端600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在终端600的不同表面或呈折叠设计;在再一些实施例中,显示屏605可以是柔性显示屏,设置在终端600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。

定位组件608用于定位终端600的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件608可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源609用于为终端600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。

加速度传感器611可以检测以终端600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制触摸显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器612可以检测终端600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对终端600的3d动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器613可以设置在终端600的侧边框和/或触摸显示屏605的下层。当压力传感器613设置在终端600的侧边框时,可以检测用户对终端600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在触摸显示屏605的下层时,由处理器601根据用户对触摸显示屏605的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置终端600的正面、背面或侧面。当终端600上设置有物理按键或厂商logo时,指纹传感器614可以与物理按键或厂商logo集成在一起。

光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制触摸显示屏605的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏605的显示亮度;当环境光强度较低时,调低触摸显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。

接近传感器616,也称距离传感器,通常设置在终端600的前面板。接近传感器616用于采集用户与终端600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与终端600的正面之间的距离逐渐变小时,由处理器601控制触摸显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与终端600的正面之间的距离逐渐变大时,由处理器601控制触摸显示屏605从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图6中示出的结构并不构成对终端600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由处理器执行以完成上述实施例中的直播媒体流获取方法。例如,该计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

上述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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