pion/webrtc

GitHub: pion/webrtc

纯 Go 语言实现的 WebRTC API 库,提供完整的音视频通信、数据通道和加密传输能力,无需 CGo 即可跨平台运行。

Stars: 16431 | Forks: 1840

Pion WebRTC
Pion WebRTC

A pure Go implementation of the WebRTC API

Pion WebRTC Sourcegraph Widget join us on Discord Follow us on Bluesky Twitter Widget
GitHub Workflow Status Go Reference Coverage Status Go Report Card License: MIT


### 新版本发布 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实现, 网络通信, 视频会议, 音视频处理, 音视频流