CN114025191B - 一种基于Nginx-rtmp的webrtc低延迟直播方法及系统 - Google Patents
一种基于Nginx-rtmp的webrtc低延迟直播方法及系统 Download PDFInfo
- Publication number
- CN114025191B CN114025191B CN202111300341.7A CN202111300341A CN114025191B CN 114025191 B CN114025191 B CN 114025191B CN 202111300341 A CN202111300341 A CN 202111300341A CN 114025191 B CN114025191 B CN 114025191B
- Authority
- CN
- China
- Prior art keywords
- module
- rtmp
- nginx
- rtc
- code stream
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000012545 processing Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1069—Session establishment or de-establishment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/643—Communication protocols
- H04N21/6437—Real-time Transport Protocol [RTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/858—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于Nginx‑rtmp的webrtc低延迟直播方法及系统,该系统包括Nginx‑rtmp模块、RTC服务模块、RTC桥接模块;RTC服务模块注册进Nginx系统;RTC桥接模块用于关联所述RTC服务模块与Nginx‑rtmp模块,并在Nginx‑rtmp模块传输音视频码流数据时,转发上述音视频码流数据至RTC服务模块;RTC服务模块用于提供HTTP接口单元和UDP服务单元,并将HTTP接口单元及UDP服务单元注册至Nginx‑rtmp模块;RTC服务模块接收来自Nginx‑rtmp模块的码流数据,并将接收到的码流数据封装成为RTP数据。本方案有效解决了因rtmp底层TCP协议限制导致延迟较高的问题;使用普通浏览器即可实现播放,兼容移动端,且不会缓存流媒体资源,保密性好。
Description
技术领域
本发明涉及计算机视频数据处理领域,特别涉及一种基于Nginx-rtmp的低延迟直播方法及其系统。
背景技术
Nginx同Apache、Tomcat一样,是一种开源服务器软件。它是一个高性能的HTTP和反向代服务器,有着高并发、性能好和占用内存少等特点。
Nginx-rtmp模块是Nginx的一个第三方开源模块,广泛应用于直播系统中。Nginx-rtmp-module包含以下特性:支持rtmp、HLS直播;可将直播视频分段存储;支持H.264视频编解码、AAC音频编解码;具有强大的缓冲功能,可确保在效率与码率间达到平衡;支持多种操作系统。
Nginx-http-flv-module是在Nginx-rtmp-module基础上的一个直播模块,兼容Nginx-rtmp-module所有功能,基于Nginx-rtmp-module的流媒体服务器;支持Http-Flv方式的直播;支持GOP缓存,以减少首屏时间。
rtmp协议是应用层协议,靠底层可靠的传输层协议(通常是TCP)来保证信息传输的可靠性的,基本上所有的编码器都支持rtmp输出。
Nginx-rtmp是应用广泛的直播系统,rtmp协议是基于TCP协议,逻辑结构本质上和普通的TCP服务器类似。如图1,Nginx-rtmp模块主要支持rtmp和HLS直播。但是,使用Nginx-rtmp模块存在如下缺陷:
1、播放rtmp码流的劣势:它是基于TCP传输,非公共端口,可能会被防火墙阻拦;rtmp为Adobe私有协议,很多设备无法播放,特别是在iOS端,需要使用第三方解码器才能播放;目前主流浏览器已经不支持flash播放器;延迟1-3秒对于实时性要求比较高的场景仍然达不到要求;
2、播放HLS码流的劣势:实时性差,延迟高;ts切片会造成海量小文件,对存储和缓存都有一定的挑战;由于在本地客户端存在流媒体资源缓,在保密性方面不够好。
现有技术中,如图2,Nginx-http-flv-module是在Nginx-rtmp-module基础上开发的一个直播模块,增加了对Http-Flv方式的直播支持;使用类似rtmp流式的HTTP长连接,可以复用现有HTTP分发资源的流式协议。但是,该方法仍然存在如下缺陷:1、与HLS类似,由于传输特性,该方案会在本地客户端缓存流媒体资源,在保密性方面不够好;2、尽管方案二将rtmp码流封装成Http-Flv,但是与播放客户端之间本质上还是传输TCP流,由于TCP协议特性限制,延迟仍然较大(1-3秒)。
发明内容
针对现有技术的不足,本发明寻求在Nginx-rtmp模块的基础上,实现一种低延迟且保密性较好的直播方案。具体而言,本发明提供了以下的技术方案:
一方面,本发明提供了一种基于Nginx-rtmp的webrtc低延迟直播方法,该方法包括:
步骤1、启动Nginx,加载第三方模块,所述第三方模块包括Nginx-rtmp模块;
步骤2、初始化所述Nginx-rtmp模块;
步骤3、进行RTC服务模块初始化,加载配置文件;
步骤4、创建HTTP服务接口,接受播放客户端请求,建立播放webrtc网络连接;
步骤5、与推流客户端建立rtmp连接,并保存链路信息;
步骤6、建立发送码流数据通道,服务器和播放客户端间只建立一个网络链路,且多个推流端复用该网络链路;
步骤7、传输媒体数据,并转发rtmp数据至RTC服务模块;
步骤8、对音视频数据分别进行封装,形成RTP数据;
步骤9、将所述RTP数据推送至所有RTC订阅端,并在RTC播放客户端建立WebRtc网络连接后,进行播放。
优选的,当所述步骤9的播放结束后,断开推送,此时推流客户端断开推流。
优选的,所述步骤9中,RTC播放客户端建立WebRtc网络连接的方式为:
步骤901、RTC播放客户端通过HTTP发送连接请求,创建offer sdp,携带播放URL和offer sdp;RTC服务模块收到播放的接入请求后,记录offer sdp和URL,返回answer sdp;
步骤902、播放端解析answer sdp,并进行ice连接检查,发起stun binding请求,UDP业务收到stun binding请求后,处理stun binding消息,返回成功消息;
步骤903、播放端发送DTLS握手,握手成功后整个码流传输链路完成;并将播放端连接session加入到RTC订阅者列表。
优选的,所述RTC服务模块用于提供HTTP接口单元及UDP服务单元,并将所述HTTP接口单元及UDP服务单元注册至Nginx-rtmp模块。
优选的,所述RTC服务模块的设置方式为:
在Nginx系统中添加RTC服务配置项;
创建HTTP播放接口模块,并注册进Nginx系统;
基于Nginx规范创建用于发送音视频码流的UDP服务模块,封装RTP数据;
将创建UDP服务模块的同时,创建ngx_command_t、ngx_stream_module_t和ngx_module_t对象,并最终将RTC服务模块注册进Nginx系统。
优选的,所述RTC服务模块通过RTC桥接模块与所述Nginx-rtmp模块进行关联。
优选的,所述RTC服务模块与所述Nginx-rtmp模块进行关联的流程为:
(1)推流客户端发送推流请求至Nginx-rtmp模块;
(2)在推流客户端与Nginx-rtmp模块建立后,使用rtmp推流信息初始化桥接对象;
(3)推流客户端推送音视频码流至Nginx-rtmp模块;
(4)Nginx-rtmp模块在推流给rtmp播放器之前,先将rtmp码流数据发送给RTC服务模块处理;
(5)RTC桥接模块转发拷贝完成,发送至Nginx-rtmp模块,Nginx-rtmp模块将数据发送给rtmp播放器。
优选的,所述RTC服务模块的配置项包括:
listen项:即侦听的RTC端口;
stun timeout项:即设置会话超时时间;
bframe项:即设置是否保留视频数据的B帧;
acc项:即设置如何处理AAC音频包。
另一方面,本发明还提供了一种基于Nginx-rtmp的webrtc低延迟直播系统,所述系统基于Nginx系统,所述系统还包括Nginx-rtmp模块、RTC服务模块、RTC桥接模块;所述RTC服务模块注册进所述Nginx系统;所述RTC桥接模块用于关联所述RTC服务模块与所述Nginx-rtmp模块,并在所述Nginx-rtmp模块传输音视频码流数据时,转发上述音视频码流数据至所述RTC服务模块;
所述RTC服务模块用于提供HTTP接口单元和UDP服务单元,并将所述HTTP接口单元及UDP服务单元注册至Nginx-rtmp模块;
所述RTC服务模块接收来自所述Nginx-rtmp模块的码流数据,并将接收到的所述码流数据封装成为RTP数据。
优选的,所述系统的加载顺序为:首先进行Nginx系统的配置加载,再进行Nginx-rtmp模块的配置加载,最后进行RTC服务模块的配置加载。
本发明主要针对三个问题提出:1、基于TCP传输码流导致播放延迟较大;2、由于需要缓存流媒体资源在本地客户端,导致保密性不够好;3、需要安装第三方客户端才能播放码流。因此,与现有技术相比,分发明的技术方案具有以下优点:
利用Nginx-rtmp系统设计基于WebRtc协议的直播方案,解决因rtmp底层TCP协议限制导致延迟较高的问题;使用普通浏览器即可实现播放,兼容移动端,无需进行客户端的下载和安装;且不会缓存流媒体资源,保密性较好。
附图说明
图1为现有技术的Nginx-rtmp方案示意图;
图2为现有技术的Nginx-http-flv-module方案示意图;
图3为本发明实施例的方案示意图;
图4为本发明实施例的Nginx-rtmp方案流程图;
图5为本发明实施例的连接过程示意图
图6为本发明实施例的系统配置加载顺序示意图;
图7为本发明实施例的RTC服务关联Nginx-rtmp过程示意图;
图8为本发明实施例的系统结构示意图。
具体实施方式
下面将结合本发明实施例中的图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的方案,旨在寻求在Nginx-rtmp模块的基础上,实现一种低延迟且保密性较好的直播方案。在一个具体的实施例中,由于WebRtc协议基于是UDP/IP协议传输的,相对于基于TCP的rtmp推拉流方式,支持UDP的WebRtc方式延时低,延迟可控制在0.5秒内;由于WebRtc本身就是为浏览器设计的,无需安装客户端,且无需在播放端缓存资源,可以解决保密问题,该实施例中,将基于Nginx-rtmp模块和WebRtc协议设计直播方案。方案的总体流程如图3所示,即推流端通过rtmp将数据流发送至Nginx-WebRtc-module流媒体服务器,在通过RTC服务,发送至PC浏览器或者移动播放客户端。
基于Nginx-rtmp-module实现WebRtc直播,关键部分主要是如下几点:
1、为管理HTTP请求生成的WebRtc链路,需要设计HTTP服务接口;
2、设计RTC服务并与原Nginx-rtmp模块关联;
3、转换接收到的rtmp码流数据为RTC格式;
4、将音视频数据分别发送给播放客户端。
一、整体流程设计
结合图4,为实现上述的4点关键环节,在本实施例中,结合Nginx-rtmp模块原业务流程,整合添加的RTC服务模块后,改进的总体流程方案为:
1、Nginx启动时完成系统配置、Nginx-rtmp等第三方模块的加载;Nginx启动的配置,可以是如常规的Nginx系统的基本模块的配置;
2、Nginx-rtmp模块初始化,读取Nginx-rtmp模块配置文件;Nginx-rtmp初始化完成后,紧接着做RTC服务模块初始化,加载RTC服务配置文件;
3、因rtmp底层协议是TCP,Nginx-rtmp模块监听rtmp端口,推流客户端通过“三次握手”与Nginx-rtmp模块建立rtmp连接。
4、Nginx-rtmp模块初始化rtmp码流推送网络环境,准备好rtmp音视频码流数据传输通道;RTC服务模块创建HTTP服务接口,初始化rtc码流播放网络环境,准备接受rtc播放客户端请求;
5、Nginx-rtmp模块传输rtmp音视频数据,处理音视频头部信息,接受、处理码流传输控制命令消息;
6、在步骤5Nginx-rtmp模块传输rtmp音视频数据时,RTC服务中的桥接模块转发rtmp音视频数据至RTC服务模块;
7、在RTC服务模块中,对音视频数据分别做封装,例如将音频AAC转Opus,封装视频码流为rtp格式;
8、RTC服务模块将封装后的rtp数据推送至所有建立连接的RTC播放客户端;RTC播放客户端可采用现有常规技术建立RTC播放连接,如标准版谷歌浏览器,此处不再赘述;
9、当推送客户端关闭推送时,可终止码流推送;Nginx-rtmp模块也可主动断开码流接收流程。
二、与RTC播放客户端建立连接设计
在上述的实施例中,在一个更为优选的实施方式中,与RTC播放客户端建立连接的握手流程可以参考图5所示,其过程优选如下:
1、RTC播放客户端通过HTTP发送连接请求,创建offer sdp,携带播放URL和offersdp;RTC服务收到播放的接入请求后,记录offer sdp和URL,返回answer sdp;
2、播放端解析answer sdp,并进行ice连接检查,发起stun binding请求,UDP业务收到stun binding请求后,处理stun binding消息,返回成功消息;
3、播放端发送DTLS握手,握手成功后整个码流传输链路完成;
4、RTC服务模块将播放端连接session加入到RTC订阅者列表。
三、RTC服务模块的设计
在该实施例中,在一个更为优选的实施方式中,RTC服务模块设计主要用于提供HTTP接口和UDP服务,并且将这两个模块注册至原Nginx-rtmp模块,其具体的实现方式为:
1、添加RTC服务模块的配置项
结合图6所示,在Nginx系统中添加RTC服务模块的主要配置项有:
listen项:优选UDP协议,侦听的RTC端口;
stun timeout项:设置会话超时时间,单位一般为秒;
bframe项:即设置是否保留视频数据的B帧,rtmp流中一般会存在B帧数据,而RTC中没有,一般可默认丢弃B帧;
acc项:即设置如何处理AAC音频包,可默认转码成opus格式,也可选择丢弃,丢弃后即为无声音。
结合图7,在优选的实施方式中,整个系统的加载顺序为:首先进行Nginx系统的配置加载,再进行Nginx-rtmp模块的配置加载,最后对RTC服务模块进行配置加载。
2、创建HTTP播放接口并注册进Nginx系统
首先,依据Nginx规范创建HTTP业务处理模块,同时创建Nginx的模块化最基本的数据结构ngx_module_t对象、http模块需要创建的ngx_http_module_t对象和Nginx指令需要创建的ngx_command_t对象,按照Nginx系统的配置规范创建config配置文件。只有创建这三个对象和config配置文件,Nginx才能按照将HTTP服务接口业务处理模块注册进Nginx系统中。
3、创建UDP服务并注册进Nginx系统
(1)WebRtc中音视频数据是通过UDP传输的,所以须创建一个UDP服务进行发送音视频码流;该UDP优选需要提供如下功能:
a、提供RTC服务监听端口,等待播放客户端连接;
b、在与播放器完成连接后,为每个播放器创建播放协程和数据缓存队列,协程中启动一个while循环,从队列中读取封装好的音视频数据,发送给所有的播放器。
(2)封装RTP数据
需要封装来自Nginx-rtmp模块的音频和视频码流数据,该数据的封装方式,可以选用本领域中常规的直接封装方法;在本实施例中,优选采用如下的封装方式:
对于音频数据:按照标准规范,将AAC音频转码成符合RTC的OPUS格式;注意,如果配置文件选择丢弃音频,则无需转换;
对于视频数据:按照标准规范,将NALU数据打包成RTP或FUA包;注意,如果配置文件中设置跳过B帧的话,需将B帧剔除。
(3)注册进Nginx系统
基于Nginx规范创建UDP服务业务处理模块,同时创建Nginx的模块化最基本的数据结构ngx_module_t对象、UDP服务模块需要创建的ngx_stream_module_t对象和Nginx指令需要创建的ngx_command_t对象,按照Nginx系统的配置规范创建config配置文件。只有创建这三个对象和config配置文件,Nginx才能按照将RTC服务模块注册进Nginx系统中。
4、RTC服务关联Nginx-rtmp模块
创建rtmp转RTC桥接模块,该模块主要作用是:在Nginx-rtmp模块传输音视频码流时,转发rtmp码流数据到RTC服务模块。
结合图7所示,桥接模块建立的流程为:
(1)rtmp推流客户端发送推流请求至Nginx-rtmp模块;
(2)在推流客户端与Nginx-rtmp服务建立后,使用rtmp推流信息初始化桥接模块;
(3)rtmp推流客户端推送音视频码流至Nginx-rtmp模块;
(4)通过修改原Nginx-rtmp发送音视频码流逻辑,在码流推流给rtmp播放器之前,桥接模块先将rtmp码流数据发送给RTC服务模块;
(5)桥接模块拷贝、转发rtmp码流数据至RTC服务模块后即返回消息给Nginx-rtmp模块;无需等待RTC服务模块处理完成;
(6)在桥接模块完成rtmp码流数据转发并通知原Nginx-rtmp模块后,Nginx-rtmp模块可按照原处理流程,例如将继续rtmp码流数据推送给rtmp播放器。
在又一个具体的实施例中,本发明的技术方案还提供了一种基于Nginx-rtmp的webrtc低延迟直播系统,结合图8所示,该系统是基于Nginx系统架构的,为实现本发明方案的功能,本系统还包括Nginx-rtmp模块、RTC服务模块、RTC桥接模块;所述RTC服务模块注册进所述Nginx系统;所述RTC桥接模块用于关联所述RTC服务模块与所述Nginx-rtmp模块,并在所述Nginx-rtmp模块传输音视频码流数据时,转发上述音视频码流数据至所述RTC服务模块;
所述RTC服务模块用于提供HTTP接口单元和UDP服务单元,并将所述HTTP接口单元及UDP服务单元注册至Nginx-rtmp模块;
所述RTC服务模块接收来自所述Nginx-rtmp模块的码流数据,并将接收到的所述码流数据封装成为RTP数据。
更为具体的实施方式中,所述系统的加载顺序为:首先进行Nginx系统的配置加载,再进行Nginx-rtmp模块的配置加载,最后进行RTC服务模块的配置加载。
为实现RTC服务模块的传输、监测、转换等功能,RTC服务模块的主要配置项优选的设置如下:
listen项:优选UDP协议,侦听的RTC端口;
stun timeout项:设置会话超时时间,单位一般为秒;
bframe项:即设置是否保留视频数据的B帧,rtmp流中一般会存在B帧数据,而RTC中没有,一般可默认丢弃B帧;
acc项:即设置如何处理AAC音频包,可默认转码成opus格式,也可选择丢弃,丢弃后即为无声音。
此外,本发明的技术方案还可以通过一种电子装置的方式来实现,该装置可以配合服务器使用,以实现为用户提供视频在线播放的功能。该装置可以搭载如上实施例中所述的基于Nginx-rtmp的webrtc低延迟直播系统,以实现本发明中提供的基于Nginx-rtmp的webrtc低延迟直播方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
Claims (8)
1.一种基于Nginx-rtmp的webrtc低延迟直播方法,其特征在于,所述方法包括:
步骤1、启动Nginx,加载第三方模块,所述第三方模块包括Nginx-rtmp模块;
步骤2、初始化所述Nginx-rtmp模块;
步骤3、进行RTC服务模块初始化,加载配置文件;
步骤4、创建HTTP服务接口,接受播放客户端请求,建立播放WebRTC网络连接;
步骤5、Nginx-rtmp模块与推流客户端建立rtmp连接,并保存链路信息;
步骤6、建立发送码流数据通道;
步骤7、传输媒体数据,并转发rtmp数据至RTC服务模块;
步骤8、RTC服务模块对音视频数据分别进行封装,形成RTP数据;
步骤9、将所述RTP数据推送至所有播放客户端,并在播放客户端建立WebRTC网络连接后,进行播放;
所述RTC服务模块通过RTC桥接模块与所述Nginx-rtmp模块进行关联;所述RTC服务模块与所述Nginx-rtmp模块进行关联的流程为:
(1)推流客户端发送推流请求至Nginx-rtmp模块;
(2)在推流客户端与Nginx-rtmp模块建立服务后,使用rtmp推流信息初始化RTC桥接模块;
(3)推流客户端推送音视频码流至Nginx-rtmp模块;
(4)Nginx-rtmp模块在推流给播放客户端之前,RTC桥接模块先将rtmp码流数据发送给RTC服务模块处理;
(5)RTC桥接模块拷贝和转发rtmp码流数据至RTC服务模块后即返回消息给Nginx-rtmp模块;
(6)在RTC桥接模块完成rtmp码流数据转发并通知Nginx-rtmp模块后,Nginx-rtmp模块按照原处理流程继续处理原数据推送。
2.根据权利要求1所述的方法,其特征在于,当所述步骤9的播放结束后,断开推送,此时推流客户端断开推流。
3.根据权利要求1所述的方法,其特征在于,所述步骤9中,播放客户端建立WebRTC网络连接的方式为:
步骤901、播放客户端通过HTTP发送连接请求,创建offer sdp,携带播放URL和offersdp;RTC服务模块收到播放的接入请求后,记录offer sdp和URL,返回answer sdp;
步骤902、播放客户端解析answer sdp,并进行ice连接检查,发起stun binding请求,UDP业务收到stun binding请求后,处理stun binding消息,返回成功消息;
步骤903、播放客户端发送DTLS握手,握手成功后整个码流传输链路完成;并将播放客户端连接session加入到RTC订阅者列表。
4.根据权利要求1所述的方法,其特征在于,所述RTC服务模块用于提供HTTP接口单元及UDP服务单元,并将所述HTTP接口单元及UDP服务单元注册至Nginx-rtmp模块。
5.根据权利要求1所述的方法,其特征在于,所述RTC服务模块的设置方式为:
在Nginx系统中添加RTC服务配置项;
创建HTTP播放接口模块,并注册至Nginx系统;
基于Nginx规范创建用于发送音视频码流的UDP服务模块,封装RTP数据;
将创建UDP服务模块的同时,创建ngx_command_t、ngx_stream_module_t和ngx_module_t对象,并最终将RTC服务模块注册至Nginx系统。
6.根据权利要求1所述的方法,其特征在于,所述RTC服务模块的配置项包括:
listen项:即侦听的RTC端口;
stun timeout项:即设置会话超时时间;
bframe项:即设置是否保留视频数据的B帧;
acc项:即设置如何处理AAC音频包。
7.一种基于Nginx-rtmp的webrtc低延迟直播系统,所述低延迟直播系统基于Nginx系统,其特征在于,所述低延迟直播系统还包括Nginx-rtmp模块、RTC服务模块和RTC桥接模块;所述RTC服务模块注册至所述Nginx系统;所述RTC桥接模块用于关联所述RTC服务模块与所述Nginx-rtmp模块,并在所述Nginx-rtmp模块传输音视频码流数据时,转发上述音视频码流数据至所述RTC服务模块;
所述RTC服务模块用于提供HTTP接口单元和UDP服务单元,并将所述HTTP接口单元及UDP服务单元注册至Nginx-rtmp模块;
所述RTC服务模块接收来自所述Nginx-rtmp模块的码流数据,并将接收到的所述码流数据封装成为RTP数据;
所述RTC服务模块通过RTC桥接模块与所述Nginx-rtmp模块进行关联;所述RTC服务模块与所述Nginx-rtmp模块进行关联的流程为:
(1)推流客户端发送推流请求至Nginx-rtmp模块;
(2)在推流客户端与Nginx-rtmp模块建立后,使用rtmp推流信息初始化桥接模块;
(3)推流客户端推送音视频码流至Nginx-rtmp模块;
(4)Nginx-rtmp模块在推流给播放客户端之前,RTC桥接模块先将rtmp码流数据发送给RTC服务模块处理;
(5)RTC桥接模块拷贝和转发rtmp码流数据至RTC服务模块后即返回消息给Nginx-rtmp模块;
(6)在RTC桥接模块完成rtmp码流数据转发并通知Nginx-rtmp模块后,Nginx-rtmp模块按照原处理流程继续处理原数据推送。
8.根据权利要求7所述的低延迟直播系统,其特征在于,所述低延迟直播系统的加载顺序为:首先进行Nginx系统的配置加载,再进行Nginx-rtmp模块的配置加载,最后进行RTC服务模块的配置加载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111300341.7A CN114025191B (zh) | 2021-11-04 | 2021-11-04 | 一种基于Nginx-rtmp的webrtc低延迟直播方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111300341.7A CN114025191B (zh) | 2021-11-04 | 2021-11-04 | 一种基于Nginx-rtmp的webrtc低延迟直播方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114025191A CN114025191A (zh) | 2022-02-08 |
CN114025191B true CN114025191B (zh) | 2023-08-15 |
Family
ID=80061217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111300341.7A Active CN114025191B (zh) | 2021-11-04 | 2021-11-04 | 一种基于Nginx-rtmp的webrtc低延迟直播方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114025191B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115065832A (zh) * | 2022-05-07 | 2022-09-16 | 武汉斗鱼鱼乐网络科技有限公司 | 一种基于WebRtc的直播方法及相关设备 |
CN115190114A (zh) * | 2022-07-08 | 2022-10-14 | 杭州指令集智能科技有限公司 | 一种简化web视频播放器播放视频流程的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104244108A (zh) * | 2014-09-24 | 2014-12-24 | 上海网达软件股份有限公司 | 一种直播方法及系统 |
CN108206833A (zh) * | 2018-01-11 | 2018-06-26 | 福建星网锐捷通讯股份有限公司 | 音视频数据传输方法及其系统 |
CN108769616A (zh) * | 2018-06-21 | 2018-11-06 | 泰华智慧产业集团股份有限公司 | 一种基于rtsp协议的实时视频无插件预览方法及系统 |
CN111064973A (zh) * | 2019-11-28 | 2020-04-24 | 湖北工业大学 | 一种基于ipv9的直播系统 |
-
2021
- 2021-11-04 CN CN202111300341.7A patent/CN114025191B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104244108A (zh) * | 2014-09-24 | 2014-12-24 | 上海网达软件股份有限公司 | 一种直播方法及系统 |
CN108206833A (zh) * | 2018-01-11 | 2018-06-26 | 福建星网锐捷通讯股份有限公司 | 音视频数据传输方法及其系统 |
CN108769616A (zh) * | 2018-06-21 | 2018-11-06 | 泰华智慧产业集团股份有限公司 | 一种基于rtsp协议的实时视频无插件预览方法及系统 |
CN111064973A (zh) * | 2019-11-28 | 2020-04-24 | 湖北工业大学 | 一种基于ipv9的直播系统 |
Non-Patent Citations (1)
Title |
---|
基于Nginx技术的直播平台;陆亮;视听界(广播电视技术)(第03期);第22-30页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114025191A (zh) | 2022-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7840651B2 (en) | Client-server emulation supporting multicast transmissions of media objects | |
US8904026B2 (en) | Time-shifting streaming data | |
CN114025191B (zh) | 一种基于Nginx-rtmp的webrtc低延迟直播方法及系统 | |
WO2016049987A1 (zh) | 一种数据处理方法、装置及相关服务器 | |
AU2002240200B2 (en) | A digital television application protocol for interactive television | |
US10462529B2 (en) | Multicast transmission method, apparatus and system for OTT media | |
US20150271233A1 (en) | Method and apparatus for dash streaming using http streaming | |
WO2019128800A1 (zh) | 一种内容服务的实现方法、装置及内容分发网络节点 | |
US10044831B2 (en) | Method and apparatus for transmitting messages to a dash client | |
EP1806870B1 (en) | Method for providing data and data transmission system | |
US20220014574A1 (en) | Data distribution method and network device | |
JP2011082977A (ja) | P2pネットワークシステム及びそのデータ送受信方法 | |
CN107547517B (zh) | 音视频节目录制方法和网络设备及计算机装置 | |
CN115865884A (zh) | 一种网络摄像头数据访问装置、方法、网络摄像头和介质 | |
CN114827670A (zh) | 一种视频播放方法、装置及电子设备 | |
EP3399713B1 (en) | Device, system, and method to perform real-time communication | |
JP2005051299A (ja) | パケット送信装置、パケット受信装置、パケット送信方法及びパケット受信方法 | |
AU2002305256B2 (en) | A duplicating switch for streaming data units to a terminal | |
US20060280173A1 (en) | Method and system for uneven distribution of data | |
WO2017096789A1 (zh) | 信息共享方法及装置 | |
CN116962512B (zh) | 报文处理方法、设备、存储介质和装置 | |
CN102333095A (zh) | 一种媒体业务系统及方法 | |
WO2023216798A1 (zh) | 音视频的转码装置、方法、设备、介质及产品 | |
CN117354288A (zh) | 一种视频转码播放方法、装置、计算设备和存储介质 | |
RU2366103C2 (ru) | Хранение наборов параметров улучшенного видеокодирования (avc) в файловом формате avc |
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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room 711c, 7 / F, block a, building 1, yard 19, Ronghua Middle Road, Beijing Economic and Technological Development Zone, Daxing District, Beijing 102600 Patentee after: Beijing Zhongke Flux Technology Co.,Ltd. Address before: Room 711c, 7 / F, block a, building 1, yard 19, Ronghua Middle Road, Beijing Economic and Technological Development Zone, Daxing District, Beijing 102600 Patentee before: Beijing Ruixin high throughput technology Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |