P2P媒体加载器
P2P媒体加载器是一个开源JavaScript库,利用现代网络浏览器的功能,如HTML5视频和WebRTC,实现通过点对点(P2P)连接的媒体传输。它可以无缝集成多种流行的HTML5视频播放器,完全无需浏览器插件或附加组件即可运行。您可以通过演示体验其实际效果。
通过利用P2P技术,它大大减少了对传统内容分发网络(CDN)资源的依赖,降低了成本,并提高了向更大规模受众传输媒体流的能力。
该库能够创建巨大的P2P网状网络,也称为点对点内容分发网络(P2P CDN)、点对点电视(P2PTV)和企业内容分发网络(eCDN),允许同时观看相同直播或点播(VOD)流的用户通过HLS或MPEG-DASH协议共享流量。
相关软件
- wt-tracker:使用µWebSockets.js的高性能Node.js WebTorrent追踪器。
- Aquatic:用Rust编写的高性能BitTorrent追踪器。
- OpenWebtorrent Tracker:使用µWebSockets的快速简单的C++编写的webtorrent追踪器。
- bittorrent-tracker:为Node.js和Web实现的简单、强大的BitTorrent追踪器(客户端和服务器)。
文档和重要链接
主要特性
- 支持通过HLS或MPEG-DASH协议的直播和点播流
- 支持多种HTML5视频播放器和引擎:
- 引擎:Hls.js、Shaka Player
- 视频播放器:Vidstack、Clappr、MediaElement、Plyr、DPlayer、OpenPlayerJS、PlayerJS等支持Hls.js或Shaka视频引擎的播放器。这些播放器可以通过自定义集成与库API集成。
- 支持HLS和MPEG-DASH协议的自适应比特率流
- 简单使用场景无需服务器端软件。默认情况下,P2P媒体加载器使用公开可用的服务器:
- WebTorrent追踪器 - https://tracker.novage.com.ua/、https://tracker.webtorrent.dev/、https://openwebtorrent.com/
- STUN服务器 - 公共STUN服务器列表
P2P网络的关键组成部分
P2P网络的所有组件都是免费和开源的。
P2P媒体加载器的Web浏览器要求是:
- 支持WebRTC数据通道以在对等点之间交换数据
- Hls.js和Shaka Player引擎需要媒体源扩展来进行媒体播放
STUN服务器被WebRTC用来收集ICE候选项。 在公共STUN服务器列表上有许多可用的公共服务器。
兼容的WebTorrent追踪器用于WebRTC信令和创建下载相同媒体流的对等点群。 有几个可用的公共追踪器:https://tracker.novage.com.ua/、https://tracker.webtorrent.dev/、https://openwebtorrent.com/。
可以使用开源实现运行个人WebTorrent追踪器:wt-tracker、Aquatic、OpenWebtorrent Tracker、bittorrent-tracker。
P2P媒体加载器默认配置为使用公共STUN和WebTorrent服务器。这意味着对于简单的使用场景,不需要运行任何服务器端软件就能让P2P网络正常运作。
工作原理
Web浏览器运行一个集成了P2P媒体加载器库的视频播放器。库的每个实例被称为一个对等点,许多对等点共同组成P2P网络。
P2P媒体加载器最初通过HTTP(S)从源服务器或CDN下载媒体片段,以快速开始媒体播放。如果没有可用的对等点,它会继续通过HTTP(S)下载片段,类似于传统的媒体流。
随后,P2P媒体加载器将媒体流详情和连接信息(如ICE候选项)传输给WebTorrent追踪器。这些追踪器提供了一个正在访问相同媒体流的其他对等点列表。
P2P媒体加载器然后与这些对等点连接,下载额外的媒体片段,同时共享它已经下载的片段。
P2P群中的随机对等点定期通过HTTP(S)下载新片段,并通过P2P将它们分发给其他对等点。
Web浏览器支持
P2P媒体加载器所需的浏览器功能
这些功能在最流行的浏览器中得到全面支持
- Chrome
- Firefox
- macOS Safari
- iPadOS Safari(iPad)
- iOS Safari(iPhone,iOS 17.1+版本)
- Edge