Go Modules are mandatory for using Pion WebRTC. So make sure you set export GO111MODULE=on, and explicitly specify /v2 or /v3 when importing.
example applications contains code samples of common things people build with Pion WebRTC.
example-webrtc-applications contains more full featured examples that use 3rd party libraries.
awesome-pion contains projects that have used Pion, and serve as real world examples of usage.
GoDoc is an auto generated API reference. All our Public APIs are commented.
FAQ has answers to common questions. If you have a question not covered please ask in Slack we are always looking to expand it.
Now go build something awesome! Here are some ideas to get your creative juices flowing:
Send a video file to multiple browser in real time for perfectly synchronized movie watching. Send a webcam on an embedded device to your browser with no additional server required! Securely send data between two servers, without using pub/sub. Record your webcam and do special effects server side. Build a conferencing application that processes audio/video and make decisions off of it. Remotely control a robots and stream its cameras in realtime.
Go implementation of webrtc-pc and webrtc-stats
DataChannels
Send/Receive audio and video
Renegotiation 重连??
Plan-B and Unified Plan
SettingEngine for Pion specific extensions
Full ICE Agent
ICE Restart
Trickle ICE ??
STUN
TURN (UDP, TCP, DTLS and TLS)
mDNS candidates
Ordered/Unordered 有序/无序
Lossy/Lossless 有损/无损
API with direct RTP/RTCP access
Opus, PCM, H264, VP8 and VP9 packetizer
API also allows developer to pass their own packetizer
IVF, Ogg, H264 and Matroska provided for easy sending and saving
getUserMedia implementation (Requires Cgo)
Easy integration with x264, libvpx, GStreamer and ffmpeg.
Simulcast SFU的概念
SVC SFU的概念
NACK 断线重连??
Full loss recovery and congestion control is not complete, see pion/interceptor for progress
See ion for how an implementor can do it today
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 and TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA for DTLS v1.2
SRTP_AEAD_AES_256_GCM and SRTP_AES128_CM_HMAC_SHA1_80 for SRTP
Hardware acceleration available for GCM suites
【学习地址】:
FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【文章福利】:免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~
Run echo $BROWSER_SDP | insertable-streams
个人推测,有可能是Go的环境变量没配置好,有点麻烦……
Paste the SessionDescription into a file.
Run
insertable-streams < my_file
使用power shell不行
使用Cmd是可以的
将生成的SDP复制到Golang base64 Session Description即可连接
ION的来由和发展https://zhuanlan.zhihu.com/p/206492402 ION-SFU整体流程https://zhuanlan.zhihu.com/p/258559751
https://github.com/63isOK/pion-log
说明:
粉底是第三方库,天蓝底是pion的库
红色框中的randutil/testify/logging,是基础库,很多库都依赖这3个库
分析:
核心都是以x/net库为中心,一步步扩展
直接依赖x/net的有4个库,transport/mdns/ice/dtls
其中mdns/ice/dtls都依赖transport
ice依赖dtls/mdns
总的来说.ice依赖mdns/dtls,她们都依赖transport
依赖x/net的库,要么使用了网络连接,要么使用了网络工具库的功能
transport作为传输对象的封装,有以下库使用
quic, quic协议的实现
dtls, udp 安全传输协议的实现
srtp, 安全rtp传输协议的实现
ice, p2p连接解决方案的实现
turn, p2p中继协议的实现
mdns, 多播dns协议的实现
datachannel/sctp, webrtc数据传输通道的实现
transport作为传输对象的封装,屏蔽了底层网络传输细节
让webrtc上层诸多传输协议复用,大大提高了效率
按webrtc功能分
datachannel/sctp 对应webrtc datachannel
srtp/rtp/rtcp 对应webrtc媒体数据的传输
ice 对应p2p连通性解决方案
dlts 对应udp安全传输
源码阅读顺序:
基础公共库
randutil
testify
logging
基础库
x/net
transport
dtls
p2p
stun/turn
ice
rtp
rtp/rtcp/srtp
interceptor
sdp
其他功能
mdns
datachannel/sctp
agoutil
quic