CN109862400A - 一种流媒体传输方法、装置及其系统 - Google Patents
一种流媒体传输方法、装置及其系统 Download PDFInfo
- Publication number
- CN109862400A CN109862400A CN201910119777.2A CN201910119777A CN109862400A CN 109862400 A CN109862400 A CN 109862400A CN 201910119777 A CN201910119777 A CN 201910119777A CN 109862400 A CN109862400 A CN 109862400A
- Authority
- CN
- China
- Prior art keywords
- code stream
- streaming media
- caching
- data
- reception device
- 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
Abstract
本发明提供一种流媒体传输方法,包括:流媒体发送装置根据网络状态同时第一路编码和第二路编码流媒体,形成第一码流和第二码流;分别打包并缓存所述第一码流和第二码流,形成第一码流缓存和第二码流缓存,其中,所述第一码流缓存和所述第二码流缓存的时间长度相同;流媒体发送装置向流媒体接收装置发送所述第一码流缓存的第一时间段数据;每隔第二时间段更新所述第二码流缓存。本发明根据网络状态动态调节缓存长度以及关键帧间隔,从而能够在网络状态不好的情况下,较高质量的传输显示的图像,同时能够在出现丢包的情况下快速恢复显示的图像。
Description
技术领域
本发明涉及流媒体数据传输领域,尤其涉及流媒体网络传输技术,特别地,但不构成对本发明的限制,涉及一种流媒体编解码技术。
背景技术
现在流媒体在网络状态差的情况下比如延时很大,或者有丢包的情况下,常用方法为,通过分析网络的状态,当网络状态不好的情况下增加I帧((I frame)又称为内部画面(intra picture)单独可以解码一副完整的图像)的间隔来达到流媒体接收装置播放的时候不会长时间的卡滞花屏。但是这种方案会带来一些问题,增加I帧会增加网络的负载压力,在网络状态本来就不好的情况下这样做会使得网络的状态进一步变差,没有从本质上解决这一问题。
还有一种常规的做法是不增加I帧也不减少I帧,保持原来的码流,但是重新发送丢失码流包,这种方法在特定情况下也存在相应的缺点,如果编码视频的P帧(前项预测编码帧)B帧(双向预测编码帧)过多关键I帧过少,虽然会减少画面花屏或者卡顿的概率但是一旦产生会让产生花屏的时间变的很长,不能够快速恢复流媒体接收装置的解码播放画面,如果关键帧过多又会让宽带负载变得很大,在这两种情况下都会产生不好的影响结果。
发明内容
为解决上述网络状态差而导致流媒体传输卡滞花屏的缺陷,本发明提供了一种流媒体传输的方法、装置及系统,其目的在于能够在网络状态不好的情况下,较高质量的传输显示的图像,同时能够减少网络的负载压力,让流媒体接收装置的解码播放画面比较流畅,也能够在出现丢包的情况下快速恢复显示的图像。
为了实现上述目的,本发明采用的一种技术方案是:一种流媒体传输方法,所述方法包括:
网络检测模块检测当前网络状态,并分别通知编码模块和打包缓存模块;第一编码模块根据网络状态第一路编码流媒体,形成第一码流;第二编码模块根据网络状态第二路编码流媒体,形成第二码流;
第一打包缓存模块打包并缓存所述第一码流,形成第一码流缓存,第二打包缓存模块打包并缓存所述第二码流,形成第二码流缓存,其中所述第一码流缓存和所述第二码流缓存的时间长度相同;
服务器模块根据网络状态取出第一码流缓存第一时间段的数据,发送至流媒体接收装置,并且每隔第二时间段更新所述第二码流缓存。
优选的,流媒体接收装置的接收模块接收来自服务器模块的数据,网络检测模块检测当前网络状态,缓存模块根据网络状态对所述数据建立缓存。
优选的,第一编码模块根据网络状态调节第一路编码的编码码率和关键帧间隔。
优选的,打包缓存模块根据网络状态调节所述第一码流缓存和第二码流缓存的时间长度。
优选的,服务器模块在发送完第一码流缓存第一时间段数据后,每隔第二时间段丢弃第二码流缓存中与第一时间段数据对应的缓存数据。
优选的,当流媒体接收装置在缓存过程中发现有数据丢失,发送第一请求至消息处理模块;
优选的,所述消息处理模块接收到所述第一请求后,检查所述第一码流缓存,其中,
当所述缓存中存在所述第一请求对应的数据时,则服务器模块取出所述数据并重新发送至流媒体接收装置;
当所述缓存中不存在所述第一请求对应的数据时,则所述服务器模块向所述流媒体接收装置发送第一通知。
优选的,所述流媒体接收装置接收所述第一通知或经过预设的时间值后,丢弃与所述数据相关的一组数据。
优选的,所述流媒体接收装置接收所述第一通知或经过预设的时间值后,向所述消息处理模块发送第二请求;
优选的,所述消息处理模块接收所述第二请求后,检查所述第二码流缓存;其中,当所述第二码流缓存中存在丢失数据对应的关键帧时,服务器模块向所述流媒体接收装置发送所述关键帧;
当所述第二码流缓存中不存在所述关键帧时,服务器模块向所述流媒体接收装置发送所述第二通知。
优选的,所述流媒体接收装置接收所述第二通知或经过预设的时间值后,丢弃与所述数据相关的一组数据。
优选的,所述服务器模块可以在原始协议上添加特殊标志符号,或添加私有协议,或通过不同的端口发送所述数据和/或所述关键帧。
与现有技术相比,本发明根据网络状态动态调节缓存长度以及关键帧间隔,从而能够在网络状态不好的情况下,较高质量的传输显示的图像,同时能够减少网络的负载压力,让流媒体接收装置的解码播放画面比较流畅,同时能够在出现丢包的情况下快速恢复显示的图像。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1:本发明实施例提供的一种流媒体传输方法的流程示意图;
图2:本发明另一实施例提供的一种流媒体传输方法的流程示意图;
图3:本发明另一实施例提供的一种流媒体传输方法的流程示意图。
图4:本发明另一实施例提供的流媒体发送装置的结构示意图,其中,401为处理器,402为网络接口,403为存储器,404为总线;
图5:本发明实施例中的一种流媒体传输系统的结构示意图,其中,501为流媒体发送装置,502为网络,503为流媒体接收装置。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中提及的流媒体传输,可以为流媒体视频数据、流媒体音频数据或其他流媒体类型数据的传输,相应的所述流媒体发送装置可以为视频服务器、音频服务器或音视频会话服务器等流媒体发送装置,也可以为与流媒体接收装置对等的设备终端,所述流媒体接收装置可以通过互联网与所述流媒体发送装置进行数据通信,并可以对流媒体发送装置传输来的流媒体数据进行播放,所述流媒体接收装置可以包括个人电脑、智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑、移动互联网设备(MID,MobileInternet Devices)或穿戴式智能设备等互联网设备。
此外,本发明可以应用在局域网,城域网或者是广域网,只要是能够传输流媒体的地方都可以使用。传输的视频编码类型为mpeg2,mpeg4或者h264等含有关键帧(I帧)的视频编码压缩方式。
图1是本发明实施例提供的一种流媒体传输方法的流程示意图,如图所示本实施例中流媒体传输方法可以包括:
S101,流媒体发送装置根据网络状态同时第一路编码和第二路编码流媒体,形成第一码流和第二码流。
具体的,第一编码模块对流媒体进行可调视频编码,第二编码模块对流媒体进行关键帧编码,产生固定时间间隔的关键帧视频编码,具体实现中,固定时间间隔可以为0.5s或1s。当网络状态变差时,第一编码模块减小编码的码率并增大I帧的间隔,从而减小流媒体传输流的大小来减小使用的网络带宽。同时,步骤S102中,第一打包缓存模块和第二打包缓存模块按比例增大缓存数据的大小,网络越差缓存打包后的视频时间长度越长,第一打包缓存模块和第二打包缓存模块的缓存时间长度保持一致。在可选实施例中,首先检测当前流媒体发送装置和流媒体接收装置间的传输速度,然后根据当前的速度设置编码的码率,设置编码码率小于等于传输速度,使得数据的解码端不会一直处于等待接收数据的状态而导致画面花屏卡顿。当传输速度下降时,可以减少关键帧的数量,比如从每隔几帧设置一个关键帧变到每几十帧设置一个关键帧,从而进一步减小码流以减轻网络传输的负担,还能提高画面的质量和播放的流畅度。
S102,分别打包并缓存所述第一码流和第二码流,形成第一码流缓存和第二码流缓存,其中,所述第一码流缓存和所述第二码流缓存的时间长度相同;
具体的,打包缓存模块的缓存遵循先进先出的原则,第一打包缓存模块打包缓存可调视频编码,第二打包缓存模块打包缓存I帧视频编码。在可选实施例中,打包缓存模块的封装数据格式可以依据传输协议,例如TransportStream(TS)包、ProgramStream(PS)包、Real-time Transport Protocol(RTP)包等。
在可选实施例中,当打包缓存模块的缓存空间满了后,可以选择如下三种方式中的一种进行数据处理:方式一,丢弃在后编码的数据,等待最早的缓存数据发送后插入循环队列;方式二,丢弃最早打包缓存的数据,然后让新的数据打包缓存;方式三,增大缓存的队列的长度,根据系统的可用内存大小设置一个最大的缓存队列的长度。
S103,流媒体发送装置取出所述第一码流缓存第一时间段的数据,并发送至流媒体接收装置;
具体的,在无数据丢失的情况下,服务器模块读取第一缓存的数据,发送至流媒体接收装置,发送的第一时间段根据当前流媒体发送装置与流媒体接收装置连接的网络状态决定。在可选实施例中,首次发送的网络状态可以通过流媒体发送装置根据ICMP(InternetControl Message Protocol)Internet控制报文协议发送ICMP包至目的流媒体接收装置,根据ICMP包收发的数据量除以传输时间,可以判断当前的网络状态跟传输速度,为了更加准确,这个过程可以重复几次取平均值。
在可选实施例中,当前网络的状态检测可以是周期性的检测,比如每隔5分钟,10分钟检测一次,以方便检测当前网络状态的变化。流媒体接收装置的网络检测方式和流媒体发送装置一样,通过发送ICMP包给流媒体发送装置,然后根据发送包和收到响应包的大小、花费的时间计算出当前的网络状态及网速。
S104,每隔第二时间段更新所述第二码流缓存;
具体的,服务器模块发送完第一码流缓存第一时间段的数据后,相隔第二时间段丢弃第二码流缓存中与第一时间段对应的数据。可选实施例中,由于缓存的大小是有限制的,当第一码流缓存满了后,丢弃第一码流缓存中最早的发送完的数据以写入新数据,一段时间后,丢弃第二缓存中的对应时间点的关键帧缓存数据,并缓存新数据所对应的关键帧数据,以保证第一码流缓存和第二码流缓存的缓存时间一致,使得第一码流缓存的数据一定在第二码流缓存中有对应的数据。
图2是本发明另一实施例提供的一种流媒体传输方法的流程示意图,如图所示本实施例中流媒体传输方法可以包括:
S201,流媒体发送装置根据网络状态同时第一路编码和第二路编码流媒体,形成第一码流和第二码流。
具体的,第一编码模块对流媒体进行可调视频编码,第二编码模块对流媒体进行关键帧编码,产生固定时间间隔的关键帧视频编码,具体实现中,固定时间间隔可以为0.5s或1s。当网络状态变差时,第一编码模块减小编码的码率并增大I帧的间隔,从而减小流媒体传输流的大小来减小使用的网络带宽。同时,步骤S202中,第一打包缓存模块和第二打包缓存模块按比例增大缓存数据的大小,网络越差缓存打包后的视频时间长度越长,第一打包缓存模块和第二打包缓存模块的缓存时间长度保持一致。在可选实施例中,首先检测当前流媒体发送装置和流媒体接收装置间的传输速度,然后根据当前的速度设置编码的码率,设置编码码率小于等于传输速度,使得数据的解码端不会一直处于等待接收数据的状态而导致画面花屏卡顿。当传输速度下降时,可以减少关键帧的数量,比如从每隔几帧设置一个关键帧变到每几十帧设置一个关键帧,从而进一步减小码流以减轻网络传输的负担,还能提高画面的质量和播放的流畅度。
S202,分别打包并缓存所述第一码流和第二码流,形成第一码流缓存和第二码流缓存,其中,所述第一码流缓存和所述第二码流缓存的时间长度相同;
具体的,打包缓存模块的缓存遵循先进先出的原则,第一打包缓存模块打包缓存可调视频编码,第二打包缓存模块打包缓存I帧视频编码。在可选实施例中,打包缓存模块的封装数据格式可以依据传输协议,例如TransportStream(TS)包、ProgramStream(PS)包、Real-time Transport Protocol(RTP)包等。
在可选实施例中,当打包缓存模块的缓存空间满了后,可以选择如下三种方式中的一种进行数据处理:方式一,丢弃在后编码的数据,等待最早的缓存数据发送后插入循环队列;方式二,丢弃最早打包缓存的数据,然后让新的数据打包缓存;方式三,增大缓存的队列的长度,根据系统的可用内存大小设置一个最大的缓存队列的长度。
S203,流媒体发送装置取出所述第一码流缓存第一时间段的数据,并发送至流媒体接收装置;
具体的,在无数据丢失的情况下,服务器模块读取第一缓存的数据,发送至流媒体接收装置,发送的第一时间段根据当前流媒体发送装置与流媒体接收装置连接的网络状态决定。在可选实施例中,首次发送的网络状态可以通过流媒体发送装置根据ICMP(InternetControl Message Protocol)Internet控制报文协议发送ICMP包至目的流媒体接收装置,根据ICMP包收发的数据量除以传输时间,可以判断当前的网络状态跟传输速度,为了更加准确,这个过程可以重复几次取平均值。
在可选实施例中,当前网络的状态检测可以是周期性的检测,比如每隔5分钟,10分钟检测一次,以方便检测当前网络状态的变化。流媒体接收装置的网络检测方式和流媒体发送装置一样,通过发送ICMP包给流媒体发送装置,然后根据发送包和收到响应包的大小、花费的时间计算出当前的网络状态及网速。
S204,每隔第二时间段更新所述第二码流缓存;
具体的,服务器模块发送完第一码流缓存第一时间段的数据后,相隔第二时间段丢弃第二码流缓存中与第一时间段对应的数据。可选实施例中,由于缓存的大小是有限制的,当第一码流缓存满了后,丢弃第一码流缓存中最早的发送完的数据以写入新数据,一段时间后,丢弃第二缓存中的对应时间点的关键帧缓存数据,并缓存新数据所对应的关键帧数据,以保证第一码流缓存和第二码流缓存的缓存时间一致,使得第一码流缓存的数据一定在第二码流缓存中有对应的数据。
S205,流媒体接收装置根据网络状态接收并缓存所述数据;
具体的,流媒体接收装置的接收模块接收来自服务器模块的数据,同时,网络检测模块检测当前网络状态,缓存模块根据网络状态对所述码流建立缓存。当网络状态变差时,增大缓存模块中缓存的流媒体数据。网络越差缓存的数据越多。当流媒体接收装置在缓存过程中发现有数据丢失时,执行步骤S206。
S206,流媒体接收装置向消息处理模块发送第一请求;
具体的,第一请求包括丢失数据包的序列号,该序列号可以为相应流媒体协议的包序列号,根据不同的协议不同。在可选实施例中,每个数据包的协议头上包含序列号,用于标识发送者所发送的报文,每发送一个报文,序列号增1。当网络状况不好的时候可以根据该序列号检查丢包情况。在可选实施例中,当流媒体接收装置发现收到的数据包对应的序列号出现丢失,通过私有协议发送该数据包的序列号(第一请求)给流媒体发送装置。
S207,消息处理模块检查所述第一码流缓存;
具体的,消息处理模块根据第一请求中的序列号检查第一码流缓存,若第一码流缓存中存在丢失数据包的数据,则通过服务器模块重新发送该数据包,并结束本次对话。在可选实施例中,当流媒体接收装置发送的丢失包在第一码流缓存的缓存队列里时,取出该丢失包并通过服务器模块发送。在可选实施例中,发送可以按原始流协议进行发送,但是需添加相应的标识信息,使得流媒体接收装置能够识别该丢失包;还可以通过添加私有协议发送;也可以发送到与原数据接收端口不同的端口,方便流媒体接收装置对于该丢失数据包识别处理。
若缓存中不存在丢失数据包的数据,则通知流媒体接收装置该数据不存在,并执行步骤S208。在可选实施例中,当流媒体接收装置丢失的数据包不在第一码流缓存的缓存队列里时,可以添加私有协议发送通知至流媒体接收装置,通知该数据包已经不存在了。
S208,流媒体接收装置丢弃与丢失数据包相关的一组数据;
具体的,流媒体接收装置收到服务器模块的通知或经过预设的时间值后之后,丢弃和该数据包相关的一组数据。在可选实施例中,丢弃和该数据包相关的一组gop(groupof pictures)视频帧,如果是帧间的压缩帧,则丢弃这组gop中的帧间压缩帧视频,如果是关键帧,则全部丢弃这一组gop。流媒体接收装置解码显示缓存的数据包。
图3是本发明另一实施例提供的一种流媒体传输方法的流程示意图,如图所示本实施例中流媒体传输方法可以包括:
S301,流媒体发送装置根据网络状态同时第一路编码和第二路编码流媒体,形成第一码流和第二码流。
具体的,第一编码模块对流媒体进行可调视频编码,第二编码模块对流媒体进行关键帧编码,产生固定时间间隔的关键帧视频编码,具体实现中,固定时间间隔可以为0.5s或1s。当网络状态变差时,第一编码模块减小编码的码率并增大I帧的间隔,从而减小流媒体传输流的大小来减小使用的网络带宽。同时,步骤S302中,第一打包缓存模块和第二打包缓存模块按比例增大缓存数据的大小,网络越差缓存打包后的视频时间长度越长,第一打包缓存模块和第二打包缓存模块的缓存时间长度保持一致。在可选实施例中,首先检测当前流媒体发送装置和流媒体接收装置间的传输速度,然后根据当前的速度设置编码的码率,设置编码码率小于等于传输速度,使得数据的解码端不会一直处于等待接收数据的状态而导致画面花屏卡顿。当传输速度下降时,可以减少关键帧的数量,比如从每隔几帧设置一个关键帧变到每几十帧设置一个关键帧,从而进一步减小码流以减轻网络传输的负担,还能提高画面的质量和播放的流畅度。
S302,分别打包并缓存所述第一码流和第二码流,形成第一码流缓存和第二码流缓存,其中,所述第一码流缓存和所述第二码流缓存的时间长度相同;
具体的,打包缓存模块的缓存遵循先进先出的原则,第一打包缓存模块打包缓存可调视频编码,第二打包缓存模块打包缓存I帧视频编码。在可选实施例中,打包缓存模块的封装数据格式可以依据传输协议,例如TransportStream(TS)包、ProgramStream(PS)包、Real-time Transport Protocol(RTP)包等。
在可选实施例中,当打包缓存模块的缓存空间满了后,可以选择如下三种方式中的一种进行数据处理:方式一,丢弃在后编码的数据,等待最早的缓存数据发送后插入循环队列;方式二,丢弃最早打包缓存的数据,然后让新的数据打包缓存;方式三,增大缓存的队列的长度,根据系统的可用内存大小设置一个最大的缓存队列的长度。
S303,流媒体发送装置取出所述第一码流缓存第一时间段的数据,并发送至流媒体接收装置;
具体的,在无数据丢失的情况下,服务器模块读取第一缓存的数据,发送至流媒体接收装置,发送的第一时间段根据当前媒体发送装置与流媒体接收装置连接的网络状态决定。在可选实施例中,首次发送的网络状态可以通过流媒体发送装置根据ICMP(InternetControl Message Protocol)Internet控制报文协议发送ICMP包至目的流媒体接收装置,根据ICMP包收发的数据量除以传输时间,可以判断当前的网络状态跟传输速度,为了更加准确,这个过程可以重复几次取平均值。
在可选实施例中,当前网络的状态检测可以是周期性的检测,比如每隔5分钟,10分钟检测一次,以方便检测当前网络状态的变化。流媒体接收装置的网络检测方式和流媒体发送装置一样,通过发送ICMP包给流媒体发送装置,然后根据发送包和收到响应包的大小、花费的时间计算出当前的网络状态及网速。
S304,每隔第二时间段更新所述第二码流缓存;
具体的,服务器模块发送完第一码流缓存第一时间段的数据后,相隔第二时间段丢弃第二码流缓存中与第一时间段对应的数据。可选实施例中,由于缓存的大小是有限制的,当第一码流缓存满了后,丢弃第一码流缓存中最早的发送完的数据以写入新数据,一段时间后,丢弃第二缓存中的对应时间点的关键帧缓存数据,并缓存新数据所对应的关键帧数据,以保证第一码流缓存和第二码流缓存的缓存时间一致,使得第一码流缓存的数据一定在第二码流缓存中有对应的数据。
S305,流媒体接收装置根据网络状态接收并缓存所述数据;
具体的,流媒体接收装置的接收模块接收来自服务器模块的数据,同时,网络检测模块检测当前网络状态,缓存模块根据网络状态对所述码流建立缓存。当网络状态变差时,增大缓存模块中缓存的流媒体数据。网络越差缓存的数据越多。当流媒体接收装置在缓存过程中发现有数据丢失时,执行步骤S306。
S306,流媒体接收装置向消息处理模块发送第一请求;
具体的,第一请求包括丢失数据包的序列号,该序列号可以为相应流媒体协议的包序列号,根据不同的协议不同。在可选实施例中,每个数据包的协议头上包含序列号,用于标识发送者所发送的报文,每发送一个报文,序列号增1。当网络状况不好的时候可以根据该序列号检查丢包情况。在可选实施例中,当流媒体接收装置发现收到的数据包对应的序列号出现丢失,通过私有协议发送该数据包的序列号(第一请求)给流媒体发送装置。
S307,消息处理模块检查所述第一码流缓存;
具体的,消息处理模块根据第一请求中的序列号检查第一码流缓存,若第一码流缓存中存在丢失数据包的数据,则通过服务器模块重新发送该数据包,并结束本次对话。在可选实施例中,当流媒体接收装置发送的丢失包在第一码流缓存的缓存队列里时,取出该丢失包并通过服务器模块发送。在可选实施例中,发送可以按原始流协议进行发送,但是需添加相应的标识信息,使得流媒体接收装置能够识别该丢失包;还可以通过添加私有协议发送;也可以发送到与原数据接收端口不同的端口,方便流媒体接收装置对于该丢失数据包识别处理。
若缓存中不存在丢失数据包的数据,则通知流媒体接收装置该数据不存在,并执行步骤S308。在可选实施例中,当流媒体接收装置丢失的数据包不在第一码流缓存的缓存队列里时,可以添加私有协议发送通知至流媒体接收装置,通知该数据包已经不存在了。
S308,流媒体接收装置丢弃与丢失数据包相关的一组数据;
具体的,流媒体接收装置收到服务器模块的通知或经过预设的时间值后之后之后,丢弃和该数据包相关的一组数据。在可选实施例中,丢弃和该数据包相关的一组gop(group of pictures)视频帧,如果是帧间的压缩帧,则丢弃这组gop中的帧间压缩帧视频,如果是关键帧,则全部丢弃这一组gop。执行步骤S309。
S309,流媒体接收装置向流媒体发送装置发送第二请求;
具体的,当第一码流缓存中不存在丢失的数据包时,流媒体接收装置为了让用户体验更加友好,可以向流媒体发送装置的消息处理模块发送第二请求,请求发送与丢弃的数据包对应的一帧或者几帧关键帧。可选实施例中,关键帧的数量可以根据当前网络状态调节,网络状态越差请求的关键帧数量越少。
S310,流媒体发送装置发送通知或关键帧至流媒体接收装置;
具体的,流媒体发送装置接收到第二请求后,需要判断第二码流缓存中是否还存在对应的关键帧数据,该关键帧数据存在于缓存中的概率和设置缓存的时间长度有关,缓存的时间长度越长,该关键帧数据存在的概率越大。可选实施例中,如果该关键帧数据不存在,则流媒体发送装置向流媒体接收装置发送通知,流媒体接收装置收到通知后,丢弃该关键帧数据对应的一组gop,以防止出现花屏;如果该关键帧数据仍然存在,则流媒体发送装置向流媒体接收装置发送该关键帧数据,流媒体接收装置收到后,丢弃该关键帧数据对应的一组gop,并将该关键帧数据插入至丢弃的一组数据包的位置中,以解码显示。
可选实施例中,服务器模块通过添加标识信息的原始协议或者通过特殊的协议从第二码流缓存的缓存队列中取出对应的关键帧,并发送给流媒体接收装置。
图4是本发明另一实施例提供的流媒体发送装置的结构示意图,如图所示,本实施例中的流媒体发送装置可以包括:
至少一个处理器401,例如CPU,至少一个网络接口402,存储器403,至少一个总线404。其中,总线404用于实现这些组件之间的连接通信。网络接口402可选的可以包括标准的有线接口、无线接口(如WI-FI接口),用于连接网络,以发送和接收数据。存储器403可以是高速RAM存储器,也可以是至少一个磁盘存储器。存储器403可选的还可以包括至少一个远程连接处理器401的存储装置。存储器403中可以包括操作系统、网络检测模块、编码模块、打包缓存模块以及服务器模块。该流媒体发送装置可用于实现本发明提供的流媒体传输方法。
图5是本发明实施例提供的一种流媒体传输系统的结构示意图,如图所示本实施例中的流媒体传输系统可以包括流媒体发送装置501和至少一个流媒体接收装置503,其中:
所述流媒体接收装置503用于向所述流媒体发送装置501发送流媒体传输请求,接收所述流媒体发送装置501根据所述流媒体传输请求传输的流媒体数据;所述流媒体发送装置501可以用于根据流媒体接收装置503发送的流媒体传输请求向流媒体接收装置503传输流媒体数据;获取所述流媒体接收装置503的传输状态信息,所述传输状态信息包括数据响应包、第一请求、第二请求。该流媒体传输系统可用于实现本发明提供的流媒体传输方法。
以上对本发明所提供的一种流媒体传输方法、装置及其系统进行了详尽介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,对本发明的变更和改进将是可能的,而不会超出附加权利要求所规定的构思和范围,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (23)
1.一种流媒体传输方法,其特征在于,所述方法包括:
流媒体发送装置根据网络状态同时第一路编码和第二路编码流媒体,形成第一码流和第二码流;
分别打包并缓存所述第一码流和第二码流,形成第一码流缓存和第二码流缓存,其中,所述第一码流缓存和所述第二码流缓存的时间长度相同;
所述流媒体发送装置向流媒体接收装置发送所述第一码流缓存的第一时间段数据;
每隔第二时间段更新所述第二码流缓存。
2.根据权利要求1所述的方法,其特征在于,所述根据网络状态同时第一路编码和第二路编码流媒体包括,根据网络状态调节所述第一路编码的编码码率和关键帧间隔。
3.根据权利要求1所述的方法,其特征在于,所述分别打包并缓存所述第一码流和第二码流包括,根据所述网络状态调节所述第一码流缓存和所述第二码流缓存的所述时间长度。
4.根据权利要求3所述的方法,其特征在于,所述更新包括,丢弃所述第二码流缓存中与所述第一时间段对应的缓存数据。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
所述流媒体接收装置根据网络状态接收并缓存所述数据;
当所述流媒体接收装置发现有数据丢失,发送第一请求至所述流媒体发送装置,所述第一请求包括丢失数据的信息。
6.根据权利要求5所述的方法,其特征在于,所述流媒体发送装置接收到所述第一请求后,检查所述第一码流缓存;其中,所述检查所述第一码流缓存包括:
当所述第一码流缓存中存在所述丢失数据时,所述流媒体发送装置重新发送所述丢失数据;
当所述第一码流缓存中不存在所述数据时,所述流媒体发送装置向所述流媒体接收装置发送第一通知。
7.根据权利要求6所述的方法,其特征在于,所述方法包括:所述流媒体接收装置接收到所述第一通知后,向所述流媒体发送装置发送第二请求;所述流媒体发送装置检查所述第二码流缓存,其中,
当所述第二码流缓存中存在所述关键帧时,向所述流媒体接收装置发送所述关键帧;
当所述第二码流缓存中不存在所述关键帧时,向所述流媒体接收装置发送第二通知。
8.根据权利要求7所述的方法,其特征在于,所述流媒体接收装置接收到所述关键帧后,丢弃与所述丢失数据相关的一组数据,并将所述关键帧插入至所述一组数据的位置。
9.根据权利要求6或7所述的方法,其特征在于,所述流媒体接收装置接收到所述第一通知,或所述第二通知,或经过预设的时间值未接收到任何通知后,丢弃与所述丢失数据相关的一组数据。
10.根据权利要求6或7所述的方法,其特征在于,所述发送包括,在原始协议上添加特殊标志符号发送,或者添加私有协议发送,或者发送到所属流媒体接收装置的不同端口。
11.一种流媒体发送装置,其特征在于,所述装置至少包括:
网络检测模块,用于检测网络状态;
编码模块,包括第一编码模块,用于根据所述网络状态第一路编码流媒体,形成第一码流;第二编码模块,用于根据所述网络状态第二路编码流媒体中的关键帧,形成第二码流;
打包缓存模块,包括第一打包缓存模块,用于打包并缓存所述第一码流,形成第一码流缓存;第二打包缓存模块,用于打包并缓存第二码流,形成第二码流缓存,其中所述第一码流缓存和所述第二码流缓存的时间长度相同;
服务器模块,用于发送所述第一码流缓存的第一时间段数据,以及每隔第二时间段更新所述第二码流缓存。
12.根据权利要求11所述的装置,其特征在于,所述网络检测模块,还用于将所述网络状态通知所述编码模块和所述打包缓存模块,所述第一编码模块根据所述网络状态调节所述第一路编码的编码码率和关键帧间隔。
13.根据权利要求11所述的装置,其特征在于,所述打包缓存模块根据所述网络状态调节所述第一码流缓存和所述第二码流缓存的所述时间长度。
14.根据权利要求13所述的装置,其特征在于,所述服务器模块在发送完所述第一码流缓存的第一时间段数据后,每隔第二时间段丢弃所述第二码流缓存中与所述第一时间段数据对应的缓存数据。
15.根据权利要求11-14任一项所述的装置,其特征在于,所述装置还包括消息处理模块,用于接收所述流媒体接收装置发送的第一请求。
16.根据权利要求15所述的装置,其特征在于,所述服务器模块用于,
当所述第一码流缓存中存在所述第一请求对应的数据时,重新发送所述数据;
当所述第一码流缓存中不存在所述第一请求对应的数据时,向所述流媒体接收装置发送第一通知。
17.根据权利要求16所述的装置,其特征在于,所述消息处理模块,用于接收所述流媒体接收装置发送的第二请求;所述服务器模块,用于当所述第二码流缓存中存在与所述数据对应的关键帧时,向所述流媒体接收装置发送所述关键帧,当所述第二码流缓存中不存在所述关键帧时,向所述流媒体接收装置发送第二通知。
18.根据权利要求16或17所述的装置,其特征在于,所述服务器模块在原始协议上添加特殊标志符号,或添加私有协议,或通过不同的端口发送所述数据和/或所述关键帧。
19.一种流媒体传输系统,其特征在于,所述系统至少包括如权利要求11-18任一项所述的流媒体发送装置和至少一个流媒体接收装置,其中:所述流媒体接收装置至少包括:接收模块,用于所述接收所述流媒体发送装置发送的数据;
网络检测模块,用于检测网络状态;
缓存模块,用于根据所述网络状态缓存所述码流;
所述流媒体发送装置,用于根据网络状态同时第一路编码和第二路编码流媒体,形成第一码流和第二码流;分别打包并缓存所述第一码流和第二码流,形成第一码流缓存和第二码流缓存,其中所述第一码流缓存和第二码流缓存的时间长度相同;向所述流媒体接收装置发送第一码流缓存中的数据,并且每隔一段时间更新所述第二码流缓存。
20.根据权利要求19所述的系统,其特征在于,所述缓存模块还用于当发现有数据丢失时,发送第一请求至所述流媒体发送装置,其中,所述第一请求包括丢失数据的信息。
21.根据权利要求20所述的系统,其特征在于,所述缓存模块还用于当接收到所述流媒体发送装置的第一通知后,发送第二请求至所述流媒体发送装置。
22.根据权利要求21所述的系统,其特征在于,所述流媒体接收装置接收所述第一通知,或所述第二通知,或经过预设的时间值未接收到任何通知后,丢弃与所述数据相关的一组数据。
23.根据权利要求22所述的系统,其特征在于,所述缓存模块还用于将所述流媒体发送装置发送的关键帧插入至丢弃的所述一组数据的位置中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910119777.2A CN109862400B (zh) | 2019-02-18 | 2019-02-18 | 一种流媒体传输方法、装置及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910119777.2A CN109862400B (zh) | 2019-02-18 | 2019-02-18 | 一种流媒体传输方法、装置及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109862400A true CN109862400A (zh) | 2019-06-07 |
CN109862400B CN109862400B (zh) | 2021-08-31 |
Family
ID=66898095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910119777.2A Active CN109862400B (zh) | 2019-02-18 | 2019-02-18 | 一种流媒体传输方法、装置及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109862400B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111314378A (zh) * | 2020-03-18 | 2020-06-19 | 浩云科技股份有限公司 | 一种码流数据处理方法 |
CN112584194A (zh) * | 2020-11-13 | 2021-03-30 | 深圳市捷视飞通科技股份有限公司 | 视频码流的推送方法、装置、计算机设备和存储介质 |
CN112584330A (zh) * | 2020-11-27 | 2021-03-30 | 石家庄市善理通益科技有限公司 | 一种对讲终端弱网下语音流稳定传输方法和传输设备 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101990087A (zh) * | 2010-09-28 | 2011-03-23 | 深圳中兴力维技术有限公司 | 无线视频监控系统及根据网络状态动态调整码流的方法 |
CN102752670A (zh) * | 2012-06-13 | 2012-10-24 | 广东威创视讯科技股份有限公司 | 减少网络视频传输中马赛克现象的方法、装置及系统 |
CN103533450A (zh) * | 2013-06-09 | 2014-01-22 | 浙江宇视科技有限公司 | 一种媒体流可靠传输和接收的方法以及装置 |
CN104735470A (zh) * | 2015-02-11 | 2015-06-24 | 海信集团有限公司 | 一种流媒体数据传输方法及装置 |
CN106162374A (zh) * | 2016-06-29 | 2016-11-23 | 成都赛果物联网技术有限公司 | 一种低复杂度的帧内编码帧鲁棒传输方法及系统 |
US20160366445A1 (en) * | 2004-12-30 | 2016-12-15 | Microsoft Technology Licensing, Llc | Use of frame caching to improve packet loss recovery |
CN106385620A (zh) * | 2016-10-25 | 2017-02-08 | 浙江红苹果电子有限公司 | 一种基于流媒体的数据平滑输出方法 |
US9621926B1 (en) * | 2015-09-25 | 2017-04-11 | Amazon Technologies, Inc. | Predictive transmitting of video stream data |
CN106850595A (zh) * | 2017-01-17 | 2017-06-13 | 烽火通信科技股份有限公司 | 一种流媒体传输优化方法及装置 |
CN106911699A (zh) * | 2017-03-03 | 2017-06-30 | 天津天地伟业信息系统集成有限公司 | 一种基于rtp协议实现i帧重传的方法 |
CN107231328A (zh) * | 2016-03-23 | 2017-10-03 | 福建星网锐捷通讯股份有限公司 | 实时视频传输方法、装置、设备及系统 |
CN107342848A (zh) * | 2017-08-24 | 2017-11-10 | 杭州联吉技术有限公司 | 一种自适应码流传输方法、装置及设备 |
CN107666593A (zh) * | 2017-08-28 | 2018-02-06 | 中国电子科技集团公司第二十八研究所 | 一种波动网络环境下的视频实时传输方法 |
-
2019
- 2019-02-18 CN CN201910119777.2A patent/CN109862400B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160366445A1 (en) * | 2004-12-30 | 2016-12-15 | Microsoft Technology Licensing, Llc | Use of frame caching to improve packet loss recovery |
CN101990087A (zh) * | 2010-09-28 | 2011-03-23 | 深圳中兴力维技术有限公司 | 无线视频监控系统及根据网络状态动态调整码流的方法 |
CN102752670A (zh) * | 2012-06-13 | 2012-10-24 | 广东威创视讯科技股份有限公司 | 减少网络视频传输中马赛克现象的方法、装置及系统 |
CN103533450A (zh) * | 2013-06-09 | 2014-01-22 | 浙江宇视科技有限公司 | 一种媒体流可靠传输和接收的方法以及装置 |
CN104735470A (zh) * | 2015-02-11 | 2015-06-24 | 海信集团有限公司 | 一种流媒体数据传输方法及装置 |
US9621926B1 (en) * | 2015-09-25 | 2017-04-11 | Amazon Technologies, Inc. | Predictive transmitting of video stream data |
CN107231328A (zh) * | 2016-03-23 | 2017-10-03 | 福建星网锐捷通讯股份有限公司 | 实时视频传输方法、装置、设备及系统 |
CN106162374A (zh) * | 2016-06-29 | 2016-11-23 | 成都赛果物联网技术有限公司 | 一种低复杂度的帧内编码帧鲁棒传输方法及系统 |
CN106385620A (zh) * | 2016-10-25 | 2017-02-08 | 浙江红苹果电子有限公司 | 一种基于流媒体的数据平滑输出方法 |
CN106850595A (zh) * | 2017-01-17 | 2017-06-13 | 烽火通信科技股份有限公司 | 一种流媒体传输优化方法及装置 |
CN106911699A (zh) * | 2017-03-03 | 2017-06-30 | 天津天地伟业信息系统集成有限公司 | 一种基于rtp协议实现i帧重传的方法 |
CN107342848A (zh) * | 2017-08-24 | 2017-11-10 | 杭州联吉技术有限公司 | 一种自适应码流传输方法、装置及设备 |
CN107666593A (zh) * | 2017-08-28 | 2018-02-06 | 中国电子科技集团公司第二十八研究所 | 一种波动网络环境下的视频实时传输方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111314378A (zh) * | 2020-03-18 | 2020-06-19 | 浩云科技股份有限公司 | 一种码流数据处理方法 |
CN112584194A (zh) * | 2020-11-13 | 2021-03-30 | 深圳市捷视飞通科技股份有限公司 | 视频码流的推送方法、装置、计算机设备和存储介质 |
CN112584330A (zh) * | 2020-11-27 | 2021-03-30 | 石家庄市善理通益科技有限公司 | 一种对讲终端弱网下语音流稳定传输方法和传输设备 |
CN112584330B (zh) * | 2020-11-27 | 2022-07-01 | 石家庄市善理通益科技有限公司 | 一种对讲终端弱网下语音流稳定传输方法和传输设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109862400B (zh) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10419502B2 (en) | Systems and methods for using client-side video buffer occupancy for enhanced quality of experience in a communication network | |
CN104735470B (zh) | 一种流媒体数据传输方法及装置 | |
US9042444B2 (en) | System and method for transmission of data signals over a wireless network | |
US9585062B2 (en) | System and method for implementation of dynamic encoding rates for mobile devices | |
CN101568027B (zh) | 转发视频数据的方法、装置和系统 | |
CN101552660B (zh) | 对流媒体数据进行重传、播放的方法、装置及通信系统 | |
US10602139B2 (en) | Embedded multimedia systems with adaptive rate control for power efficient video streaming | |
US20140096164A1 (en) | Enhanced user experience for miracast devices | |
US20120230390A1 (en) | Adaptive Control of Encoders for Continuous Data Streaming | |
JP2009260818A (ja) | サーバ装置とコンテンツ配信方法とプログラム | |
JP4903435B2 (ja) | メディア信号の送信方法と受信方法ならびに送受信方法及び装置 | |
KR102486847B1 (ko) | 링크 인식 스트리밍 적응 | |
CN103686221A (zh) | 一种适应公用无线网络实现音视频流畅播出的方法 | |
CN109862400A (zh) | 一种流媒体传输方法、装置及其系统 | |
JP2004241793A (ja) | 動画像受信装置および動画像送信装置 | |
KR20130138638A (ko) | 비트 에러율을 이용한 효과적인 멀티미디어 전송 방법 | |
CN103780907A (zh) | 一种视频数据流量整形的方法和装置 | |
CN104270594A (zh) | 数据包发送与接收的方法及设备 | |
JP2010028378A (ja) | 通信装置及び通信方法 | |
CN111093083A (zh) | 数据传输方法及装置 | |
JP2015138990A (ja) | 受信装置、送信装置及び通信システム | |
JP5877960B2 (ja) | 伝送ビットレートに基づいて映像フレームレートを制御させる受信装置、システム、プログラム及び方法 | |
JP2011239232A (ja) | 送信装置、送信方法、並びにプログラム | |
CN109416822B (zh) | 用于在移动环境中报告qos/qoe的方法及其设备 | |
Zhu et al. | Research on adaptive transmission of H. 264 video stream and QoS guarantee based on SIP |
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 |