一种基于MQTT的轻量级推流方法和系统,其方法包括:首先,本发明专利技术改进视频流选择算法,采用MQTT通信方式动态获取用户选择的视频流,减少端到端延时。其次,采用单设备动态切换推流源的方式减少所需的设备数和消耗的服务器流量。最后,通过动态切换视频源的方式,每次仅推送用户期望访问的视频内容,来减少流量开销和编码器需求。本发明专利技术降低直播视频流的传播时延,减少网络资源开销。减少网络资源开销。减少网络资源开销。
【技术实现步骤摘要】
一种基于MQTT的轻量级视频推流方法和系统
[0001]本专利技术提出一种基于MQTT的轻量级视频推流方法。该专利技术是专门为物联网课程实验设计的开放、轻量级的直播视频推流方案,建立在MQTT通信的基础上,以更少的流量、更低的延时和更低的硬件需求实现多路视频推流和近端频道切换。
技术介绍
[0002]视频推流方法包括将硬件采集到的音视频数据编码并通过网络实时传输到指定服务器的步骤。在这个方法中,首先建立与视频输入源和视频接收服务器的连接进行数据通信。当音视频数据被接收时,根据预设的用户配置,对数据进行分辨率调整、比特率控制、帧率调整、转码格式等处理。经过这样的处理后,数据帧被存储到帧缓存区中,待发送到视频服务器。
[0003]现有的视频推流方法具有处理多媒体高效、编解码能力强、功能多样的优点,但在很多场景中存在冗余传输,带来不必要开销的问题。以一个用户并发的访问一组实验摄像头画面模型(如图1)为例,此案例中,摄像头A、B、C分别采集某实验设备的视频画面并上传至视频服务器供用户浏览,此场景中用户注意力同一时间只会集中在一个画面上,并且该实验设备为该用户独占使用,其他用户也不能访问摄像头拍摄的实验画面。使用传统的FFmpeg工具进行推流,对每个推送的视频流进行编解码操作需要一个解码器,推送三路视频需要在三个带有解码器的硬件上运行FFmpeg工具进行推流。三路视频被推送至视频服务器后会产生三个对应的连接供用户去访问,用户通过切换不同的访问连接实现视频内容的切换。
[0004]从上案例中,可看出传统的FFmpeg推流设计中存在的冗余,即有n路视频流,那么就会有n条视频推送链路在工作,需要n个带有编码器的硬件设备,但是用户只会观看一个视频内容,剩余的n
‑
1个视频流的传输是冗余的。这促使我们设计了一种基于MQTT通信的轻量级推流方法,简称轻量级推流方法,以提高传统方法的效率。
技术实现思路
[0005]本专利技术要克服传统技术的传输冗余的缺点,提供一种更高效更低传输时延的一种基于MQTT的轻量级推流方法和系统。
[0006]轻量级推流方法从两个方面优化了原有FFmpeg的性能:第一,改进视频流选择算法,采用MQTT通信获取用户选择的视频流,减少端到端延时;第二,采用单设备动态切换推流源的方式减少所需的设备数和消耗的服务器流量,具体地,通过动态切换视频源的方式,每次仅推送用户期望访问的视频内容,来减少流量开销和编码器需求。
[0007]本专利技术的一种基于MQTT的轻量级推流方法,包括以下步骤:
[0008]S1.建立与视频源、接收端之间的连接,初始化视频上下文信息和传输协议配置信息,将连接信息存储进连接池;
[0009]S2.基于步骤S1所述连接池信息和客户端请求参数信息,确定当前建立连接的视
频源,并与之建立连接;
[0010]S3.基于步骤S2所述与视频源建立连接获取视频流,基于步骤S1所述视频上下文信息进行视频解码和加工处理,基于步骤S2所述客户端请求参数信息对加工完成的视频帧进行编码压缩,并存储到缓冲区;
[0011]S4.将视频帧从步骤S3所述缓冲区发送至目标服务器,并根据步骤S1所述传输协议配置信息设置发送使用的传输协议。
[0012]进一步,步骤S1所述视频上下文信息包括:视频源地址、接收端地址、编码方式、编码器地址、源视频分辨率、目标视频分辨率;传输协议配置信息包括:传输协议、帧率、比特率、编码方式。
[0013]再进一步,所述传输协议配置信息设置发送视频帧使用的网络传输协议。
[0014]进一步,步骤S2所述客户端请求参数信息包括:视频源标记、客户端视频分辨率、比特率、码率、编码方式、帧策略、缓冲策略、帧组合策略;步骤S2中确定当前建立连接的视频源,包括:客户端请求参数信息中的视频源标记,在步骤S1所述的连接池中搜索,选择与之相似的视频源地址。
[0015]进一步,步骤S3中进行视频解码和加工处理并编码压缩,包括:基于所述上下文信息中的编码方式和编码器进行编码操作;客户端请求参数信息将源视频相应格式调整为客户端要求的格式。
[0016]一种基于MQTT的轻量级推流系统,包括:
[0017]视频源连接池,用于维护一个结构体数组,存储与多个视频源连接的上下文结构体信息,用于动态的切换连接,获取源数据;
[0018]视频切换模块,根据用户选择的视频信息在连接池中选择出对应的视频源并建立连接,结束之前的连接,将新的视频数据推送给用户;
[0019]视频处理模块,根据用户指定的视频规格对视频进行加工调整,包括视频宽度与高度的调整,视频分辨率的调整,视频帧率的调整,并对视频中的噪声点进行滤波处理;
[0020]视频编码模块,通过调用编码器接口函数,传入视频编码器指针和编码器的上下文信息,将视频内容逐帧传递进编码器,调用返回函数获取编码后的视频帧存储进缓冲区等待发送;
[0021]视频流化模块,用于视频数据进行处理和封装,使其可以在网络上进行实时传输。
[0022]首先,本专利技术改进视频流选择算法,采用MQTT通信方式动态获取用户选择的视频流,减少端到端延时。其次,采用单设备动态切换推流源的方式减少所需的设备数和消耗的服务器流量。最后,通过动态切换视频源的方式,每次仅推送用户期望访问的视频内容,来减少流量开销和编码器需求。
[0023]与现有技术相比,本专利技术的有益效果是:通过MQTT通信动态获取用户所需要的视频流内容、动态切换推流的方式,减少了冗余视频内容的传输,降低直播视频流的传播时延。显著降低了网络资源开销,提升硬件设备的资源利用率。
附图说明
[0024]图1(a)~图1(b)展示了本专利技术与原有视频推流过程的对比,其中,图1(a)是使用传统FFmpeg工具的视频传输流程图,图1(b)是使用本文提出的轻量级推流工具的视频传输
流程图。
[0025]图2是本专利技术方法功能模块的体系结构图。
[0026]图3是由异构物联网设备、服务器、用户设备组成的实验实施的示意图。
[0027]图4是展示访问不同视频流数量的用户分别使用FFmpeg和本专利技术进行直播推流的延迟对比的柱状图。
具体实施方式
[0028]下面结合附图进一步说明本专利技术的技术方案。
[0029]实施例1
[0030]本专利技术提供一种基于MQTT通信的轻量级推流方法,包括如下步骤:
[0031]S1.建立与视频源、接收端之间的连接,初始化视频上下文信息和传输协议配置信息,将连接信息存储进连接池;
[0032]S2.基于步骤S1所述连接池信息和客户端请求参数信息,确定当前建立连接的视频源,并与之建立连接;
[0033]S3.基于步骤S2所述与视频源建立连接获取视频流,基于步骤S1所述视频上下文信息进行视频解码和加工处理,基于步骤S2所述客户端请求参数信息对加工完成的视频帧进行编码压缩,并存储到缓冲区;
[0034本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种基于MQTT的轻量级推流方法,包括以下步骤:S1.建立与视频源、接收端之间的连接,初始化视频上下文信息和传输协议配置信息,将连接信息存储进连接池;S2.基于步骤S1所述连接池信息和客户端请求参数信息,确定当前建立连接的视频源,并与之建立连接;S3.基于步骤S2所述与视频源建立连接获取视频流,基于步骤S1所述视频上下文信息进行视频解码和加工处理,基于步骤S2所述客户端请求参数信息对加工完成的视频帧进行编码压缩,并存储到缓冲区;S4.将视频帧从步骤S3所述缓冲区发送至目标服务器,并根据步骤S1所述传输协议配置信息设置发送使用的传输协议。2.根据权利要求1所述的方法,步骤S1所述视频上下文信息包括:视频源地址、接收端地址、编码方式、编码器地址、源视频分辨率、目标视频分辨率。3.根据权利要求2所述的方法,步骤S1所述传输协议配置信息包括:传输协议、帧率、比特率、编码方式。4.根据权利要求3所述的方法,步骤S2所述客户端请求参数信息包括:视频源标记、客户端视频分辨率、比特率、码率、编码方式、帧策略、缓冲策略、帧组合策略。5.根据权利要求4所述的方法,其特征在于,所述步骤S2中确定当前建立连接的视频源,包括:基于所述客户端请求参数信息中的...
【专利技术属性】
技术研发人员:高艺,段瑶光,董玮,
申请(专利权)人:浙江大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。