P2P流媒体引擎

vuePress-theme-reco    2018 - 2021
P2P流媒体引擎 P2P流媒体引擎

Choose mode

  • dark
  • auto
  • light
在线文档
  • 快速入门
  • Web SDK

    • Hls.js
    • MP4
    • Dash.js
    • Shaka-Player
    • 大文件下载
  • Android SDK
  • iOS SDK
  • Flutter SDK
价格
联系我们
控制台
GitHub
language
  • English
  • 简体中文

在线文档
  • 快速入门
  • Web SDK

    • Hls.js
    • MP4
    • Dash.js
    • Shaka-Player
    • 大文件下载
  • Android SDK
  • iOS SDK
  • Flutter SDK
价格
联系我们
控制台
GitHub
language
  • English
  • 简体中文
  • 快速入门
  • 常见问题
  • 信令服务
  • P2P优化
  • 控制台

    • 绑定域名/AppId
    • 数据分析
    • P2P控制
    • Restful API
  • Hls.js SDK

    • 简介
    • 使用方法
    • 第三方播放器
    • CMS集成
    • API文档
    • CDN
    • 更新日志
  • 安卓 SDK

    • 简介
    • 使用方法
    • API文档
    • 更新日志
  • iOS SDK

    • 简介
    • 使用方法
    • API文档
    • 更新日志
  • Flutter SDK

    • 简介
    • 使用方法
    • API文档
    • 更新日志
  • Shaka-Player SDK

    • 简介
    • 使用方法
    • 第三方播放器
    • API文档
    • 更新日志
  • Web MP4 SDK

    • 简介
    • 使用方法
    • 第三方播放器
      • CBPlayer
      • DPlayer
      • videojs
      • clappr
      • flowplayer
    • API文档
    • 更新日志
  • Dash.js SDK

    • 简介
    • 使用方法
    • 第三方播放器
    • API文档
    • 更新日志
  • Web下载器

    • 简介
    • 使用方法
    • API文档
    • 更新日志
  • 安卓 SDK 1.x

    • 简介
    • 使用方法
    • API文档
    • 更新日志
  • 更多

    • 技术原理
    • 用户服务协议

第三方播放器

vuePress-theme-reco    2018 - 2021

第三方播放器


# 简介

以下为部分播放器集成示例,当然您也可以尝试集成到其他HTML5播放器中。

# CBPlayer

CBPlayer介绍

<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/p2p-dplayer@latest/dist/DPlayer.min.css">
<style type="text/css">
    body,html{width:100%;height:100%;background:#000;padding:0;margin:0;overflow-x:hidden;overflow-y:hidden}
    *{margin:0;border:0;padding:0;text-decoration:none}
    #dplayer{position:inherit}
</style>
<div id="dplayer"></div>
<script src="https://cdn.jsdelivr.net/npm/cdnbye-mp4@latest"></script>
<script src="https://cdn.jsdelivr.net/npm/cbplayer2@latest"></script>
<script>
    var dp = new CBPlayer({
        container: document.getElementById('dplayer'),
        playState: true,   // 记忆播放
        video: {
            url: 'https://webtorrent.io/torrents/Sintel/Sintel.mp4',
        },
        pluginOptions: {
            mp4: {
                autoplay: true,
                p2pConfig: {
                    // logLevel: 'debug',
                    // Other p2pConfig options provided by CDNBye
                }
            }
        },
    });
</script>

# DPlayer

DPlayer介绍

<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/dplayer@1.25.0/dist/DPlayer.min.css">
<style type="text/css">
    body,html{width:100%;height:100%;background:#000;padding:0;margin:0;overflow-x:hidden;overflow-y:hidden}
    *{margin:0;border:0;padding:0;text-decoration:none}
    #stats{position:fixed;top:5px;left:10px;font-size:12px;color:#fdfdfd;z-index:2147483647;text-shadow:1px 1px 1px #000, 1px 1px 1px #000}
    #dplayer{position:inherit}
</style>
<div id="dplayer"></div>
<div id="stats"></div>
<script src="https://cdn.jsdelivr.net/npm/cdnbye-mp4@latest"></script>
<script src="https://cdn.jsdelivr.net/npm/dplayer@1.25.0"></script>
<script>
    var _peerId = '', _peerNum = 0, _totalP2PDownloaded = 0, _totalP2PUploaded = 0;
    var type = 'normal';
    if(P2PEngineMp4.isSupported()) {
        type = 'customMp4';
    }
    const dp = new DPlayer({
        container: document.getElementById('dplayer'),
        autoplay: true,
        video: {
            url: 'https://webtorrent.io/torrents/Sintel/Sintel.mp4',
            type: type,
            hotkey: true,        // 移动端全屏时向右划动快进,向左划动快退。
            customType: {
                'customMp4': function (video, player) {
                    var mp4 = new P2PEngineMp4(video, {
                        autoplay: true,
                    });
                    mp4.loadSource(video.src);
                    mp4.on('stats', function (stats) {
                        _totalP2PDownloaded = stats.totalP2PDownloaded;
                        _totalP2PUploaded = stats.totalP2PUploaded;
                        updateStats();
                    }).on('peerId', function (peerId) {
                        _peerId = peerId;
                    }).on('peers', function (peers) {
                        _peerNum = peers.length;
                        updateStats();
                    });
                }
            }
        }
    });
    function updateStats() {
        var text = 'P2P正在为您加速' + (_totalP2PDownloaded/1024).toFixed(2)
            + 'MB 已分享' + (_totalP2PUploaded/1024).toFixed(2) + 'MB' + ' 连接节点' + _peerNum + '个';
        document.getElementById('stats').innerText = text
    }
</script>

# videojs

videojs介绍

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Videojs-contrib-mp4</title>
    <link href="http://vjs.zencdn.net/5.19.2/video-js.css" rel="stylesheet">
    <script src="http://vjs.zencdn.net/5.19.2/video.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/cdnbye-mp4@latest"></script>
    <script src="https://cdn.jsdelivr.net/npm/cdnbye-mp4@latest/dist/videojs-contrib-mp4.min.js"></script>
</head>
<body>
<video id="player" class="video-js vjs-default-skin" height="360" width="640" controls preload="none">
</video>
<script>
    var player = videojs('#player', {
        sources:[
            {
                src: 'https://webtorrent.io/torrents/Sintel/Sintel.mp4',
            }
        ],
        html5: {
            mp4Config: {
                p2pConfig: {
                    // logLevel: 'debug',
                    // Other p2pConfig options provided by CDNBye
                }
            }
        }
    });
</script>
</body>
</html>

# clappr

clappr介绍

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CDNBye Clappr Demo</title>
    <script src="//cdn.jsdelivr.net/npm/@clappr/player@0.4.0/dist/clappr.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/cdnbye-mp4@latest"></script>
    <script src="https://cdn.jsdelivr.net/npm/cdnbye-mp4@latest/dist/clappr-plugin-mp4.min.js"></script>
</head>
<body>
<div id="player"></div>
<script>
    var player = new Clappr.Player(
        {
            source: "https://webtorrent.io/torrents/Sintel/Sintel.mp4",
            parentId: "#player",
            // autoPlay: true,
            plugins: {
                playback: [CDNByeClapprPlugin]
            },
            playback: {
                mp4Config: {
                    p2pConfig: {
                        // logLevel: 'debug',
                        // Other p2pConfig options provided by CDNBye
                    }
                }
            }
        });
</script>
</body>
</html>

# flowplayer

flowplayer介绍

<!-- head section -->
<!-- skin -->
<link rel="stylesheet" href="//cdn.flowplayer.com/releases/native/stable/style/flowplayer.css">
<!-- CDNBye plugin -->
<script src="https://cdn.jsdelivr.net/npm/cdnbye-mp4@latest"></script>
<!-- flowplayer -->
<script src="//cdn.flowplayer.com/releases/native/stable/flowplayer.min.js"></script>
<!-- body section -->
<div id="player"></div>
<p id="version"></p>
<h3>download info:</h3>
<p id="info"></p>

<script>
    document.querySelector('#version').innerText = `cdnbye version: ${P2PEngineMp4.version}`;

    var player = flowplayer('#player', { 
        autoplay: false                   // must set false
    })

    var mp4 = new P2PEngineMp4(player, {
        autoplay: true,
        p2pConfig: {
            // logLevel: 'debug',
        }
    })
    mp4.loadSource('https://webtorrent.io/torrents/Sintel/Sintel.mp4');

    mp4.on('stats', function (stats) {
        var total = stats.totalHTTPDownloaded + stats.totalP2PDownloaded;
        document.querySelector('#info').innerText = `p2p ratio: ${Math.round(stats.totalP2PDownloaded/total*100)}%   saved traffic: ${Math.round(stats.totalP2PDownloaded)}KB upload: ${Math.round(stats.totalP2PUploaded)}KB`;
    })
</script>