rtmp推流 webrtc_WebRTC 研究系列 二、打通webrtc与rtmp

本文探讨了如何将WebRTC的客户端到客户端技术与RTMP的客户端到服务器技术相结合。通过分析不同实现方式,选择了pion/webrtc,并介绍了使用WebSocket进行信令交换,以及在服务器端处理Opus转码为AAC的过程,实现了浏览器无插件的RTMP推流功能。
摘要由CSDN通过智能技术生成

首先我们知道,Rtmp是一种客户端到服务端的技术,Peer to Server。WebRTC是一种客户端到客户端的技术,Peer to Peer。

Rtmp通过一个TCP连接,向服务端发送或接收连接信息,媒体数据。

WebRTC先使用ICE技术连接STUN/TURN,得到自己的连接信息。再绑定音视频设备获取媒体信息,拼装为SDP信令。两个客户端通过任意方式交换信令,建立客户端直接的连接,再使用RTP发送和接收媒体数据。

如果一个服务端实现了WebRTC客户端的能力,那么它也可以被认为是一个Peer,与用户浏览器的WebRTC客户端创建连接,获得客户端推送过来的媒体数据,就完成了Peer to Server的转换。

WebRTC是一个非常非常复杂的协议,如果自己从0开始写起是不现实的。在完成这个工作的时候,我也尝试过其它一些实现,做了一些分析。大体分为如下几种类型。

第一种,将开源项目Chromium内WebRTC的cpp原生实现集成到项目中使用。

比如这个项目:

https://github.com/node-webrtc/node-webrtc

经过分析,pion/webrtc 是目前看起来最适合用在NMSv3中的项目。原因如下:

1. 原生WebRTC虽然有最好的功能实现,但复杂的编译环境,源码整合,API封装,工作量非常繁重,放弃。

2.GStreamer在Linux下有非常普遍的使用率,但它严重依赖大量第三方项目,比如glib,libice等,都存在跨平台编译问题,也存在API使用繁琐的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值