我的账户
火车采集

教育培训在线课程

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

在发布一个PHP版P2P加速 只支持M3U8资源

[复制链接]
不忘初心 发表于 2019-1-17 17:06:31 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

9 |- X3 Q$ q" \0 Q
自己懒得操作的可以用此接口P2P播放器解析接口(只支持M3U8资源)
关注M3U8资源: 全网M3U8资源网
https格式:https://www.pohaier.com/m3u8.php?url=5 `$ S7 j& a# \9 v# a
http 格式:http://www.ckplayer.tv/m3u8.php?url=8 a. l5 w2 {, q  Y
https格式:https://www.629055.com/m3u8.php?url=: @" Q% c* D* `, }2 F, l( {1 ]. y
https格式:https://www.629055.com/dplayer.php?url=
+ f9 c* c2 W- g1 S" S建议用此接口以便后期修复

6 l3 }6 t. f- t: a( U8 ]
我们的宗旨是:让热门不再卡顿,让高峰依旧流畅- O/ G" Q( R: U" X7 A# A8 d' o

/ _* I  W% P4 [$ x
P2P插件由Peer5框架二次包装而成,欢迎技术爱好者共同学习www.peer5.com,插件提供完善的流媒体加速运载能力;任何站长均可以接入使用,无论插件运行状态如何,均不会对流畅度造成负面影响;就算P2P服务彻底挂掉,也不会对您的网站造成任何影响,在插件正常运行过程中,会提供非常好的加速能力,下面介绍插件运作原理以及接入方法。

9 x) m; |- l5 c8 a 2865313724.png
+ q9 x6 R# o- O2 A5 _8 K
$ F" m. n7 I( W
如图所示,其中signal信令服务器和tracker调度服务器,是整个系统的核心,整个圈子的建立和交互都由它们来完成,这一项服务由我们维护和优化,这是商业服务(我们已经收取到了一年的商业服务费用,站长们无需为服务稳定性担心)。

2 f5 q& T9 c/ N7 C% W! I2 @$ @
运作原理:% c. Q+ C, j* E7 z
step1:将正在播放同一视频的用户纳入一个流量圈,将播放进度相似的用户进一步细分且纳入一个协同圈,当然细分原则中还涉及到网络质量等因素,具体原则就不一一描述,因为这个我们可能需要随时做升级和优化

. S; O: W& ]: h8 \+ T% I3 Rstep2:为圈内用户创建互联,协同且相互提供网络帮助以完成视频的流畅播放,这是一个很复杂的流程

$ r" B+ J, ~/ Q+ Z+ C6 ^step3:实时调度和调整流量圈的大小与范围,保障整个流量圈流畅与稳定
. S" \* T. ]* E3 L* R
总的来说,就是让正在观看同一个视频的用户在网络上提供相互的帮助,以达到更好的流畅性和可靠性,整个系统只会优先去获取链路最好的数据,如果整个链路都不可用,那么还有CDN或者源的数据可以使用,这个切换是毫秒级的,所以在任何情况下,系统只会带来正向的加速能力,而不会出现拖后腿的现象!

9 |# s+ f( R7 M! f! O
以下是一个完整的视频解析页面的DEMO,保存为:m3u8.php即可,使用方式为http(s)://您的网址/m3u8.php?url=xxxxx.m3u8,当然了,m3u8的地址需要写入h5跨域头3 k- K& z: X! G* O! D7 n8 x1 ~
此版本为2.3正式稳定版版代码如下,细节请自行修改 :
更新内容:已整合弹幕,右键属性查看P2P状态编译成中文,优化加载ts速度,优化播放卡顿的问题   

- ]* f5 a6 k& f. m! V  A
  1. <?php
    , D# u0 }/ z6 C+ l* v8 T
  2. /**# l+ g/ P7 F7 g% W* p
  3. * @代码开源,透明,请勿用于商业用途,完全开源模式,供大家一起探讨研究  T7 T+ o" [% I3 |" F3 q1 Z+ I

  4. , P6 @' r# s, a  e& W
  5. * @支持全网(支持跨域)的M3U8资源加速' v& x: X( ~. N/ ^5 \
  6. 0 B$ k5 w6 V" n8 R9 e
  7. * @调用举例:http://域名/m3u8.php?url=; Y% z! e1 v: Q9 @: k
  8. * @举例说明:https://www.629055.com/m3u8.php?url=https://www.caonima.me/20181122/FnHKa1pS/index.m3u8# G+ r1 J- _7 Q/ e
  9. * l. y3 D& c1 l# ^
  10. * @如有问题(反馈)请联系QQ 8852422修复
    % L) K) S0 q5 a' D0 f& w4 E9 ]
  11. / |- a% v/ @8 Q$ m- B* \6 k! c
  12. * @author    www.pohaier.com
    ; y6 i8 X5 J( P. S* P
  13. * @copyright 20187 n0 ^9 m/ T" |  z, V
  14. * @version   2.34 c( r% x+ p, f- V+ o
  15. *) r6 b. |' X, r# Q0 b
  16. * for ray-p2p btjson4 z7 ^- L+ d0 ^/ u
  17. *8 G) ~2 M4 C5 z2 k& E
  18. */8 k% a3 Z5 d7 g0 |
  19. error_reporting(0);
      k: G6 B( U; C8 F! s
  20. header("Content-Type: text/html; charset=utf-8");
    * _  e3 z, B7 X- [6 h% J: u0 C! s
  21. $url = $_GET['url'];2 O7 w, }9 I( a  k2 x% W4 I/ i
  22. if(strpos(wm_https(),'ps:') !== false){//接口带 S 证书
    ; q+ ]$ `# O4 }% w7 `
  23.     if(strpos($url,'http://') !== false){
    2 x& H1 j1 U" R  ~5 n+ }
  24.         header("location:http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"].'?'.$_SERVER['QUERY_STRING']);//判断直链没带 S 证书就跳转到不带 S 证书的接口" ^. M% ?( ^( N% O6 m5 I6 y  t
  25.         exit();
    4 c, }3 ?5 `) q7 g. ~6 F
  26.     }
    8 g1 ^2 }% Y1 W) M
  27. }else{//接口不带 S 证书
    9 U0 y7 p, a+ z+ \/ a6 w8 E2 X- P
  28.     if(strpos($url,'https://') !== false){
    1 ~7 e/ l: @' z
  29.         header("location:https://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"].'?'.$_SERVER['QUERY_STRING']);//判断直链带 S 证书就跳转到带 S 证书的接口- ^( X7 B+ l  M
  30.         exit();% s; J8 l; d& E: R2 X. \6 z7 z
  31.     }
    : D( H7 H& K- O7 R$ L$ w
  32. }$ k6 h  K& E( c3 h2 c
  33. function wm_https(){  l0 l) i9 {3 B2 F% s
  34.     $http = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';+ N+ \- u1 E' O( S! e0 L  |
  35.     return $http;2 g! m* v; D' \' I; L2 }
  36. }. V* W' @* V& [1 m
  37. ?>
    8 Q/ U# w/ J8 |

  38. 6 b+ N# T: \- L+ x
  39. <html>2 ~) G0 `5 J5 C. B( F  v
  40. <head>
    ! }8 z" J& q1 W
  41. <title>Dplayer---P2P版播放器</title>/ E% P, m2 r: c9 w
  42. <meta http-equiv="content-type" content="text/html;charset=UTF-8"/>% K$ C8 [$ J: z( T
  43. <meta http-equiv="content-language" content="zh-CN"/>
    ; w) h+ G5 o) [6 }
  44. <meta http-equiv="X-UA-Compatible" content="chrome=1"/>6 L- w# q" O# Q% S
  45. <meta http-equiv="pragma" content="no-cache"/>
    . T6 y8 C6 G! N
  46. <meta http-equiv="expires" content="0"/>+ U7 g: @  K- ~- B* M2 r( S, J
  47. <meta name="referrer" content="never"/>
    , j  {3 |5 a  ^# H6 e
  48. <meta name="renderer" content="webkit"/># V2 ?- C. K1 N/ i
  49. <meta name="msapplication-tap-highlight" content="no"/>
    ( I. S$ ?/ J* R+ g; F
  50. <meta name="HandheldFriendly" content="true"/>
    6 d- X- _7 E+ n, i/ ^
  51. <meta name="x5-page-mode" content="app"/>
    $ h- i7 Q( x% F% Q, _9 k/ M
  52. <meta name="Viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0"/>1 g% w: h8 J9 A* P1 g0 [2 @
  53. <link rel="stylesheet" href="//www.629055.com/dplayer/DPlayer.min.css" type="text/css"/>& |; ^& B/ C' `
  54. <style type="text/css">" ]# a" [; d7 k, `& t
  55. body,html{width:100%;height:100%;background:#000;padding:0;margin:0;overflow-x:hidden;overflow-y:hidden}& J) }3 N5 g! f- Z- D6 p* p
  56. *{margin:0;border:0;padding:0;text-decoration:none}
    : c! A3 Z. r# h
  57. #stats{position:fixed;top:5px;left:8px;font-size:12px;color:#fdfdfd;text-shadow:1px 1px 1px #000, 1px 1px 1px #000}
    . N$ l3 Z+ S' o1 W9 r
  58. #dplayer{position:inherit}
    6 X$ T" k6 D+ I
  59. </style>* U6 g& j) Y# }+ C' ]  M# I
  60. </head>
    % b) k2 B. y, M- {
  61. <body style="background:#000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" oncontextmenu=window.event.returnValue=false>- \6 ]9 r- p3 B7 u
  62. <div id="dplayer"></div>6 ]+ I' l6 }+ i. E" x: _+ m
  63. <div id="stats"></div>
      E$ \- U$ F6 c% R7 x, d
  64. <script type="text/javascript" src="//www.629055.com/dplayer/hls.min.js"></script>, |, N' C3 o5 Q' t4 C$ b
  65. <script type="text/javascript" src="//www.629055.com/dplayer/DPlayer.min.js"></script>
    1 {- V( w9 |$ l8 E7 |: F( c2 C
  66. <script type="text/javascript" src="//www.629055.com/dplayer/p2p.js"></script>2 Y+ Z/ `7 k, C3 J3 P2 b
  67. <script>$ z. I2 N5 L7 M1 O
  68.     var webdata = {4 I2 P& i2 z+ G' ]  I/ @# x
  69.         set:function(key,val){) k* F7 Y! L  U' L
  70.             window.sessionStorage.setItem(key,val);+ `5 l- B9 ]3 ?  }* `
  71.         },
    : d2 h+ h- f3 ^* V) Q
  72.         get:function(key){
    1 s# H0 N* S4 M& ~, I: f
  73.             return window.sessionStorage.getItem(key);6 g. O7 w. \; [. Y( x
  74.         },1 r8 f5 W& Z3 D1 u
  75.         del:function(key){
    : o* K* f- H" E$ _
  76.             window.sessionStorage.removeItem(key);
    7 |1 _* z% `* l7 f$ {
  77.         },3 t, u% N7 x5 x3 f- U2 ?% b
  78.         clear:function(key){
    . @* X) r, a9 j9 k0 ~( G
  79.             window.sessionStorage.clear();/ L( [) u/ \$ V- {+ v& |3 |; W
  80.         }  G3 F2 X( a4 U8 }1 Y& J& }' j
  81.     };" U* ~3 U& c5 d1 H: o' K
  82.     var m3u8url =  '<?php echo $url; ?>'
    7 k9 m4 R; h: p% K; x+ n) u
  83.     var dp = new DPlayer({* p  u% s3 r6 }' K
  84.         autoplay: true,
    / `8 x! C' m: H5 ?/ n; e
  85.         container: document.getElementById('dplayer'),: r+ Y5 R/ C. Z5 P7 T/ t
  86.         video: {
    ; S$ N+ k# Y2 u1 E
  87.             url: m3u8url,
    % Q! r! }' n( r" H+ ~$ M
  88.             type: 'hls'," Q1 y2 R$ |% P9 S
  89.             pic: '/webp2p/loading_wap.jpg',; R4 f$ H& N- {( y' d
  90.           },
    ( E/ x& `/ M$ ?- ~1 \
  91.           volume: 1.0,+ O! L/ z1 V, g: @6 f

  92. ; c% ?& C8 j5 r: D# A
  93.           preload: 'auto',; [2 x" v, ~  n3 E8 P0 @. p; \
  94.           theme: '#28FF28',7 S5 J6 P, V! O2 H: y* C
  95.         danmaku: {
    5 M3 `6 V( L& A
  96.                 id: '<?php echo $url; ?>',$ [! r1 a6 \: R+ |
  97.                 api: 'https://api.prprpr.me/dplayer/',( h) D- f$ V% ^* o, S# c! c
  98.                 maximum: 1000,
    ! [& }# D" _8 _; g4 Y6 a' q
  99.                 bottom: '20%',
    * f1 C2 w2 a$ V; X6 p7 k2 m
  100.                 unlimited: true3 ?! `- c4 T1 }: |* X  u3 N( x- z
  101.         },
    6 ~( ?) s2 X' ?7 ^' ]' V/ u  c8 x- T
  102.         hlsjsConfig: {( m" M! h* D8 r+ P' C7 C% p
  103.             p2pConfig: {8 x. w" j; G* L, \- j6 V$ y
  104.                 logLevel: false,
    7 o! K& N# r; }- s- A
  105.                 live: false,7 F7 K1 E: r; n5 g( X: C
  106.             }
    2 i) h' R3 }4 H8 w& r
  107.         }
    ) M+ n3 F5 {8 K( S7 t# E  i! L3 B. ^
  108.     });8 g; ]# Z4 t8 c7 [  v
  109.     dp.seek(webdata.get('pay'+m3u8url));
    % @3 u% x9 l. T5 s+ n
  110.     setInterval(function(){
    % c9 v1 L* d: ?* e1 A8 F
  111.         webdata.set('pay'+m3u8url,dp.video.currentTime);2 G3 L1 y4 o7 \( g
  112.     },1000);
    & U  v& w0 X6 o
  113.     var _peerId = '', _peerNum = 0, _totalP2PDownloaded = 0, _totalP2PUploaded = 0;" R# x- ]- `8 c3 V7 S
  114.     dp.on('stats', function (stats) {8 m7 S& D9 }! {( a0 F2 v
  115.         _totalP2PDownloaded = stats.totalP2PDownloaded;
    1 l. D3 a# R: h9 e  S+ _; x! ?
  116.         _totalP2PUploaded = stats.totalP2PUploaded;8 g) T; P" E, A2 ~! l( v6 A
  117.         updateStats();: e; I$ Y! L0 N. I( L6 U; Y; o; e
  118.     });& `. a7 q6 [9 ~. D% ]: K$ [$ x
  119.     dp.on('peerId', function (peerId) {3 t! A' ^7 D7 f) B
  120.         _peerId = peerId;/ [. U) X3 i# b
  121.     });9 g$ ^- I- t' ~
  122.     dp.on('peers', function (peers) {* B! {3 j5 z- P6 ~! u0 v2 R
  123.         _peerNum = peers.length;' L) ^; `( [; q! o! t/ q
  124.         updateStats();6 D2 _7 W+ o/ _# [5 `  _) N& s# v2 _: g
  125.     });
    5 c" y' H1 s( `4 ]8 q& k- P; N6 `+ n: I" u
  126.     dp.on('ended', function () {
      i9 ^$ _5 a& `: }/ N; [
  127.     window.parent.postMessage('tcwlnext','*');$ x8 b, t8 b& i. z4 Q) k2 J
  128.   });- x  x. G/ f0 |4 Q! H0 P. ~1 R
  129.     function updateStats() {% E+ A. u4 c# a+ C$ p  R
  130.         var text = 'P2P已开启 共享' + (_totalP2PUploaded/1024).toFixed(2) + 'MB' + ' 加速' + (_totalP2PDownloaded/1024).toFixed(2)
    0 w6 n% e# m6 e  U2 y" n
  131.             + 'MB' + ' 此片有 ' + _peerNum + ' 位道友正在观看';
    " }- e* P* i3 f/ j8 ]  v- U; O
  132.         document.getElementById('stats').innerText = text* m0 @( f) c0 p% B( e) w) r0 x: q1 Z
  133.     }. q6 Y/ S/ b: O, t( z, e
  134. </script>
    - h/ a$ c1 y6 Z% s

  135. - `  O  w* W- ]+ R, Q
  136. </body>
    % G, g: H: Z- B. }: Z7 R
  137. </html>
复制代码
, I, x1 D  E3 s: V9 T# \) G1 A
" @+ t9 r) L. a$ Q. h; p7 l$ z
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

不忘初心
  • 管理员
此人很懒,什么都没有留下。

关注0

粉丝0

帖子330

发布主题
关注我们
火车采集专注教育培训

客服电话:400-123-4567

客服邮箱:776886721@qq.com

周一至周五 8:00-18:00

火车采集网站是助你走向成功的垫脚石

火车采集追求原创 - 引领行业人才培养!( 豫ICP备17002439号 )

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.