CN109429108B - 一种iOS移动端基于Socket.IO和WebRTC的观看端视频连麦方法 - Google Patents
一种iOS移动端基于Socket.IO和WebRTC的观看端视频连麦方法 Download PDFInfo
- Publication number
- CN109429108B CN109429108B CN201710749054.1A CN201710749054A CN109429108B CN 109429108 B CN109429108 B CN 109429108B CN 201710749054 A CN201710749054 A CN 201710749054A CN 109429108 B CN109429108 B CN 109429108B
- Authority
- CN
- China
- Prior art keywords
- watching
- anchor
- video
- message
- audio
- 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
Images
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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/478—Supplemental services, e.g. displaying phone caller identification, shopping application
- H04N21/4788—Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
-
- 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/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/14—Systems for two-way working
- H04N7/141—Systems for two-way working between two video terminals, e.g. videophone
Abstract
本发明公开了一种iOS移动端基于Socket.IO和WebRTC的观看端视频连麦方法,包括WebRTC建立P2P通信和信令传输,本发明中,iOS移动端视频直播连麦时,用Socket.IO来进行主播端和观看端合理的信令传输,用WebRTC来进行实时音视频通话,连麦码流采用高实时性协议传输,少了服务器中转环节,更低的时延。
Description
技术领域
本发明涉及视频直播技术领域,具体为一种iOS移动端基于Socket.IO和WebRTC的观看端视频连麦方法。
背景技术
现有技术中,主播端和观看端各自都采集自己的视频源,然后通过rtmp协议发送给对方,也就是当连麦时,双方都是主播端,然后当自己拿到对方发过来的音视频数据的时候,把数据和自己本身的音视频数据进行合并显示,就完成了连麦;现有技术的缺点:RTMP流媒体方案由于延时较多,无法满足即时互动需求。
发明内容
本发明的目的在于提供一种iOS移动端基于Socket.IO和WebRTC的观看端视频连麦方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种iOS移动端基于Socket.IO和WebRTC的观看端视频连麦方法,包括WebRTC建立P2P通信和信令传输,WebRTC建立P2P通信包括以下流程:
A、使用WebRTC构建实时音视频通信;
B、在主播端和观看端之间传送彼此的SDP信息和candidate信息,主播端和观看端通过这些信息建立P2P连接来传送音视频数据;
C、主播端向观看端发起对聊请求。
优选的,所述步骤C中对聊请求包括以下流程:
C1、主播端首先创建PeerConnection对象,然后打开本地音视频设备,将音视频数据封装成MediaStream添加到PeerConnection中;
C2、主播端调用PeerConnection的CreateOffer方法创建一个用于offer的SDP对象,SDP对象中保存当前音视频的相关参数;主播端通过PeerConnection的SetLocalDescription方法将该SDP对象保存起来,并通过Signal服务器发送给观看端;
C3、观看端接收到主播端发送过的offer SDP对象,通过PeerConnection的SetRemoteDescription方法将其保存起来,并调用PeerConnection的CreateAnswer方法创建一个应答的SDP对象,通过PeerConnection的SetLocalDescription的方法保存该应答SDP对象并将它通过Signal服务器发送给主播端;
C4、主播端接收到观看端发送过来的应答SDP对象,将其通过PeerConnection的SetRemoteDescription方法保存起来;
C5、在SDP信息的offer/answer流程中,主播端和观看端已经根据SDP信息创建好相应的音频Channel和视频Channel并开启Candidate数据的收集,Candidate数据可以简单地理解成客户端的IP地址信息;
C6、当主播端收集到Candidate信息后,PeerConnection会通过OnIceCandidate接口给主播端发送通知,主播端将收到的Candidate信息通过Signal服务器发送给观看端,观看端通过PeerConnection的AddIceCandidate方法保存起来;同样的操作观看端对主播端再来一次;
C7、主播端和观看端就已经建立了音视频传输的P2P通道,观看端接收到主播端传送过来的音视频流,会通过PeerConnection的OnAddStream回调接口返回一个标识主播端音视频流的MediaStream对象,在观看端渲染出来即可。同样操作也适应观看端到主播端的音视频流的传输。
优选的,所述信令传输包括以下流程:
a、观看端和主播端都已经和信令服务器建立好Socket.IO连接;
b、观看端监听room_setting事件,收到room_setting消息后,解析其中的allow_speak_interaction字段,表示当前通话允不允许视频连麦,如果允许则进行以下流程,如果不允许,以下流程全部不走;
c、观看端发送request_speak消息,表示申请连麦;
d、如果60秒还没有收到信令服务器发过来的允许连麦的消息,则观看端主动发送cancel_request_speak消息,表示主动挂断连麦,即本次连麦失败;
e、观看端监听accept_speak消息,当主播端接受连麦申请时,监听的这个事件会收到消息,消息中包含申请连麦人员的唯一id,保存此值;
f、观看端发送speak_enter事件;
g、主播端发送给观看端speak_peer_list消息,其中包含所有用户和连麦相关的信息,包括用户id,用户角色,用户名称;
h、观看端根据上一步骤speak_peer_list中的用户列表,得到主播端的用户信息,和主播端开始建立WebRTC的P2P通信;
i、当观看端接收到speak_peer_list消息后,如果十秒内还没有接收到流媒体数据的话,观看端将发送hangup_interaction消息到主播端,挂断连麦,并回收相应的连麦资源;
j、观看端主动挂断连麦的时候,观看端会发送hangup_interaction消息,主播端会返回speak_disconnect消息,表示成功挂断连麦,观看端做相应的清理资源操作,当主播端主动挂断连麦的时候,主播端会发送speak_disconnect消息给观看端,观看端接收到speak_disconnect消息后,会挂断连麦,并做相应的清理资源的操作。
与现有技术相比,本发明的有益效果是:本发明中,iOS移动端视频直播连麦时,用Socket.IO来进行主播端和观看端合理的信令传输,用WebRTC来进行实时音视频通话,连麦码流采用高实时性协议传输,少了服务器中转环节,更低的时延。
附图说明
图1为本发明的WebRTC构建实时音视频通信流程图;
图2为本发明的信令传输流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-2,本发明提供一种技术方案:一种iOS移动端基于Socket.IO和WebRTC的观看端视频连麦方法,包括WebRTC建立P2P通信和信令传输,WebRTC建立P2P通信包括以下流程:
A、使用WebRTC构建实时音视频通信;
B、在主播端和观看端之间传送彼此的SDP信息和candidate信息,主播端和观看端通过这些信息建立P2P连接来传送音视频数据;
C、主播端向观看端发起对聊请求。
本实施例中,步骤C中对聊请求包括以下流程:
C1、主播端首先创建PeerConnection对象,然后打开本地音视频设备,将音视频数据封装成MediaStream添加到PeerConnection中;
C2、主播端调用PeerConnection的CreateOffer方法创建一个用于offer的SDP对象,SDP对象中保存当前音视频的相关参数;主播端通过PeerConnection的SetLocalDescription方法将该SDP对象保存起来,并通过Signal服务器发送给观看端;
C3、观看端接收到主播端发送过的offer SDP对象,通过PeerConnection的SetRemoteDescription方法将其保存起来,并调用PeerConnection的CreateAnswer方法创建一个应答的SDP对象,通过PeerConnection的SetLocalDescription的方法保存该应答SDP对象并将它通过Signal服务器发送给主播端;
C4、主播端接收到观看端发送过来的应答SDP对象,将其通过PeerConnection的SetRemoteDescription方法保存起来;
C5、在SDP信息的offer/answer流程中,主播端和观看端已经根据SDP信息创建好相应的音频Channel和视频Channel并开启Candidate数据的收集,Candidate数据可以简单地理解成客户端的IP地址信息;
C6、当主播端收集到Candidate信息后,PeerConnection会通过OnIceCandidate接口给主播端发送通知,主播端将收到的Candidate信息通过Signal服务器发送给观看端,观看端通过PeerConnection的AddIceCandidate方法保存起来;同样的操作观看端对主播端再来一次;
C7、主播端和观看端就已经建立了音视频传输的P2P通道,观看端接收到主播端传送过来的音视频流,会通过PeerConnection的OnAddStream回调接口返回一个标识主播端音视频流的MediaStream对象,在观看端渲染出来即可。同样操作也适应观看端到主播端的音视频流的传输。
本实施例中,信令传输包括以下流程:
a、观看端和主播端都已经和信令服务器建立好Socket.IO连接;
b、观看端监听room_setting事件,收到room_setting消息后,解析其中的allow_speak_interaction字段,表示当前通话允不允许视频连麦,如果允许则进行以下流程,如果不允许,以下流程全部不走;
c、观看端发送request_speak消息,表示申请连麦;
d、如果60秒还没有收到信令服务器发过来的允许连麦的消息,则观看端主动发送cancel_request_speak消息,表示主动挂断连麦,即本次连麦失败;
e、观看端监听accept_speak消息,当主播端接受连麦申请时,监听的这个事件会收到消息,消息中包含申请连麦人员的唯一id,保存此值;
f、观看端发送speak_enter事件;
g、主播端发送给观看端speak_peer_list消息,其中包含所有用户和连麦相关的信息,包括用户id,用户角色,用户名称;
h、观看端根据上一步骤speak_peer_list中的用户列表,得到主播端的用户信息,和主播端开始建立WebRTC的P2P通信;
i、当观看端接收到speak_peer_list消息后,如果十秒内还没有接收到流媒体数据的话,观看端将发送hangup_interaction消息到主播端,挂断连麦,并回收相应的连麦资源;
j、观看端主动挂断连麦的时候,观看端会发送hangup_interaction消息,主播端会返回speak_disconnect消息,表示成功挂断连麦,观看端做相应的清理资源操作,当主播端主动挂断连麦的时候,主播端会发送speak_disconnect消息给观看端,观看端接收到speak_disconnect消息后,会挂断连麦,并做相应的清理资源的操作。
本发明中,iOS移动端视频直播连麦时,用Socket.IO来进行主播端和观看端合理的信令传输,用WebRTC来进行实时音视频通话,连麦码流采用高实时性协议传输,少了服务器中转环节,更低的时延。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (1)
1.一种iOS移动端基于Socket.IO和WebRTC的观看端视频连麦方法,包括WebRTC建立P2P通信和信令传输,其特征在于:主播端和观看端各自都采集自己的视频源,然后通过rtmp协议发送给对方,也就是当连麦时,双方都是主播端,然后当自己拿到对方发过来的音视频数据的时候,把数据和自己本身的音视频数据进行合并显示,就完成了连麦;iOS移动端视频直播连麦时,用Socket.IO来进行主播端和观看端合理的信令传输,用WebRTC来进行实时音视频通话,连麦码流采用高实时性协议传输,少了服务器中转环节,更低的时延,WebRTC建立P2P通信包括以下流程:
A、使用WebRTC构建实时音视频通信;
B、在主播端和观看端之间传送彼此的SDP信息和candidate信息,主播端和观看端通过所述SDP信息和candidate信息建立P2P连接来传送音视频数据;
C、主播端向观看端发起对聊请求;
其中,所述步骤C中发起对聊请求包括以下流程:
C1、主播端首先创建PeerConnection对象,然后打开本地音视频设备,将音视频数据封装成MediaStream添加到PeerConnection中;
C2、主播端调用PeerConnection的CreateOffer方法创建一个用于offer的SDP对象,SDP对象中保存当前音视频的相关参数;主播端通过PeerConnection的SetLocalDescription方法将该SDP对象保存起来,并通过Signal服务器发送给观看端;
C3、观看端接收到主播端发送过的offer SDP对象,通过PeerConnection的SetRemoteDescription方法将其保存起来,并调用PeerConnection的CreateAnswer方法创建一个应答的SDP对象,通过PeerConnection的SetLocalDescription的方法保存该应答SDP对象并将它通过Signal服务器发送给主播端;
C4、主播端接收到观看端发送过来的应答SDP对象,将其通过PeerConnection的SetRemoteDescription方法保存起来;
C5、在SDP信息的offer/answer流程中,主播端和观看端已经根据SDP信息创建好相应的音频Channel和视频Channel并开启Candidate数据的收集;
C6、当主播端收集到Candidate信息后,PeerConnection会通过OnIceCandidate接口给主播端发送通知,主播端将收到的Candidate信息通过Signal服务器发送给观看端,观看端通过PeerConnection的AddIceCandidate方法保存起来;
C7、主播端和观看端就已经建立了音视频传输的P2P通道,观看端接收到主播端传送过来的音视频流,会通过PeerConnection的OnAddStream回调接口返回一个标识主播端音视频流的MediaStream对象,在观看端渲染出来即可;
其中,所述信令传输包括以下流程:
a、观看端和主播端都已经和信令服务器建立好Socket.IO连接;
b、观看端监听room_setting事件,收到room_setting消息后,解析其中的allow_speak_interaction字段,判断当前通话允不允许视频连麦,如果允许则进行以下流程,如果不允许,则不进行以下流程;
c、观看端发送request_speak消息,表示申请连麦;
d、如果60秒还没有收到信令服务器发过来的允许连麦的消息,则观看端主动发送cancel_request_speak消息,表示主动挂断连麦,即本次连麦失败;
e、观看端监听accept_speak消息,当主播端接受连麦申请时,监听的这个事件会收到消息,消息中包含申请连麦人员的唯一id,保存此值;
f、观看端发送speak_enter事件;
g、主播端发送给观看端speak_peer_list消息,所述speak_peer_list消息包括用户id、用户角色和用户名称;
h、观看端根据上一步骤所述speak_peer_list消息中的用户列表,得到主播端的用户信息,和主播端开始建立WebRTC的P2P通信;
i、当观看端接收到speak_peer_list消息后,如果十秒内没有接收到流媒体数据,观看端发送hangup_interaction消息到主播端,挂断连麦,并回收相应的连麦资源;
j、观看端主动挂断连麦的时候,观看端发送hangup_interaction消息,主播端返回speak_disconnect消息,表示成功挂断连麦,观看端做相应的清理资源操作,当主播端主动挂断连麦的时候,主播端发送speak_disconnect消息给观看端,观看端接收到speak_disconnect消息后,挂断连麦,并做相应的清理资源的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710749054.1A CN109429108B (zh) | 2017-08-28 | 2017-08-28 | 一种iOS移动端基于Socket.IO和WebRTC的观看端视频连麦方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710749054.1A CN109429108B (zh) | 2017-08-28 | 2017-08-28 | 一种iOS移动端基于Socket.IO和WebRTC的观看端视频连麦方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109429108A CN109429108A (zh) | 2019-03-05 |
CN109429108B true CN109429108B (zh) | 2021-06-29 |
Family
ID=65502439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710749054.1A Active CN109429108B (zh) | 2017-08-28 | 2017-08-28 | 一种iOS移动端基于Socket.IO和WebRTC的观看端视频连麦方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109429108B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111355973B (zh) * | 2020-03-09 | 2021-10-15 | 北京达佳互联信息技术有限公司 | 数据播放方法、装置、电子设备及存储介质 |
CN111479121B (zh) * | 2020-04-08 | 2021-05-25 | 北京智能工场科技有限公司 | 一种基于流媒体服务器的直播方法及系统 |
CN114301880B (zh) * | 2021-12-23 | 2023-05-12 | 聚好看科技股份有限公司 | 三维数据传输方法及电子设备、信令服务器 |
CN116489307B (zh) * | 2023-04-04 | 2023-11-28 | 上海缓存命中科技有限公司 | 网络监控系统、网络监控方法、装置及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106209949A (zh) * | 2015-05-07 | 2016-12-07 | 北京大学 | 基于WebRTC的交互式直播方法及装置 |
CN106453289A (zh) * | 2016-09-29 | 2017-02-22 | 广州市千钧网络科技有限公司 | 一种视频直播的数据传输方法及传输装置 |
CN106506632A (zh) * | 2016-10-27 | 2017-03-15 | 上海幻电信息科技有限公司 | 一种基于html5浏览器的音视频直播方法 |
CN107027048A (zh) * | 2017-05-17 | 2017-08-08 | 广州市千钧网络科技有限公司 | 一种直播连麦及信息展示的方法及装置 |
-
2017
- 2017-08-28 CN CN201710749054.1A patent/CN109429108B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106209949A (zh) * | 2015-05-07 | 2016-12-07 | 北京大学 | 基于WebRTC的交互式直播方法及装置 |
CN106453289A (zh) * | 2016-09-29 | 2017-02-22 | 广州市千钧网络科技有限公司 | 一种视频直播的数据传输方法及传输装置 |
CN106506632A (zh) * | 2016-10-27 | 2017-03-15 | 上海幻电信息科技有限公司 | 一种基于html5浏览器的音视频直播方法 |
CN107027048A (zh) * | 2017-05-17 | 2017-08-08 | 广州市千钧网络科技有限公司 | 一种直播连麦及信息展示的方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于Webrtc和PWA的视频互动直播系统;彭永超等;《电脑编程技巧与维护》;20170118(第02期);第1-2节,第4.2节,第5节,图3-5 * |
Also Published As
Publication number | Publication date |
---|---|
CN109429108A (zh) | 2019-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109429108B (zh) | 一种iOS移动端基于Socket.IO和WebRTC的观看端视频连麦方法 | |
KR100713359B1 (ko) | 제3의 디스플레이를 통한 영상 제공이 가능하도록 하는영상 전화 방법 | |
CN112565234B (zh) | 基于WebRTC的跨网传输系统及方法 | |
WO2011088656A1 (zh) | 一种移动终端实现可视电话三方通话的方法及系统 | |
CN111479121A (zh) | 一种基于流媒体服务器的直播方法及系统 | |
CN105516640A (zh) | 一种视频通讯会话异常的检测方法及系统 | |
KR20060086200A (ko) | 이동 통신 단말기 호 셋업 방법 | |
CN112218388A (zh) | 一种断网重连的方法及装置 | |
US10091255B2 (en) | Local control of additional media session for a packet based call | |
CN106128468B (zh) | 语音通话方法及装置 | |
CN102457494B (zh) | 一种基于sip信令提高监听成功率的方法和装置 | |
CN106658450B (zh) | 一种远程异构网络移动实时通讯方法 | |
JP2016213784A (ja) | リアルタイム映像通信の品質評価方法およびシステム | |
CN104580768A (zh) | 碎片化异步会议系统及其结束会议的方法 | |
CN112311759B (zh) | 一种混合网络下的设备连接切换方法和系统 | |
JP5272702B2 (ja) | 移動網システム及びガイダンスメッセージ提供方法 | |
CN112203040A (zh) | 基于通信会议的铁路应急通信方法及系统 | |
JP5421940B2 (ja) | 呼処理制御装置および呼処理制御方法 | |
CN110769183B (zh) | 基于视联网的视频点播方法、链路建立方法、装置及系统 | |
KR100914598B1 (ko) | Sip와 3g-324m간의 영상 채팅 서비스 방법과이를 위한 변환기 | |
CN108307149B (zh) | 一种视频代理系统及监控方法 | |
JP6673594B1 (ja) | Ip−pbxシステム、通話障害通知方法、通話障害通知装置、ip−pbx装置及び通話障害通知プログラム | |
CN114928749A (zh) | 直播流切换方法、系统及装置 | |
WO2012147248A1 (ja) | 通話連動システム、宅内制御装置、通話連動方法 | |
KR100493734B1 (ko) | 비동기망과 동기망간의 화상전화 연동 시스템 및 방법 |
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 |