Skip to content

go 使用webrtc

名称链接备注
Pion WebRTChttps://github.com/pion/webrtc
https://pkg.go.dev/github.com/pion/webrtc/v4#
pion官网https://pion.ly/

img

  • LICENSE: 项目的许可证文件。

  • README.md: 项目的基本介绍和使用说明。

  • buffer.go: 处理 STUN 消息的缓冲区相关功能。

  • client.go: 实现 STUN 客户端功能。

  • client_test.go: 客户端功能的测试文件。

  • cmd/

    : 包含项目的命令行工具。

    • benchmark/: 性能测试工具。
    • request/: 发送 STUN 请求的工具。
    • server/: STUN 服务器实现。
  • doc.go: 项目的文档注释。

  • example_test.go: 示例代码。

  • fingerprint.go: 处理 STUN 消息的指纹功能。

  • message.go: STUN 消息的定义和处理。

  • method.go: STUN 方法的定义。

  • ``: STUN 服务器的实现。

  • transactionid.go: 事务 ID 的生成和处理。

  • types.go: 定义 STUN 消息的类型。

  • util.go: 一些辅助函数。

Pion STUN 项目的启动文件位于 cmd/ 目录下:

  • cmd/server/main.go: 启动 STUN 服务器的入口文件。
  • cmd/request/main.go: 发送 STUN 请求的入口文件。
  • cmd/benchmark/main.go: 性能测试的入口文件。

测试stun是否可用

Document (metered.ca)

json
stun.l.google.com:19302
stun1.l.google.com:19302
stun2.l.google.com:19302
stun3.l.google.com:19302
stun4.l.google.com:19302
stun01.sipphone.com
stun.ekiga.net
stun.fwdnet.net
stun.ideasip.com
stun.iptel.org
stun.rixtelecom.se
stun.schlund.de
stunserver.org
stun.softjoys.com
stun.voiparound.com
stun.voipbuster.com
stun.voipstunt.com
stun.voxgratia.org
stun.xten.com
stun.qq.com:3478
stun.chat.bilibili.com:3478
stun.cloudflare.com:3478
stun.l.google.com:19302

利用STUN协议获取公网IP – 景明 (zjm.im)

webrtc package - github.com/pion/webrtc/v4 - Go Packages

go2coding/webrtc_start: webrtc demo for beginer (github.com)

webrtc入门:5.onIceCandidate后通过websockets传递ice建立视频通话-CSDN博客

pion实现录制WebRTC流_webrtc_consice code-K8S/Kubernetes (csdn.net)

关于webRTC的学习记录因为公司把这个预研任务交给我才开始学习的webRTC,在此之前我对它一无所知,中间的艰辛过程就 - 掘金 (juejin.cn)

https://blog.csdn.net/leytton/article/details/76820765

源码阅读WebRTC学习笔记七 pion/webrtc - 知乎 (zhihu.com)

基于 pion 开发 webrtc sfu 服务器简介 webrtc webrtc: 是 Web Real-Time C - 掘金 (juejin.cn)

当WebRTC Pion示例无音频流的时候,如何添加音频模块并通过浏览器播放?_pion webrtc教程-CSDN博客

https://blog.csdn.net/weixin_40425640/article/details/127085861

WebRTC | 信令服务器-CSDN博客

WebRTC(Web Real-Time Communication)是一种允许网页浏览器进行实时通信(RTC)的技术。它包括了音频、视频的处理与传输,以及数据共享等功能。在直播场景中,WebRTC可以用来实现低延迟的音视频传输,即所谓的“拉流”过程。以下是使用WebRTC进行拉流的基本步骤:

  1. 建立连接

    使用信令服务器来交换WebRTC连接所需的SDP(Session Description Protocol)和ICE(Interactive Connectivity Establishment)候选信息。

    通常通过WebSocket或其他HTTP服务作为信令通道。

  2. 媒体采集

    在发送端(如主播端),通过navigator.mediaDevices.getUserMedia获取本地摄像头和麦克风的访问权限,并创建一个MediaStream对象。

  3. 创建RTCPeerConnection

    创建RTCPeerConnection实例,用于管理WebRTC连接。

    配置RTCPeerConnection的参数,如ICE服务器配置等。

  4. 创建Offer并交换SDP

    调用RTCPeerConnection.createOffer()方法创建一个SDP Offer描述,然后通过信令服务器发送给接收端。

    接收端收到Offer后,调用RTCPeerConnection.setRemoteDescription()设置远程描述。

  5. 创建Answer并交换SDP

    接收端创建Answer描述并通过信令返回给发送端。

    发送端设置远程描述为接收到的Answer

  6. ICE Candidate交换

    在SDP交换之后,双方继续收集ICE候选地址并通过信令通道相互告知。

    每当有新的ICE候选产生时,就通过信令发送给对方。

    建立媒体传输路径

  7. 当ICE完成连接检查后,媒体流就可以开始传输了。

    发送端将MediaStream添加到RTCPeerConnection上,这样媒体数据就会自动通过建立好的连接传输到接收端。

  8. 播放媒体流

    接收端通过RTCPeerConnection获取到媒体流后,可以将其附加到HTML的<video><audio>元素上进行播放。

  9. 结束会话

    当不再需要传输媒体流时,可以通过关闭RTCPeerConnection来结束会话。

【Go】-Websocket的使用_如何使用websocket-CSDN博客

Golang流媒体实战之一:体验开源项目lal-腾讯云开发者社区-腾讯云 (tencent.com)

[q191201771/lal: 🔥 Golang audio/video live streaming lib/client/server. support RTMP, RTSP(RTP/RTCP), HLS, HTTPS]/WebSocket-FLV/TS, GB28181, H264/H265/AAC/G711/OPUS, relay, cluster, record, HTTP Notify/API/UI. 直播 (github.com)