基于WEBRTC的免插件点到点视频分享
WebRTC
WebRTC 是基于浏览器的实时通信协议(Real-Time Communications),通过WebRTC,可以在浏览器中直接进行点到点视频聊天和数据通信。WebRTC目前尚在协议开发中,但是已经在Chrome stable版和Firefox’s Nightly中实现,并且 能够互相通信了。通过WebRTC,浏览器将不仅限于和服务器通行,它将能够直接在浏览器间传输数据。通过 STUN 协议,即使有防火墙也没问题。
DEMO: https://webrtc-experiment.appspot.com/ (需翻墙)
但是,WebRTC作为发布不到一年的协议,还存在非常多的问题:
- 文档少
- 协议繁琐,实现与W3C标准有出入
- 实现不完全,Chrome下的DateChannel不支持可靠传输,只能传text,还有长度限制
- 浏览器依赖
但是相信随着标准慢慢完善,支持的实现变多,这样点到点的通信方式一定能给Web带来更多的可能。
入门建议:参照 W3C标准 文档,对比 https://apprtc.appspot.com/ 实现自行尝试(apprtc是封装最浅的实现版本)。另外需要指出的是,HTML5 Rocks 的文档是错误的。
WebRTC-video
GitHub: https://github.com/binux/webrtc_video
DEMO: http://webrtc.binux.me/
这是一个用WebRTC的DataChannel特性实现的,免插件,基于浏览器P2P文件/视频分享DEMO。
只要打开浏览器就能使用,每个访问者都是分享节点:
- 免插件,仅依赖浏览器随时随地地文件分享
- HTML5视频边下边播
- Peer-to-Peer通信,像BitTorrent一样在多用户间加速分享,传输
- 支持额外的HTTP,WebSocket节点,保证内容随时可用,并能保持P2P加速的特性
- 通信数据量统计,等等。。。
注:
- 视频边下边播需要MP4、webm、ogg格式
- HTTP节点需要CORS来源允许
- WebSocket节点,文件置于
project_path/data/
下,文件名只能包含英文和数字,通过ws://host:port/file/filename
添加
因为WebRTC协议还非常不完善,这个项目更多的是demo性质的,但是这个demo展现了WEB+P2P的更多可能。