pion/webrtc
GitHub: pion/webrtc
纯 Go 语言实现的 WebRTC API 库,提供完整的音视频通信、数据通道和加密传输能力,无需 CGo 即可跨平台运行。
Stars: 16431 | Forks: 1840
Pion WebRTC
A pure Go implementation of the WebRTC API
### 新版本发布 Pion WebRTC v4.0.0 已发布!请参阅[发行说明](https://github.com/pion/webrtc/wiki/Release-WebRTC@v4.0.0)以了解新功能和重大变更。 如果您暂时无法升级,请查看[标签](https://github.com/pion/webrtc/tags)以获取最新的 `v3` 版本。 我们非常期待您的反馈!请创建 GitHub issues 或加入 [Discord](https://discord.gg/PngbdqpFbt) 以跟进开发进度并与维护者交流。 ### 用法 使用 Pion WebRTC 必须启用 [Go Modules](https://blog.golang.org/using-go-modules)。因此请确保您设置了 `export GO111MODULE=on`,并在导入时明确指定 `/v4`(或更早的版本)。 **[示例应用](examples/README.md)** 包含了人们使用 Pion WebRTC 构建的常见代码示例。 **[example-webrtc-applications](https://github.com/pion/example-webrtc-applications)** 包含了更多使用第三方库的完整功能示例。 **[awesome-pion](https://github.com/pion/awesome-pion)** 包含了使用 Pion 的项目,可作为实际使用案例。 **[GoDoc](https://pkg.go.dev/github.com/pion/webrtc/v4)** 是自动生成的 API 参考文档。我们所有的公共 API 都附有注释。 **[FAQ](https://github.com/pion/webrtc/wiki/FAQ)** 提供了常见问题的解答。如果您有未涵盖的问题,请在 [Discord](https://discord.gg/PngbdqpFbt) 中提问,我们一直都在扩充它。 现在去构建一些了不起的东西吧!这里有一些可以激发您创造力的**点子**: * 将视频文件实时发送到多个浏览器,实现完美同步观影。 * 在嵌入式设备上将网络摄像头画面发送到您的浏览器,无需额外的服务器! * 在两台服务器之间安全地发送数据,无需使用 pub/sub。 * 录制您的摄像头画面并在服务器端进行特效处理。 * 构建一个处理音频/视频并据此做出决策的会议应用程序。 * 远程控制机器人并实时流式传输其摄像头画面。 ### 需要帮助? 查看 [WebRTC for the Curious](https://webrtcforthecurious.com)。这是一本深入探讨 WebRTC 的书,而不仅仅局限于 API。 了解 ICE、SCTP、DTLS、SRTP 的完整细节,以及它们如何协同工作构成 WebRTC 协议栈。如果您正在进行调试,这也是一份极佳的资源。了解行业工具以及如何处理 WebRTC 问题。这本书与供应商无关,不包含任何 Pion 特定的信息。 Pion 在 [Discord](https://discord.gg/PngbdqpFbt) 上有一个活跃的社区。请随时就任何问题寻求帮助,问题不局限于 Pion! 来分享您正在做的有趣项目吧。我们会为您提供支持。 Pion 的维护者之一 [Sean-Der](https://github.com/sean-der) 随时为您提供帮助。可在 [siobud.com/meeting](https://siobud.com/meeting) 预约时间。 他可以讨论关于 Pion 或一般 WebRTC 的问题,请随时就任何事情与他联系! ### 功能特性 #### PeerConnection API * [webrtc-pc](https://w3c.github.io/webrtc-pc/) 和 [webrtc-stats](https://www.w3.org/TR/webrtc-stats/) 的 Go 语言实现 * DataChannels * 发送/接收音频和视频 * 重新协商 * Plan-B 和 Unified Plan * 用于 Pion 特定扩展的 [SettingEngine](https://pkg.go.dev/github.com/pion/webrtc/v4#SettingEngine) #### 连接性 * 完整的 ICE Agent * ICE 重启 * Trickle ICE * STUN * TURN (UDP, TCP, DTLS 和 TLS) * mDNS candidates #### DataChannels * 有序/无序 * 丢包/不丢包 #### 媒体 * 提供直接 RTP/RTCP 访问的 API * Opus, PCM, H264, VP8 和 VP9 打包器 * API 还允许开发者传入自定义的打包器 * 提供 IVF, Ogg, H264 和 Matroska 支持,便于发送和保存 * [getUserMedia](https://github.com/pion/mediadevices) 实现 (需要 Cgo) * 易于与 x264, libvpx, GStreamer 和 ffmpeg 集成。 * [Simulcast](https://github.com/pion/webrtc/tree/main/examples/simulcast) * [SVC](https://github.com/pion/rtp/blob/main/codecs/vp9_packet.go#L138) * [NACK](https://github.com/pion/interceptor/pull/4) * [Sender/Receiver Reports](https://github.com/pion/interceptor/tree/main/pkg/report) * [Transport Wide Congestion Control Feedback](https://github.com/pion/interceptor/tree/main/pkg/twcc) * [Bandwidth Estimation](https://github.com/pion/webrtc/tree/main/examples/bandwidth-estimation-from-disk) #### 安全性 * DTLS v1.2 使用 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 和 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA * SRTP 使用 SRTP_AEAD_AES_256_GCM 和 SRTP_AES128_CM_HMAC_SHA1_80 * GCM 套件支持硬件加速 #### 纯 Go 实现 * 不使用 Cgo * 广泛的平台支持 * Windows, macOS, Linux, FreeBSD * iOS, Android * [WASM](https://github.com/pion/webrtc/wiki/WebAssembly-Development-and-Testing) 参见[示例](examples/README.md#webassembly) * 386, amd64, arm, mips, ppc64 * 易于构建 *性能数据在 Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz 上生成* * **构建 examples/play-from-disk 耗时** - 0.66s user 0.20s system 306% cpu 0.279 total * **运行整个测试套件耗时** - 25.60s user 9.40s system 45% cpu 1:16.69 total * [提供](https://github.com/pion/rtsp-bench)了用于测量性能的工具 ### 路线图 该库正处于积极开发中,请参阅[路线图](https://github.com/pion/webrtc/issues/9)以跟踪我们的主要里程碑。 我们还维护着一个 [Big Ideas](https://github.com/pion/webrtc/wiki/Big-Ideas) 列表,这些是我们想要构建但目前还没有明确计划或资源的项目。 如果您想参与其中,这是一个很好的起点!我们也非常乐意听取您的想法!即使您无法亲自实现,它也可能会启发他人。 ### 贡献 查看[贡献指南](https://github.com/pion/webrtc/wiki/Contributing),加入这群让这个项目成为可能的优秀贡献者 ### 许可证 MIT License - 详见 [LICENSE](LICENSE)
标签:API实现, Go语言, Pion, WebRTC, 后端开发, 实时互动, 实时音视频, 开源库, 搜索引擎爬虫, 数据传输, 日志审计, 流媒体, 点对点通信, 程序破解, 纯Go实现, 网络通信, 视频会议, 音视频处理, 音视频流