go 使用webrtc
| 名称 | 链接 | 备注 |
|---|---|---|
| Pion WebRTC | https://github.com/pion/webrtc | |
| https://pkg.go.dev/github.com/pion/webrtc/v4# | ||
| pion官网 | https://pion.ly/ |

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是否可用
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:19302webrtc 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(Web Real-Time Communication)是一种允许网页浏览器进行实时通信(RTC)的技术。它包括了音频、视频的处理与传输,以及数据共享等功能。在直播场景中,WebRTC可以用来实现低延迟的音视频传输,即所谓的“拉流”过程。以下是使用WebRTC进行拉流的基本步骤:
建立连接
使用信令服务器来交换WebRTC连接所需的SDP(Session Description Protocol)和ICE(Interactive Connectivity Establishment)候选信息。
通常通过WebSocket或其他HTTP服务作为信令通道。
媒体采集
在发送端(如主播端),通过navigator.mediaDevices.getUserMedia获取本地摄像头和麦克风的访问权限,并创建一个MediaStream对象。
创建RTCPeerConnection
创建
RTCPeerConnection实例,用于管理WebRTC连接。配置RTCPeerConnection的参数,如ICE服务器配置等。
创建Offer并交换SDP
调用
RTCPeerConnection.createOffer()方法创建一个SDP Offer描述,然后通过信令服务器发送给接收端。接收端收到Offer后,调用RTCPeerConnection.
setRemoteDescription()设置远程描述。创建Answer并交换SDP
接收端创建Answer描述并通过信令返回给发送端。
发送端设置远程描述为接收到的
Answer。ICE Candidate交换
在SDP交换之后,双方继续收集ICE候选地址并通过信令通道相互告知。
每当有新的ICE候选产生时,就通过信令发送给对方。
建立媒体传输路径
当ICE完成连接检查后,媒体流就可以开始传输了。
发送端将MediaStream添加到RTCPeerConnection上,这样媒体数据就会自动通过建立好的连接传输到接收端。
播放媒体流
接收端通过RTCPeerConnection获取到媒体流后,可以将其附加到HTML的
<video>或<audio>元素上进行播放。结束会话
当不再需要传输媒体流时,可以通过关闭
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)