HiveCDN Overview
HiveCDN works as a SaaS (Software as a Service) product. Thus, a straightforward client integration is sufficient for a broadcaster to begin using HiveCDN. Integrating HiveCDN to your client is as simple as adding two lines of JavaScript:
//add hivecdn script to your page
<script>
window.hivecdn=window.hivecdn||function(){(hivecdn.q=hivecdn.q||[]).push(arguments)};hivecdn.l=+new Date;
hivecdn("settings",{siteId:'YOUR_SITE_ID'}) // Register your siteID
</script>
<script async src='https://static.hivecdn.com/hivecdn.production.min.js'></script>
hivecdn("registerPlayer",PLAYER_INSTANCE, "bitmovin");
HiveCDN Network
The HiveCDN network has three types components:
- Users watching video content. The HiveCDN clients maintain connections to other peers as well as any HTTP CDNs the broadcaster is using to download video chunks.
- HiveCDN servers. Our servers control the peer-to-peer distribution of video chunks among viewers.
- Conventional HTTP CDNs. When a required video segment is not available to download from other peers in a timely manner, the clients acquire the segments from your traditional CDN.

Client Integration
HiveCDN supports all of the most popular players, including:
For the best performance, we recommend that your playlists should be longer than 45 seconds and contain more than 15 segments.
User Experience
Improved user experience is the primary focus for HiveCDN. We use state-of-the-art scheduling algorithms to independently determine the optimal source for each video segment. While the details of real-time scheduling are beyond the scope of this documentation, we can offer an intuitive explanation as follows:

When a new user begins watching a video, the first few segments are loaded from the HTTP CDN. For the other segments, we define a priority score based on how much time the user has until the playback point reaches that segment. Then, our matching algorithms find the best source for each segment based on the priority score and many other factors including the other peers' proximity, latency and bandwidth. HiveCDN downloads from another peer only when doing so would improve total download throughput and user experience. Additionally, if the conventional HTTP CDN servers are not able to supply the segments in time because of network congestion, downloading from nearby peers decreases rebuffering incidents.
Adaptive Bit Rate
HiveCDN fully supports Adaptive Bit Rate delivery. While a peer can move between different bit rate grades as normally, peers at each level only transfer between each other.
Security
HiveCDN supports all Common Encryption based DRM schemes. It does not modify the contents of your videos: it just delivers encrypted file segments. This means that your existing content protection systems remain in use without any change. When delivering videos to the clients, WebRTC uses TLS encryption. Our servers also talk to the clients over encrypted channels.
User authorization: Existing client-server authorization request flows (tokens, keys, cookies, etc.) do not go through HiveCDN and remain unaffected. HiveCDN only starts downloading video chunks after the user is authorized.
Client Platform Support
Web Browsers
HiveCDN uses the WebRTC standard for P2P connections. WebRTC is natively supported in Google Chrome, Mozilla Firefox, Microsoft Edge and Opera browsers. Apple is currently working to add WebRTC support in Safari. Other browsers also work with HiveCDN, but they cannot participate in P2P transfers, and only download from HTTP CDN.
Mobile Browsers
Opera,Chrome and Firefox for Android supported by Hivecdn with P2P but Browsers on IOS currently not. (WebRTC disabled on mobile internet network)
Mobile
Since mobile uploads are typically metered, HiveCDN does not perform P2P uploads from mobile connections.
Demo Script
- Fill form here to register your domain if try different from "localhost".
- Open your same video player page as two tab in browser with different profile.
- Run following script for each page
- Check "Console Panel" at top-left, for metrics
<script>
window.hivecdn=window.hivecdn||function(){(hivecdn.q=hivecdn.q||[]).push(arguments)};hivecdn.l=+new Date;hivecdn("demo","start");var dd=document;var sc=dd.createElement('script');sc.src='https://static.hivecdn.com/hivecdn.production.min.js';sc.async=true;dd.head.appendChild(sc);
</script>