掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及无线网络通信技术领域,尤其涉及一种D2D网络多媒体流码率调节方法及多媒体流实时传输系统。

背景技术

在将D2D通信技术应用于移动流媒体服务方面,国外提出了一种较为成熟的MicroCast服务系统。然而MicroCast的每个设备是各自从服务器下载不同时间段的视频分块,然后通过D2D链路分享给其他用户,由于数据块并不是按照播放时间顺序依次获得的所以并不支持实时播放。现有技术还提出基于HTTP的动态自适应流技术(Dynamic AdaptiveStreaming over HTTP,DASH),根据网络条件对视频流进行控制。由于传统TCP/IP网络对视频传输的支持具有局限性,现有的自适应流媒体算法很容易让用户产生次优的体验。与现行的4G通信技术相比较起来,下一代5G通信网络有更大的优势,包括容量更高、数据速率更快、端到端时延更小、开销更低等,而终端直通(Device-to-Device,D2D)通信技术作为第五代移动通信的关键技术之一,为解决上述问题提供了方向。目前大部分研究的实验验证是通过仿真系统完成的,而本系统将在真实的移动设备上实现基于D2D通信的实时多媒体流传输。在通信系统或网络中,一旦D2D通信链路建立起来,传输数据就无需核心设备或中间设备的干预,这样可降低通信系统核心网络的数据压力,大大提升频谱利用率和吞吐量,扩大网络容量。

由于视频数据需要在网络中实时在线传播,而原始视频数据量相对较大,而且视频数据有着极强的向关性,具有大量的冗余信息。本系统需要对这些视频进行压缩掉冗余信号,使用帧间编码技术去除时间上的冗余信息。

DASH是国际标准组MPEG制定的技术标准(ISO/IEC 23009-1:2012),对采用HTTP传输MPEG媒体涉及到的各方面提出了一系列的技术要求,其结构如图3所示。但由于DASH技术计算复杂度高,运行时会浪费大量的计算时间,在D2D网络中不适用,很难达到用户对传输信息的实时性要求。

发明内容

针对上述现有技术存在的不足,本申请提供一种D2D网络多媒体流码率调节方法及多媒体流实时传输系统。

为解决上述技术问题,本发明所采取的技术方案是:一种D2D网络自适应多媒体流码率调节方法,包括如下步骤:

步骤1:D2D网络中接收端设备对自身网络状况进行感知;

所述网络状况包括:信号强度和网络吞吐量。

步骤2:接收端接收发送端的数据,并查看多媒体流的码率;

步骤3:接收端根据自身感知的网络状况对接受的多媒体流的码率进行判断,并向发送端发送码率调整请求,过程如下:

步骤3.1:当码率相对于自身网络状况过高或过低,对码率进行调整;

步骤3.2:向发送端发送一个切换码率的请求,并附上新请求的新码率。

步骤4:发送端根据接收端的码率请求进行调整,发送新码率的多媒体流数据,过程如下:

步骤4.1:发送端部署对码率切换请求的响应模块,当响应模块收到切换码率的请求时,会停止从当前缓冲区向接收端发送数据,然后从新的缓冲区中向发送端开始发送。

步骤4.2:发送端判断当前NAL数据帧是否为IDR帧,只有检测到第一个IDR帧才会开始发送数据,避免切换前后的数据不一致导致接收端解码发生错误。

另一方面,本发明还提供一种采用上述方法进行自适应码率调节的D2D网络多媒体流实时传输系统,该系统在移动D2D网络中的用户对的发送端和接收端上均部署网络传输模块、视频数据处理模块和自适应码率调节模块;发送端需要以自身设备为Group Owner搭建一个D2D网络群组,供其他设备连接,当传输结束后能主动解散这个群组。接收端需要能选择附近的一个D2D群组加入,当传输结束后能主动的退出这个群组。

所述发送端和接收端采用Wi-Fi Direct传输手段,通过socket作为信息载体,进行通信。所述Wi-Fi Direct传输手段中有一个核心类WifiP2pManager,提供了所有的通信相关的广播信息、监听信息、设备信息以及初始化操作。Wi-Fi Direct本质上是构建在802.11a、802.11g、802.11n协议基础之上的软件协议,相比Ad-Hoc模式具有较高的数据传输速率,最大速率可达250Mbps,最大传输距离200米。本系统利用Wi-Fi Direct技术,手机、相机、打印机、PC将能够互相直接连接,迅速而轻松地传输内容、共享应用。

所述网络传输模块包括网络管理功能模块和数据传输模块,其中网络管理功能模块通过调用Android提供的相关API,让设备之间组成一个D2D网络群组;数据传输模块实现数据在D2D网络中的传输,使用UDP协议来作为传输层协议,它在需要较快地接收数据并且可以忍受较小错误的情况下,会表现出比较大的优势。

所述视频数据处理模块实现对视频的采集、编码、分发、解码、播放的功能,包括视频数据编码功能模块和视频数据解码功能模块,其中视频数据编码功能模块将原始视频数据编码压缩为便于网络传输的格式;视频数据解码功能模块在接收到视频数据后对其进行解码并播放;

所述视频数据编码功能模块根据编码方式的不同分为硬编码模块和软编码模块,所述硬编码模块通过使用MediaCodec来实现H.264格式的编码;所述视频数据解码功能模块通过调用MediaCodec API来实现。

所述自适应码率调节模块包括缓存区设计模块和网络状况感知模块,所述自适应码率调节模块通过增加缓冲区来尽可能地减少网络质量不稳定带来的影响,按照不同的码率对同一个多媒体流数据进行编码并建立对应的缓冲区,存放编码结果;另外,增加网络状况感知模块,获取接收端设备相对于发送端设备的信号强度和网络吞吐量,发送端根据接收端的请求选择一个合适的码率向接收端发送对应缓冲区的内容,即当网络状况较差时降低码率,以此来规避因网络质量变差带来的用户体验下降的影响。

所述缓存区设计模块在数据结构上,选择了Java中的ConcurrentHashMap,在缓冲区的维护上,使用Android提供的倒计时类CountDownTimer,周期性地删除过期数据,完成周期性的缓冲区维护。

所述信号强度用RSSI(Received Signal Strength Indication)来表示,RSSI值的获取是通过Android中WifiManager的相关方法,扫描当前设备附近的所有可用网络,再从中找到匹配当前D2D群组的SSID的结果ScanResult,其中的ScanResult.level参数即为对应的信号强度;所述吞吐量通过统计一段时间内的流量来表示,通过Android中的流量监控类TrafficStats来分别记录一个时间段开始和结束的流量,其差值为该时间段内本设备的吞吐量。

采用上述技术方案所产生的有益效果在于:

1、本发明提供的基于移动D2D网络的实时多媒体流传输系统,在Android平台上进行实现,充分利用Android系统中的Wi-Fi Direct技术以及其他多媒体功能,搭建起D2D通信群组,实现在一定范围内的D2D网络组建、文件传输、视频流数据编解码功能。

2、本发明提供的一种自适应多媒体流码率调节方法能感知接收端的网络状况,并依此请求不同码率的视频内容,实现多媒体流的实时传输,提高用户体验。

3、本发明利用D2D通信的本地特性开展的本地多媒体业务,可以大大节省网络核心层及频谱的资源。将资源共享服务从蜂窝网络设施转移到设备到设备(D2D)网络,可以提高频谱利用率和扩展系统容量。

附图说明

图1是本发明具体实施方式的D2D通信网络示意图;

图2是本发明具体实施方式的基于D2D网络的多媒体流实时传输系统架构图;

图3是本发明背景技术中的DASH系统结构图;

图4(a)为基站模式下流媒体传输的流程图;图4(b)为本系统流媒体传输的流程图;

图5是本发明具体实施方式的缓冲区使用的ConcurrentHashMap结构图;

图6(a)为创建D2D通信群组之前组主设备的状态截图,图6(b)为组主等待其他设备接入时的状态截图;

图7(a)为设备凝结成功后组主设备状态截图;图7(b)为设备凝结成功后组员设备状态截图。

图8是本发明具体实施方式的视频编码前后数据大小对比图。

图9是本发明具体实施方式在2500Kbps码率下数据大小。

图10是本发明具体实施方式的编码器输出结果。

图11是本发明具体实施方式中当RSSI值发生变化时调整码率的情况图;

图12是本发明具体实施方式中当RSSI值发生变化时设备的吞吐量。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

如图1所示,在一定范围内组建D2D通信网络,然后进行文件传输以及视频流数据的编解码,利用Android智能手机的Wi-Fi Direct功能将多个设备构建起一个D2D网络,数据的传输与处理都在D2D网络内进行,并采用本发明的自适应多媒体流码率调节方法通过感知接收端的网络状况并依此请求不同码率的视频内容,去除了基站在数据传输过程中的作用,如图4(a)和图4(b)所示,分别展示了基站模式下流媒体传输的流程图和本系统流媒体传输的流程图。本实施例中基于移动D2D网络的实时多媒体流传输系统的工作原理如图2所示。

根据传输过程中扮演角色的不同,设备分为发送端和接收端:

1.发送端:

发送端需要以自身设备为Group Owner搭建一个D2D网络群组,供其他设备连接,当传输结束后能主动解散这个群组。其次,发送端需要将想要共享的资源按照特定的传输协议封装好数据包,并发送至接收端。然后,发送端需要从手机的摄像头或者其他来源获取原始的视频流数据,将原始视频流数据按照特定的标准编码。最后,发送端将编码结果打包,发送至接收端。在自适应多媒体流码率调节方法的功能上,发送端需要按照不同的档次划分不同的缓冲区,分别存放不同码率的编码结果,当收到接收端码率变更的请求后,能从不同的缓冲区将数据发送至接收端。

2.接收端:

接收端需要选择附近的一个D2D群组加入,当传输结束后能主动的退出这个群组。其次,接收端需要将接收到的数据按照传输协议解包。然后,接收端需要将收到的视频数据解码。最后,将解码结果播放在手机屏幕上。在自适应多媒体流码率调节方法的功能上,接收端需要获取自身当前状态的网络状况,然后根据网络状况来决策出是否需要获取更高或更低码率的视频流数据。当需要切换码率时,接收端向发送端发出请求,来获取适合自身网络状况的视频流数据。也就是说,接收端是运行自适应多媒体流码率调节方法的主要设备,而发送端在此只对接收端的请求进行响应。

本发明的功能模块及对应的功能分别从发送端和接收端两个角度来设计实现方案:

1.网络传输模块

此模块的主要功能是通过网络管理功能模块调用Android提供的相关API,让设备之间组成一个D2D网络群组。在Wi-Fi Direct技术中有一个核心类WifiP2pManager,它提供了所有的通信相关的广播信息、监听信息、设备信息以及初始化操作等。发送端和接收端将数据传输模块采用的Wi-Fi Direct作为传输手段,通过socket作为信息载体,并使用UDP协议来作为传输层协议,进行通信。

步骤如下:

发送端:

①以自身为组主建立一个D2D网络群组;

②显示连接至本组的其他设备;

③删除以自身为组主的D2D网络群组;

④按照传输协议封装数据;

⑤将封装好的数据发送至接收端。

接收端:

①感知附近的其他设备;

②加入一个D2D群组;

③接收发送端传输的数据;

④退出已加入的D2D群组;

⑤按照传输协议解包。

数据传输功能模块的细节设计:

数据传输功能模块的功能可以划分为发送端和接收端。发送端的功能是通过使用Android中的DatagramPacket、DatagramSocket API来实现数据的打包发送,具体流程如下:

①使用DatagramPacket相关接口创建一个数据包套接字;

②使用DatagramPacket创建要发送的数据包;

③使用DatagramSocket类的send()方法发送数据包。

在接收端,同样利用DatagramSocket的方法实现接收UDP数据包,具体流程如下:

①使用DatagramPacket创建数据包套接字,并将其绑定到指定的端口;

②使用DatagramPacket创建字节数组来接收数据包;

③使用DatagramSocket类的receive()方法接收UDP包。

2.视频数据处理模块

步骤如下:

发送端:

①从摄像头或其他来源获取原始视频数据;

②将视频数据进行编码;

③调用网络传输模块的功能,将编码结果以及其他信息发送出去。

接收端:

①从文件传输模块获取数据,分离视频数据和其他信息;

②将视频数据进行解码;

③将解码结果播放至手机屏幕;

其中,视频数据编码功能模块将原始视频数据编码压缩为便于网络传输的格式,根据编码方式的不同,本模块又可分为硬编码模块和软编码模块。

硬编码模块主要是通过使用MediaCodec来实现H.264格式的编码。其使用流程如下:

①创建并配置一个MediaCodec对象;

②循环以下操作,直到编码完成:

如果输入缓冲区就绪,读取一个输入块,并复制到输入缓冲区中;

如果输出缓冲区就绪,复制输出缓冲区的数据;

③释放MediaCodec对象。

软编码模块是通过开源项目yasea中的一部分动态链接库文件实现的,它是一个使用C++语言编写的实现软编码功能的模块。在Android项目中需要引入相应的文件,并创建一个对应的Java对象,暴露JNI(Java Native Interface)接口来实现对JNI方法的调用。

软编码器的使用流程与硬编码器相似,其不同之处在于数据的输入输出。软编码器的数据输入是通过Camera API的onPreviewFrame()方法获取原始的视频数据,当摄像头有可用的数据时Android会回调这个方法,从而获得每一帧的视频数据。当编码器有输出结果时,也是通过回调Java对象中的方法,获得压缩过的视频数据。

其中,视频数据解码功能模块部署在接收端设备,功能是在接收到视频数据后对其进行解码并播放。

本模块中解码器的功能是通过调用MediaCodec API来实现的,关于其生命周期等相关知识前文已有说明,在此不再赘述。

本模块在实现时,新建了一个DecoderActivity,并在Activity创建时完成对MediaCodec的配置。本模块从网络传输模块获取有效数据,通过重写onInputBufferAvailable()完成解码器的数据输入。而解码结果的输出则是配置了相应的Surface来接收数据并播放至手机屏幕。

3.自适应码率调节模块

步骤如下:

发送端:

①按照不同的码率对同一个视频数据进行编码;

②按照不同的码率建立对应的缓冲区,存放编码结果;

③根据请求,选择一个合适的码率向接收端发送对应缓冲区的内容。

接收端:

①感知自身的网络状况;

②根据网络状况决策出是否需要调节码率以及调节的结果;

③向发送端发送调节码率的请求。

细节设计:

(1)缓冲区设计

由于缓冲区的主要工作是查找数据,所以在数据结构的选择上,选择了Java中能保证线程安全的ConcurrentHashMap,ConcurrentHashMap读取并发,比一般HashMap存储速度快,如图5。在缓冲区的维护上,设计一种能周期性地删除过期数据的机制。在Android中,提供了一个倒计时类CountDownTimer,它能在计时一定的时间后调用一段特定的代码,这里只需在计时结束后删除超过设定的缓冲区大小的数据并再次调用定时器自身,即可完成周期性的缓冲区维护。

(2)网络状态感知模块

获取接收端设备相对于发送端设备的信号强度和网络吞吐量,以便自适应多媒体流码率调节方法进行决策。其中,信号的强弱用RSSI(Received Signal StrengthIndication)来表示,吞吐量则通过统计一段时间内的流量来表示。RSSI值的获取是通过Android中WifiManager的相关方法,扫描当前设备附近的所有可用网络,再从中找到匹配当前D2D群组的SSID的结果(ScanResult),其中的ScanResult.level参数即为对应的信号强度。吞吐量的测量是通过Android中的流量监控类(TrafficStats)来分别记录一个时间段开始和结束的流量,其差值为该时间段内本设备的吞吐量。

其中,自适应多媒体流码率调节方法根据网络环境进行码率决策。决策出需要进行码率调整时,该方法会调用网络传输模块的功能,由接收端向发送端发出一个切换码率的请求,并附上请求的新码率。发送端设备则是部署了对码率切换请求的响应模块,当收到切换码率的请求时,会停止从当前缓冲区向接收端发送数据,然后从新的缓冲区中向发送端开始发送。发送端会首先判断当前NAL数据帧是否为IDR帧,只有检测到第一个IDR帧才会开始发送数据。这是为了避免切换前后的数据不一致导致接收端解码发生错误,而从IDR帧开始发送数据则会刷新DPB,从而避免了这一错误,该过程的流程如下:

步骤1:D2D网络中接收端设备对自身网络状况进行感知;

所述网络状况包括:信号强度和网络吞吐量。

步骤2:接收端接收发送端的数据,并查看多媒体流的码率;

步骤3:接收端根据自身感知的网络状况对接受的多媒体流的码率进行判断,并向发送端发送码率调整请求,过程如下:

步骤3.1:当码率相对于自身网络状况过高或过低,对码率进行调整;

步骤3.2:向发送端发送一个切换码率的请求,并附上新请求的新码率。

步骤4:发送端根据接收端的码率请求进行调整,发送新码率的多媒体流数据,过程如下:

步骤4.1:发送端部署对码率切换请求的响应模块,当响应模块收到切换码率的请求时,会停止从当前缓冲区向接收端发送数据,然后从新的缓冲区中向发送端开始发送。

步骤4.2:发送端判断当前NAL数据帧是否为IDR帧,只有检测到第一个IDR帧才会开始发送数据,避免切换前后的数据不一致导致接收端解码发生错误。

本实施例的实验环境和分析:

对本实施方式的系统在Android平台上进行原型实现,本系统的开发环境为Windows 10Version 1803系统,实验开发工具为Android Studio Version 3.3.2,当系统功能全部实现之后,将通过多设备在复杂场景下的一系列测试,本系统的测试样机为HUAWEI P20(操作系统:EMUI 9.0.0.187、API Level:28(Android P))和HM NOTE 1S(操作系统:MK 81.0、API Level:27(Android O))根据网络质量、硬件适配情况、用户体验质量等性能指标进行分析,并依照实验数据改进调节算法,最终使自适应多媒体流码率调节方法满足一般场景下用户的服务需求。

(1)网络传输模块功能测试

测试了移动设备间组建D2D通信群组以及组内数据传输的功能,经验证,能成功地在移动设备间实现D2D通信。图6(a)展示了在创建D2D通信群组之前组主设备的状态。图6(b)展示了组主等待其他设备接入时的状态。图7(a)和图7(b)分别展示了两台设备连接成功后,组主和组员的状态,并显示了设备的详细信息。

(2)视频数据处理模块功能测试

这里通过编码前后的数据大小验证了模块对视频数据的编解码功能。显示编码前后数据大小发生了明显的变化,而且在不同码率下编码结果的大小也有所不同,如图8和图9所示。对编码结果的数据进行分析,根据分析可知第一个数据帧为SPS、PPS信息,之后紧接着为IDR数据帧,发现其符合H.264标准的NAL数据帧格式,确认了编码结果的正确性,如图10所示。

(3)自适应多媒体流码率调节方法测试

通过两台设备距离的改变来控制网络状况的变化,经过实验可得当网络状况发生变化时,传输的码率也会发生一定的变化,基本符合了多媒体流自适应调节码率的预期功能,如图11和图12所示。后期可依照实验数据对自适应多媒体流码率调节方法进行改进,最终使自适应码率调节算法满足一般场景下用户的服务需求。

相关技术
  • D2D网络多媒体流码率调节方法及多媒体流实时传输系统
  • D2D网络多媒体流码率调节方法及多媒体流实时传输系统
技术分类

06120112148543