一种基于推流终端网络状况的优化方法和系统以及推流终端与流程

文档序号:11628631阅读:204来源:国知局
一种基于推流终端网络状况的优化方法和系统以及推流终端与流程

本发明涉及网络技术领域,特别涉及一种基于推流终端网络状况的优化方法和系统以及推流终端。



背景技术:

近些年来,随着互联网技术的快速发展,各种流媒体应用逐渐进入广大网民的日常生活中,众多直播实时类业务因其原创新颖的内容吸引大量用户,如何对音视频延迟进行优化,提升用户体验成为音视频直播业务发展的方向。

目前,随着我国带宽提速的发展以及移动通信技术的快速发展,人们不再受地域的限制,可以随时随地通过互联网获取文字、图片和视频,这大大丰富了人们的业余生活。随着智能手机的普及和移动带宽的迅猛发展,手机端推流成为了视频的一种重要的方式,越来越多的人开始用手机直播视频。

但是,现有的移动网络存在不稳定性、多变性以及容易受环境和地域影响的缺点,导致移动端推流存在不稳定性;而且移动推流端上传的带宽是不可控的,因此很容易受客观因素的影响,一旦出现带宽波动,观看端很容易出现卡顿、花屏和延迟增大等情况,这会影响视频观看的流畅度,进而影响客户体验。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种基于推流终端网络状况的优化方法和系统以及推流终端。所述技术方案如下:

一方面,一种基于推流终端网络状况的优化方法,包括以下步骤:

所述推流终端根据当前实时上行带宽来确定当前数据的传送时间;

判断当前数据的传送时间是否超过预设值;

若当前数据的传送时间超过预设值,则采取丢帧方式减少上传的数据量。

进一步的,所述推流终端根据当前实时上行带宽来确定当前数据的传送时间的步骤具体包括:

所述推流终端采集音频数据和/或视频数据;

分别对采集到的音频数据和/或视频数据进行音频编码和/或视频编码;

将编码后的音频数据和/或编码后的视频数据封装成流媒体格式数据;

将封装后的所述流媒体格式数据放入待发送的队列中;

从所述队列中取出所述流媒体格式数据发送到中转终端;

通过实时统计单位时间内发送所述流媒体格式数据的量来计算当前实时上行带宽;

根据所述当前实时上行带宽来确定当前数据的传送时间。

进一步的,所述方法还包括以下步骤:

若当前数据的传送时间没有超过预设值,则继续从待发送的队列中依序发送剩余的流媒体格式数据。

另一方面,一种基于推流终端网络状况的优化系统,包括推流终端、观看终端以及中转终端,所述推流终端通过所述中转终端将采集到的流媒体格式数据推送给所述观看终端进行观看,其中,所述推流终端具体包括:

确定模块,用于根据当前实时上行带宽来确定当前数据的传送时间;

判断模块,用于判断当前数据的传送时间是否超过预设值;

丢帧模块,用于若当前数据的传送时间超过预设值,则采取丢帧方式减少上传的数据量。

进一步的,所述确定模块具体包括:

采集子模块,用于采集音频数据和/或视频数据;

编码子模块,用于分别对采集到的音频数据和/或视频数据进行音频编码和/或视频编码;

流协议子模块,用于将编码后的音频数据和/或编码后的视频数据封装成流媒体格式数据;

带宽检测子模块,用于将封装后的所述流媒体格式数据放入待发送的队列中,从所述队列中取出所述流媒体格式数据发送到中转终端,通过实时统计单位时间内发送所述流媒体格式数据的量来计算当前实时上行带宽,并根据所述当前实时上行带宽来确定当前数据的传送时间。

进一步的,所述推流终端具体还包括:

发送模块,用于若当前数据的传送时间没有超过预设值,则继续从待发送的队列中依序发送剩余的流媒体格式数据。

又一方面,一种推流终端,包括:

确定模块,用于根据当前实时上行带宽来确定当前数据的传送时间;

判断模块,用于判断当前数据的传送时间是否超过预设值;

丢帧模块,用于若当前数据的传送时间超过预设值,则采取丢帧方式减少上传的数据量。

进一步的,所述确定模块具体包括:

采集子模块,用于采集音频数据和/或视频数据;

编码子模块,用于分别对采集到的音频数据和/或视频数据进行音频编码和/或视频编码;

流协议子模块,用于将编码后的音频数据和/或编码后的视频数据封装成流媒体格式数据;

带宽检测子模块,用于将封装后的所述流媒体格式数据放入待发送的队列中,从所述队列中取出所述流媒体格式数据发送到中转终端,通过实时统计单位时间内发送所述流媒体格式数据的量来计算当前实时上行带宽。

进一步的,所述带宽检测子模块,还用于根据所述当前实时上行带宽来确定当前数据的传送时间。

进一步的,所述推流终端具体还包括:

发送模块,用于若当前数据的传送时间没有超过预设值,则继续从待发送的队列中依序发送剩余的流媒体格式数据。

本发明实施例提供的技术方案带来的有益效果是:能实时检测推流终端的网络情况,实时了解上行带宽的变化,从源头上控制生产,减少生产量,减少上传数据量,使客户可以在推流终端的上行带宽不佳的情况下,还能流畅的推流,从而极大的提高了用户的观看体验,当检测到带宽逐渐变好时,就停止丢帧,保护了推流终端推流的质量。

附图说明

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

图1为本发明一实施方式中基于推流终端网络状况的优化方法流程图;

图2为本发明一实施方式中图1所示步骤s1的详细子步骤流程图;

图3为本发明一实施方式中基于推流终端网络状况的优化系统10的内部结构示意图;

图4为本发明一实施方式中图3所示推流终端11的确定模块111内部结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

以下将对本发明所提供的一种基于推流终端网络状况的优化方法进行详细说明。

请参阅图1,为本发明一实施方式中基于推流终端网络状况的优化方法流程图。

在一实施方式中,该基于推流终端网络状况的优化方法应用于基于推流终端网络状况的优化系统,其中,所述基于推流终端网络状况的优化系统包括推流终端、观看终端以及中转终端,所述推流终端通过所述中转终端将采集到的流媒体格式数据推送给所述观看终端进行观看,推流终端是指用户终端设备,包括手机、平板电脑、掌上电脑等,中转终端可以是网络中的各种中转设备,例如路由器和服务器等,具体可以是cdn流媒体集群,观看终端可以是各种流媒体数据的接收显示终端,例如移动显示终端(如手机、平板电脑等)和固定显示终端(如台式计算机等)。推流终端至少包括语音采集设备(如麦克风等)和视频采集设备(如摄像头等),通过这些设备采集流媒体格式数据,并将采集到的流媒体格式数据通过中转终端的转发推送给观看终端进行观看。

本发明的方法主要优化推流终端,从源头处理,推流终端的功能可以分为采集、编码和发送三个环节,各个环节又相互影响,先采集后编码最后是发送,这是一个生产消费的过程,本发明通过发送环节,从最终消费的情况来确定前面的环节是否丢帧,以结果导向来控制生产,直接从采集的环节入手,控制采集的频率。

在步骤s1中,推流终端根据当前实时上行带宽来确定当前数据的传送时间。

在一实施方式中,所述推流终端根据当前实时上行带宽来确定当前数据的传送时间的步骤s1具体包括s11-s17七个子步骤,如图2所示。

请参阅图2,为本发明一实施方式中图1所示步骤s1的详细子步骤流程图。

在步骤s11中,推流终端采集音频数据和/或视频数据。

在一实施方式中,推流终端通过其语音采集设备(如麦克风等)采集语音数据,如脉码编码调制(pulsecodemodulation,pcm)格式的语音数据,同时推流终端通过其视频采集设备(如摄像头等)或系统的接口,以回调方式采集获取如yuv格式的视频数据,或者如pcm格式的语音数据。

在一实施方式中,具体采集步骤可以举例如下:

(1)对于视频而言:通过其视频采集设备(如摄像头等)采集视频数据,设置一个帧率、宽高等信息,例如帧率25帧,宽高720*1080,系统每隔1000ms/25=40ms回调一个yuv数据;

(2)对于音频而言:通过其语音采集设备(如麦克风等)采集语音数据,设置采样率、通道数、位数等信息。例如采样率44100,通道数2,位数16位,每秒采集44100个样本,每个样本有两个通道,各16位。

在步骤s12中,分别对采集到的音频数据和/或视频数据进行音频编码和/或视频编码。例如,用ffmpeg、x264、faac、硬编等编码工具,分别对yuv和pcm编码成h264和aac。

在一实施方式中,采用h.264视频编码方法将采集到的视频数据编码成h.264格式的视频数据,采用高级音频编码(advancedaudiocoding,aac)方法将采集到的音频数据编码成aac格式的音频数据。

在一实施方式中,具体编码步骤可以举例如下:

(1)视频编码:初始化视频的编码参数,宽高、帧率、码率、码率模式等信息,调用编码器的编码接口,把系统回调的与数据,编码成h264,在把h264通过流协议子模块,封装成流媒体格式。例如宽高720*1080,帧率25,码率1mbps等,通过x264、ffmpeg硬编把yuv编码成h264;

(2)音频编码:初始音频编码参数,采样率、通道数、位数等信息,通过系统回调的pcm数据,通过aac编码器编接口码成aac。例如采样率44100,通道数2,位数16位,通过faac、硬编等编码器,把pcm编码成aac;

(3)在通道采集的的顺序,按照顺序放入流媒体协议模块,把音视频数据转化成流媒体格式的数据。

在步骤s13中,将编码后的音频数据和/或编码后的视频数据封装成流媒体格式数据。根据不同的流媒体协议,例如用流媒体rtmp协议,把h264和aac编码成符合rtmp协议的数据。

在一实施方式中,采用实时消息传输(realtimemessagingprotocol,rtmp)协议,将编码后的音频数据和/或编码后的视频数据封装成rtmp格式的流媒体数据。

在一实施方式中,具体封装步骤可以举例如下:

(1)采用rtmp协议,与服务器建立连接,获取一个发布流明的地址;

(2)获取编码器生成的h.264和aac等数据,按照编码器采集的时间进行排序,按照排序的时间,分别对h.264和aac等进行rtmp协议的封装;

(3)把封装好的流媒体格式的数据,放入的发送队列,放入对列的时候,会把一些编码的信息如视频的宽高、码率、帧率,音频的采样率和通道数等信息,会一起存入队列,放入队列的数据会等待发送模块来发送数据。

在步骤s14中,将封装后的所述流媒体格式数据放入待发送的队列中。

在一实施方式中,在推流终端的存储器中划分有一暂存区,用于暂时存储流媒体数据,采用rtmp协议封装后的流媒体数据放入待发送的队列中,其中,待发送的队列存储在存储器的暂存区中。

在步骤s15中,从队列中取出流媒体格式数据发送到中转终端。

在步骤s16中,通过实时统计单位时间内发送所述流媒体格式数据的量来计算当前实时上行带宽。

在一实施方式中,具体计算步骤可以举例如下:

(1)从队列取出数据后,发送一帧记录下发送的时间和发送的数据大小;

(2)因为是根据实时速率与发送队列缓冲的数据来判断延迟,需要配置一个统计的单位时间,这个就是单位时间。根据配置的单位时间,统计当前配置的单位时间内发送的总数据,总数据/总时长=发送速率;

(3)计算在待发送的队列中剩余的缓存数据量,然后根据计算得到的上行带宽和在待发送队列中缓存的剩余流媒体数据的数据量来统计当前这些待发送流媒体数据的传送时间。

在一实施方式中,单位时间可以根据需求灵活配置,例如单位时间为1s,把待发送队列中的流媒体数据取出部分数据放入发送模块中进行发送,实时统计单位时间内发送部分流媒体数据的量,例如在单位时间1s内发送了8m比特的流媒体数据,则计算得到的上行数据的发送速率为8mbps,此时的上行带宽就为1m。

在步骤s17中,根据所述当前实时上行带宽来确定当前数据的传送时间。

在一实施方式中,在发送了部分数据以统计到上行带宽之后,计算在待发送的队列中剩余的缓存数据量,然后根据计算得到的上行带宽和在待发送队列中缓存的剩余流媒体数据的数据量来统计当前这些待发送流媒体数据的传送时间,例如,单位时间为1s,待发送队列中的流媒体数据总共有12m比特大小,之前单位时间所取出部分数据(如8m比特)统计得到上行数据的发送速率为8mbps,也就是上行带宽为1m,此时统计剩余流媒体数据的量为4m比特,因此,根据当前实时上行带宽和剩余流媒体数据量计算得到当前这些待发送流媒体数据的传送时间为500ms,也就是说预计发送完剩余的这些流媒体数据需要500ms的时间。请继续参阅图1,在步骤s2中,判断当前数据的传送时间是否超过预设值。

在一实施方式中,预设值可以根据需求灵活设置,例如预设值为400ms。

若当前数据的传送时间超过预设值,则在步骤s3中,采取丢帧方式减少上传的数据量。

在一实施方式中,具体丢帧步骤可以举例如下:

(1)根据目前缓存的总数据量,与当前实时速率,进行计算,总数据量/实时速率=传送时间,预设一个,传送时间t1,当前的传送时间tn;

(2)编码的时候初始化一个帧率k,预先设置丢帧的下限k1,上限k2,为当前设置帧率,kn为当前实际帧率,初始化kn=k,当前帧率的范围在k1和k2之间,即k1<=kn<=k2,一般默认k2=k,初始化为k2的上限,新的帧率为kn=kn/(tn/t1);这个帧率是实时变化的;

(3)若当前数据的传送时间超过预设值,即tn>t1,采取丢帧方式减少上传的数据量。具体丢帧方法,若是kn>k2,则kn=k2,若kn<k1,则kn=k1;

(4)若当前数据的传送时间没有超过预设值,即tn<t1,则逐步增加帧率,直到回复当前的最打帧率,增加的公式为:新kn=kn/(tn/t1)。

在一实施方式中,例如设置初始化的帧率25,上限为25,下限为10,如果根据上述的例子计算得到当前数据的传送时间为500ms的话,由于500ms大于预设值400ms,如果全部上传,由于带宽的影响会导致观看终端接收到的直播推流出现卡顿、花屏和延迟增大等不佳的观看体验,因此,为了提高观看体验,就启动丢帧模块,新的帧率为kn=kn/(tn/t1),按照公式新的kn=25/(500/400),即kn=20帧,每秒产生20帧,采取丢帧方式减少上传的数据量,直到剩余缓存数据量的传送时间少于预设值400ms。若是上述的例子计算得到当前数据的传送时间为300ms的话,当前帧率为20,新的帧率为kn=kn/(tn/t1),按照公式新的kn=20/(300/400),即kn=26帧,因为kn>上限k2,kn=k2=25帧。

若当前数据的传送时间没有超过预设值,且帧率达到上限,则在步骤s4中,继续从待发送的队列中依序发送剩余的流媒体格式数据。

在一实施方式中,具体发送步骤可以举例如下:

(1)采用rtmp流媒体协议,已经和服务器进行了rtmp协议的对接,循环从发送队列取出一个带发送的流媒体格式的数据,发送给流媒体数据;

(2)服务器收到客户单的流媒体的格式的数据,在分发给各个客户端。

在一实施方式中,如果计算得到当前数据的传送时间为150ms,小于预设值400ms,则表明当前上传的带宽充足,为了保证推流终端的推流质量,就停止丢帧,增加帧率,继续从待发送的队列中依序发送剩余的流媒体格式数据,保证推流业务的流畅度,提高观看终端的观看体验。

本发明提供的一种在tcp协议基础上的基于推流终端网络状况的优化方法,能实时检测推流终端的网络情况,实时了解上行带宽的变化,从源头上控制生产,减少生产量,减少上传数据量,使客户可以在推流终端的上行带宽不佳的情况下,还能流畅的推流,从而极大的提高了用户的观看体验,当检测到带宽逐渐变好时,就停止丢帧,保护了推流终端推流的质量。

以下将对本发明所提供的一种基于推流终端网络状况的优化系统进行详细说明。

请参阅图3,所示为本发明一实施方式中,在tcp基础上的,基于推流终端网络状况的优化系统10的内部结构示意图。

在一实施方式中,基于推流终端网络状况的优化系统10包括推流终端11、观看终端13以及中转终端12,推流终端11通过中转终端12将采集到的流媒体格式数据推送给观看终端13进行观看,推流终端11是指用户终端设备,包括手机、平板电脑和掌上电脑等,中转终端12可以是网络中的各种中转设备,例如路由器和服务器等,观看终端13可以是各种流媒体数据的接收显示终端,例如移动显示终端(如手机和平板电脑等)和固定显示终端(如台式计算机等)。推流终端11至少包括语音采集设备(如麦克风等)和视频采集设备(如摄像头等),通过这些设备采集流媒体格式数据,并将采集到的流媒体格式数据通过中转终端12的转发推送给观看终端进行观看,其中,中转终端12可以包括多个,推流终端11通过一个中转终端12或者多个中转终端12将采集到的流媒体格式数据推送给观看终端13进行观看。

本发明的系统主要优化推流终端11,从源头处理,推流终端11的功能可以分为采集、编码和发送三个环节,各个环节又相互影响,先采集后编码最后是发送,这是一个生产消费的过程,本发明通过发送环节,从最终消费的情况来确定前面的环节是否丢帧,以结果导向来控制生产,直接从采集的环节入手,控制采集的频率。

推流终端11具体包括:确定模块111、判断模块112、丢帧模块113以及发送模块114。

确定模块111,用于根据当前实时上行带宽来确定当前数据的传送时间。

其中,确定模块111具体包括:采集子模块1111、编码子模块1112、流协议子模块1113以及带宽检测子模块1114,如图4所示。

请参阅图4,所示为本发明一实施方式中图3所示推流终端11的确定模块111内部结构示意图。

采集子模块1111,用于采集音频数据和/或视频数据。

在一实施方式中,采集子模块1111通过其语音采集设备(如麦克风等)采集语音数据,如pcm格式的语音数据,同时采集子模块1111通过其视频采集设备(如摄像头等)或系统的接口,以回调方式采集获取如yuv格式的视频数据,或者如pcm格式的语音数据。

在一实施方式中,具体采集步骤可以举例如下:

(1)对于视频而言:通过其视频采集设备(如摄像头等)采集视频数据,设置一个帧率、宽高等信息,例如帧率25帧,宽高720*1080,系统每隔1000ms/25=40ms回调一个yuv数据;

(2)对于音频而言:通过其语音采集设备(如麦克风等)采集语音数据,设置采样率、通道数、位数等信息。例如采样率44100,通道数2,位数16位,每秒采集44100个样本,每个样本有两个通道,各16位。

编码子模块1112,用于分别对采集到的音频数据和/或视频数据进行音频编码和/或视频编码。例如,用ffmpeg、x264、faac、硬编等编码工具,分别对yuv和pcm编码成h264和aac。

在一实施方式中,采用h.264视频编码方法将采集到的视频数据编码成h.264格式的视频数据,采用aac方法将采集到的音频数据编码成aac格式的音频数据。

在一实施方式中,具体编码步骤可以举例如下:

(1)视频编码:初始化视频的编码参数,宽高、帧率、码率、码率模式等信息,调用编码器的编码接口,把系统回调的与数据,编码成h264,在把h264通过流协议子模块,封装成流媒体格式。例如宽高720*1080,帧率25,码率1mbps等,通过x264、ffmpeg硬编把yuv编码成h264;

(2)音频编码:初始音频编码参数,采样率、通道数、位数等信息,通过系统回调的pcm数据,通过aac编码器编接口码成aac。例如采样率44100,通道数2,位数16位,通过faac、硬编等编码器,把pcm编码成faac;

(3)在通道采集的的顺序,按照顺序放入流媒体协议模块,把音视频数据转化成流媒体格式的数据。

流协议子模块1113,用于将编码后的音频数据和/或编码后的视频数据封装成流媒体格式数据。根据不同的流媒体协议,例如用流媒体rtmp协议,把h264和aac编码成符合rtmp协议的数据。

在一实施方式中,采用rtmp协议,将编码后的音频数据和/或编码后的视频数据封装成rtmp格式的流媒体数据。

在一实施方式中,具体封装步骤可以举例如下:

(1)采用rtmp协议,与服务器建立连接,获取一个发布流明的地址;

(2)获取编码器生成的h.264和aac等数据,按照编码器采集的时间进行排序,按照排序的时间,分别对h.264和aac等进行rtmp协议的封装;

(3)把封装好的流媒体格式的数据,放入的发送队列,放入对列的时候,会把一些编码的信息如视频的宽高、码率、帧率,音频的采样率和通道数等信息,会一起存入队列,放入队列的数据会等待发送模块来发送数据。

带宽检测子模块1114,用于将封装后的所述流媒体格式数据放入待发送的队列中,通过实时统计单位时间内发送所述流媒体格式数据的量来计算当前实时上行带宽,并根据所述当前实时上行带宽来确定当前数据的传送时间。

在一实施方式中,在推流终端11的存储器中划分有一暂存区,用于暂时存储流媒体数据,采用rtmp协议封装后的流媒体数据放入待发送的队列中,其中,待发送的队列存储在存储器的暂存区中。

在一实施方式中,具体计算步骤可以举例如下:

(1)从队列取出数据后,发送一帧记录下发送的时间和发送的数据大小;

(2)因为是根据实时速率与发送队列缓冲的数据来判断延迟,需要配置一个统计的单位时间,这个就是单位时间。根据配置的单位时间,统计当前配置的单位时间内发送的总数据,总数据/总时长=发送速率;

(3)计算在待发送的队列中剩余的缓存数据量,然后根据计算得到的上行带宽和在待发送队列中缓存的剩余流媒体数据的数据量来统计当前这些待发送流媒体数据的传送时间。

在一实施方式中,单位时间可以根据需求灵活配置,例如单位时间为1s,把待发送队列中的流媒体数据取出部分数据放入发送模块中进行发送,实时统计单位时间内发送部分流媒体数据的量,例如在单位时间1s内发送了8m比特的流媒体数据,则计算得到的上行数据的发送速率为8mbps,此时的上行带宽就为1m。

在一实施方式中,在发送了部分数据以统计到上行带宽之后,计算在待发送的队列中剩余的缓存数据量,然后根据计算得到的上行带宽和在待发送队列中缓存的剩余流媒体数据的数据量来统计当前这些待发送流媒体数据的传送时间,例如,待发送队列中的流媒体数据总共有12m比特大小,之前取出部分数据(如8m比特)统计得到上行数据的发送速率为8mbps,也就是上行带宽为1m,此时统计剩余流媒体数据的量为4m比特,因此,根据当前实时上行带宽和剩余流媒体数据量计算得到当前这些待发送流媒体数据的传送时间为500ms,也就是说预计发送完剩余的这些流媒体数据需要500ms的时间。

请继续参阅图3,判断模块112,用于判断当前数据的传送时间是否超过预设值。

在一实施方式中,预设值可以根据需求灵活设置,例如预设值为400ms。

丢帧模块113,用于若当前数据的传送时间超过预设值,则采取丢帧方式减少上传的数据量。

在一实施方式中,具体丢帧步骤可以举例如下:

(1)根据目前缓存的总数据量,与当前实时速率,进行计算,总数据量/实时速率=传送时间,预设一个,传送时间t1,当前的传送时间tn;

(2)编码的时候初始化一个帧率k,预先设置丢帧的下限k1,上限k2,为当前设置帧率,kn为当前实际帧率,初始化kn=k,当前帧率的范围在k1和k2之间,即k1<=kn<=k2,一般默认k2=k,初始化为k2的上限,新的帧率为kn=kn/(tn/t1);这个帧率是实时变化的;

(3)若当前数据的传送时间超过预设值,即tn>t1,采取丢帧方式减少上传的数据量。具体丢帧方法,若是kn>k2,则kn=k2,若kn<k1,则kn=k1;

(4)若当前数据的传送时间没有超过预设值,即tn<t1,则逐步增加帧率,直到回复当前的最打帧率,增加的公式为:新kn=kn/(tn/t1)。

在一实施方式中,例如设置初始化的帧率25,上限为25,下限为10,如果根据上述的例子计算得到当前数据的传送时间为500ms的话,由于500ms大于预设值400ms,如果全部上传,由于带宽的影响会导致观看终端13接收到的直播推流出现卡顿、花屏和延迟增大等不佳的观看体验,因此,为了提高观看体验,就启动丢帧模块,新的帧率为kn=kn/(tn/t1),按照公式新的kn=25/(500/400),即kn=20帧,每秒产生20帧,采取丢帧方式减少上传的数据量,直到剩余缓存数据量的传送时间少于预设值400ms。若是上述的例子计算得到当前数据的传送时间为300ms的话,当前帧率为20,新的帧率为kn=kn/(tn/t1),按照公式新的kn=20/(300/400),即kn=26帧,因为kn>上限k2,kn=k2=25帧。

发送模块114,用于若当前数据的传送时间没有超过预设值,且帧率达到上限,则继续从待发送的队列中依序发送剩余的流媒体格式数据。

在一实施方式中,具体发送步骤可以举例如下:

(1)采用rtmp流媒体协议,已经和服务器进行了rtmp协议的对接,循环从发送队列取出一个带发送的流媒体格式的数据,发送给流媒体数据;

(2)服务器收到客户单的流媒体的格式的数据,在分发给各个客户端。

在一实施方式中,如果计算得到当前数据的传送时间为150ms,小于预设值200ms,则表明当前上传的带宽充足,为了保证推流终端11的推流质量,就停止丢帧,增加帧率,继续从待发送的队列中依序发送剩余的流媒体格式数据,保证推流业务的流畅度,提高观看终端的观看体验。

本发明提供的一种在tcp协议基础上的基于推流终端网络状况的优化系统10,能实时检测推流终端的网络情况,实时了解上行带宽的变化,从源头上控制生产,减少生产量,减少上传数据量,使客户可以在推流终端的上行带宽不佳的情况下,还能流畅的推流,从而极大的提高了用户的观看体验,当检测到带宽逐渐变好时,就停止丢帧,保护了推流终端推流的质量。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

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

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

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