webrtc学习----前端推流拉流,局域网socket版,一对多

提示:局域网socket版,一对多

前言

‌‌‌‌‌WebRTC(Web Real-Time Communication)‌是一种实时通讯技术,允许网络应用或站点在不借助中间媒介的情况下,建立浏览器之间的点对点(Peer-to-Peer)连接,实现视频流、音频流或其他任意数据的传输。WebRTC的核心功能包括音视频的采集、编解码、网络传输和显示等‌

WebRTC的技术特点
‌1、实时通信‌:WebRTC专注于实时通信,包括音频、视频和其他数据传输‌。
‌2、点对点通信‌:WebRTC支持点对点通信,即两个浏览器之间直接建立连接,无需通过中间服务器‌。
‌3、多媒体引擎‌:WebRTC包含一个多媒体引擎,处理音频和视频流,并提供丰富的API和协议‌。
4‌、NAT穿越‌:WebRTC提供机制,使得在NAT(Network Address Translation)和防火墙等网络设备背后进行通信更为容易‌。
‌5、TURN服务器‌:当P2P连接无法建立时,WebRTC会利用TURN服务器进行数据中转,确保通信的稳定性‌

一、教程

webrtc文档

二、webrtc工作流程

// 推流拉流过程
/**
  * 推流端获取视频stream
  * 推流端生成offer  
  * 推流端通过offer设置推流LocalDescription
  * 推流端发送offer给(拉)流端
  * (拉)流端接收offer
  * (拉)流端通过offer设置(拉)流端RemoteDescription
  * (拉)流端生成answer
  * (拉)流端通过answer设置(拉)流端LocalDescription
  * (拉)流端发送answer给推流端
  * 推流端接收answer设置推流端RemoteDescription
  * 推流端发送candidate(video,audio各一次)
  * (拉)流端接收candidate
  * (拉)流端发送candidate(video,audio各一次)
  * 推流端接收candidate
  * **/

三、推流端

一个拉流RTCPeerConnection,对应一个推流RTCPeerConnection
X 个拉流RTCPeerConnection,对应X 个推流RTCPeerConnection

push.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>推流</title>
</head>
<body>
  <video id="webrtcVideo" autoplay></video>
  <script>
    const video = document.getElementById('webrtcVideo');
    // webscoket
    const ws = new WebSocket('ws://127.0.0.1:1990'); // 可换成局域网ip地址
    let videoStream;
    // 一个拉流RTCPeerConnection对应一个推流RTCPeerConnection,xx个拉流RTCPeerConnection,对应xx个推流RTCPeerConnection
    const pushPool = {
   };
    // rtc connection
    let pushRtcCon;
    // 打开摄像头,video标签播放视频流
    const getStream = async () => {
   
      if(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)console.log('不支持:getUserMedia');
      const stream = await navigator.mediaDevices.getUserMedia({
   video:true});
      video.srcObject = stream;
      videoStream = stream;
    }
    getStream();
    // 开始推流
    const startPush = (pullId) => {
   
      if(!pushPool[pullId])pushPool[pullId] = pushRtcCon = new RTCPeerConnection();
      // rtc connection 添加track
      videoStream.getVideoTracks().forEach(track => {
   
        pushRtcCon.addTrack(track,videoStream);
      });
      // 监听icecandidate
      pushRtcCon.onicecandidate 
### 如何配置 OBS 使用 WebRTC 进行 #### 安装 OBS Studio 为了确保能够使用 WebRTC 功能,建议安装最新本的 OBS Studio (>= 30.0),可以从官方下载页面获取适用于 Windows 的稳定软件[^2]。 #### 启用 WebRTC 插件支持 确认已启用必要的插件来支持 WebRTC 协议。通常情况下,默认安装会包含这些组件,但如果遇到任何问题,则可能需要单独安装或更新相关插件[^3]。 #### 添加 WebRTC 输入源 1. 打开 OBS 并进入 **Sources** 面板。 2. 点击加号按钮 (+) 来添加新的输入源。 3. 选择 `Media Source` 或者其他适合用于接收网络视频类型的选项。 4. 对于某些特定场景下的应用,也可以考虑使用第三方开发的支持 WebRTC 的自定义浏览器源(Browser Source),通过加载指定 URL 地址实现对接远程媒体服务。 #### 配置 SRS WebRTC 地址 对于想要连接至基于 Simple-RTMP-Server(SRS) 构建的服务端而言,在完成上述基本设置之后还需要进一步调整 OBS 中的相关参数: - 如果服务器已经按照说明文档正常运行并监听了默认端口,则可以直接在 OBS 的设置里填入形如 `webrtc://<your_server_ip>:8000/app?stream=<stream_name>` 的 URL 形式的路径[^1]。 请注意实际部署环境中应当替换 `<your_server_ip>`, `<app>` 及 `<stream_name>` 成对应的真实值。 ```bash # 示例命令启动SRS RTC模式 ./objs/srs -c conf/rtc.conf ``` 此段脚本展示了如何依据给定配置文件启动具备 WebRTC 能力的 SRS 实例[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值