1 Star 5 Fork 58

m114 / hlsjs-p2p-engine

forked from cdnbye / hlsjs-p2p-engine 
Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README
MIT

cdnbye logo

Save your bandwidth using WebRTC.

npm jsdelivr size License

中文

This JS library implements WebRTC datachannel to scale live/vod video streaming by peer-to-peer network using bittorrent-like protocol. The forming peer network can be layed over other CDNs or on top of the origin server. Powered by hls.js, it can play HLS on any platform with many popular HTML5 players such as video.js, JWPlayer and Flowplayer.

This library is a part of CDNBye project which attempts to deliver high quality video streams, decreasing the number of requests to CDN servers, reducing the cost of transmission and enhancing system’s scalability. As the name suggests, CDNBye will help you offload bandwidth from expensive traditional CDNs,while also maximizing a user’s viewing experience.

Playground

Click me!

Getting Started

Quick Start Demo

Put the quick-start.html in your web page, run it. Wait for a few seconds,then open the same page from another browser. Now you have a direct P2P connection between two browsers without plugin! The first web peer will serve as a seed, if no one else in the same channel.

Integrate to Your Hls.js Project

Simply replace the hls.js script tag like:

<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>

with

<script src="https://cdn.jsdelivr.net/npm/cdnbye@latest"></script>

That's it!

Browser Support

WebRTC has already been incorporated into the HTML5 standard and it is broadly deployed in modern browsers. The compatibility of CDNBye depends on the browser support of WebRTC and Hls.js. Please note that iOS Safari "Mobile" does not support the MediaSource API.

Compatibility Chrome Firefox Mac Safari iOS Safari Opera IE Edge
WebRTC Yes Yes Yes Yes Yes No No
Hls.js Yes Yes Yes No Yes Yes Yes
CDNBye Yes Yes Yes No Yes No No

Installation

Pre-built Script

Include the latest version bundled with hls.js(recommended):

<script src="https://cdn.jsdelivr.net/npm/cdnbye@latest"></script>

Or include the latest version without hls.js:

<script src="https://cdn.jsdelivr.net/npm/cdnbye@latest/dist/hlsjs-p2p-engine.min.js"></script>

Via NPM

cd yourProject && npm install cdnbye --save

In your application import/require the package you want to use as the following examples:

import Hls from 'cdnbye';   // the package with hls.js

Or

import Hls from 'hls.js';     // please run "npm install --save hls.js" first
import P2PEngine from 'cdnbye/dist/hlsjs-p2p-engine';   // the package without hls.js

Usage

Bundle

Add p2pConfig as a property of hlsjsConfig, then Create hls.js instance passing hlsjsConfig as constructor param.

var hlsjsConfig = {
    debug: true,
    // Other hlsjsConfig options provided by hls.js
    p2pConfig: {
        logLevel: 'debug',
        // Other p2pConfig options if applicable
    }
};
// Hls constructor is overriden by included bundle
var hls = new Hls(hlsjsConfig);
// Use `hls` just like the usual hls.js ...

Engine(the library without hls.js)

Create hls.js instance passsing hlsjsConfig as param. Create P2PEngine instance passing hls.js instance and p2pConfig as params. Call hls.js loadSource and attachMedia methods.

var hlsjsConfig = {
    maxBufferSize: 0,       // Highly recommended setting
    maxBufferLength: 30,    // Highly recommended setting
    liveSyncDuration: 30    // Highly recommended setting
};

var p2pConfig = {
    logLevel: 'debug',
    // Other p2pConfig options if applicable
};

var hls = new Hls(hlsjsConfig);
var p2pEngine = new P2PEngine(hls, p2pConfig);        // Key step

// Use `hls` just like your usual hls.js…
hls.loadSource(contentUrl);
hls.attachMedia(video);
hls.on(Hls.Events.MANIFEST_PARSED,function() {
    video.play();
});

API and Configuration

See API.md

Signaling Server

Build and deploy your own signaling server

They are using CDNBye

Your website here – Send a pull request with your logo and URL!

How It Works

See design.md

FAQ

We have collected some frequently asked questions. Before reporting an issue, please search if the FAQ has the answer to your problem.

Player Integration

MIT License Copyright (c) 2018 cdnbye Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

一个完全免费的视频加速插件,通过WebRTC datachannel技术,在不影响用户体验的前提下,最大化p2p率,从而为CP节省流量成本。QQ群:746163014 expand collapse
JavaScript
MIT
Cancel

Releases

No release

Contributors

All

Activities

Load More
can not load any more
JavaScript
1
https://gitee.com/m114/hlsjs-p2p-engine.git
git@gitee.com:m114/hlsjs-p2p-engine.git
m114
hlsjs-p2p-engine
hlsjs-p2p-engine
master

Search