Pion WebRTC
WebRTC API的纯Go语言实现
使用方法
使用Pion WebRTC必须采用Go Modules。因此请确保设置了export GO111MODULE=on
,并在导入时明确指定/v4
(或更早版本)。
示例应用 包含了人们使用Pion WebRTC构建的常见功能的代码示例。
WebRTC应用示例 包含了使用第三方库的更全面的示例。
awesome-pion 包含了使用Pion的项目,可作为实际使用的示例。
GoDoc 是自动生成的API参考。我们所有的公共API都有注释。
常见问题 回答了常见问题。如果您有未涵盖的问题,请在Slack上提问,我们一直在寻求扩展它。
现在开始构建一些令人惊叹的东西吧!以下是一些想法,激发你的创意:
- 将视频文件实时发送到多个浏览器,实现完美同步的电影观看体验。
- 将嵌入式设备上的网络摄像头发送到浏览器,无需额外服务器!
- 在两台服务器之间安全地发送数据,无需使用发布/订阅。
- 录制网络摄像头并在服务器端进行特效处理。
- 构建一个会议应用程序,处理音频/视频并根据此做出决策。
- 远程控制机器人并实时传输其摄像头画面。
想要了解更多关于WebRTC的知识吗?
加入我们的办公时间。来闲聊、提问、获取调试帮助,并了解使用WebRTC构建的酷炫项目。我们还在每次会议开始时进行基本的项目规划。
查看WebRTC for the Curious。这是一本深入讲解WebRTC的书籍,不仅仅涉及API。 深入了解ICE、SCTP、DTLS、SRTP的全部细节,以及它们如何协同工作组成WebRTC堆栈。
如果你正在尝试调试,这也是一个很好的资源。学习相关工具和如何处理WebRTC问题。
这本书是与供应商无关的,不会包含任何Pion特定的信息。
特性
PeerConnection API
- webrtc-pc和webrtc-stats的Go语言实现
- 数据通道
- 发送/接收音频和视频
- 重新协商
- Plan-B和Unified Plan
- 用于Pion特定扩展的SettingEngine
连接性
- 完整的ICE代理
- ICE重启
- 渐进式ICE
- STUN
- TURN(UDP、TCP、DTLS和TLS)
- mDNS候选者
数据通道
- 有序/无序
- 有损/无损
媒体
- 直接访问RTP/RTCP的API
- Opus、PCM、H264、VP8和VP9打包器
- API还允许开发者传入自己的打包器
- 提供IVF、Ogg、H264和Matroska便于发送和保存
- getUserMedia实现(需要Cgo)
- 易于与x264、libvpx、GStreamer和ffmpeg集成
- 模拟广播
- SVC
- NACK
- 发送方/接收方报告
- 传输宽度拥塞控制反馈
- 带宽估算
安全性
- 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
- 广泛的平台支持
- 易于构建 数据基于Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz生成
- 构建examples/play-from-disk的时间 - 用户0.66秒,系统0.20秒,CPU 306%,总计0.279秒
- 运行整个测试套件的时间 - 用户25.60秒,系统9.40秒,CPU 45%,总计1:16.69
- 提供性能测量工具
路线图
该库正在积极开发中,请参考路线图以跟踪我们的主要里程碑。 我们还维护了一个大创意列表,这些是我们想要构建但尚未有明确计划或资源的项目。 如果你想参与进来,这是一个很好的起点!我们也很乐意听到你的想法!即使你无法自己实现,它也可能会启发他人。
赞助
Pion的拥塞控制和带宽估算工作得到了User-Operated Internet基金的资助,该基金由NLnet建立,并得到了PKT社区/The Network Steward和Technology Commons Trust基金会的财务支持。
社区
Pion在Slack上有一个活跃的社区。
关注Pion Twitter以获取项目更新和重要的WebRTC新闻。
我们一直在寻求支持您的项目。如果您有任何需要构建的内容,请随时联系我们! 如果您需要商业支持或不想使用公共方法,可以通过team@pion.ly联系我们。
贡献
查看贡献wiki,加入这个让项目成为可能的优秀人群。
许可证
MIT许可证 - 完整文本请参见LICENSE