单⽂件PHP版视频解析源码(中间件)
说明:
1 ⾸先这个中间件是我⾃⼰写的,它是⼀个单独的PHP⽂件。
2 初次运⾏后会⽣成⼀个JSON的⽂件作为保存内容所⽤
3 它的原理是⽐如你在该⽂件后⾯添加上播放路径,它会利⽤识别码,也就是你路径⾥的如域名或者最后的后缀进⾏匹配,然后进⾏直接播放,如果有⼏个相同的满⾜条件的解析,会直接在下⾯以按钮⽅式切换。
第⼀次会初始化操作,⽣成config.json⽂件
这个⽂件我顶部已经带了注释了⾃⼰看,你们⾃⼰保存下⾯的源码为PHP⽂件即可。
注意:默认登录的账号密码都是admin,进去后分别在解析管理和识别管理内选择导⼊列表操作
代码在最底部,⾃⾏保存为PHP⽂件测试。
<?php
/*
PHP全⾃动视频解析
软件说明:
1 ⾸先需要添加识别,⽐如⼀个视频播放连接,必然有域名存在,识别就是对播放连接进⾏搜索匹配,如果连接内的⽹站地址某段字符串和识别相同,就能获得这个播放连接是
2 当获取的⽐如某个⽹站的识别后,我们把这个识别去匹配播放解析组,获取到的任何⽀持该⽹站视频的解析放在播放页的下⾯,⽅便⽤户切换.
3 好处是下⾯的解析地址根据播放⽹站发⽣变化,不⽀持的肯定不会显⽰出来.
4 本⽂件名字没有任何限制,你可以变更为index.php
软件流程:
播放地址为:v.youku/v_show/id_XMjk1NTMwMjk4MA==.html
解析地址为:域名/player.php?url=v.youku/v_show/id_XMjk1NTMwMjk4MA==.html
开始识别:识别关键字为youku,查到播放连接⾥有youku,匹配为优酷的播放连接.
解析匹配:搜索解析标签⾥是否有youku这个字样的⽀持解析.
开始播放:匹配完毕,⾃动把匹配后的所有⽀持该⽹站的解析路径放在播放页⾯底部供⽤户切换使⽤.
使⽤说明:
1、本程序为单⽂件程序
2、账号、密码(md5加密)、解析源、识别源都存放在 $json_name ='config.json'; 内,你可以⾃⼰重命名这个⽂件的名字。
3、config.json ⽂件为⾃动⽣成⽂件。
4、第⼀次使⽤初始账号和密码都为:admin
路径页⾯说明:
1 解析管理:player.php (不加任何参数可进⼊管理)
2 解析播放:player.php?url=视频地址
2 解析播放:player.php?url=视频地址
3 ⾃由播放:player.php?url= 后⾯不加视频地址
管理页⾯
1 player.php?type=1 解析添加,修改,删除管理
2 player.php?type=2 识别添加,修改,删除管理
3 player.php?type=3 修改账号密码管理
备注:本地视频格式识别后缀修改请在本源码第--65列---修改(说明:没有显⽰的本地后缀你也可以⼿动添加到列表内,照样可以识别不影响使⽤)
*/
error_reporting(0);
session_start();
//函数
//判断JSON内容并输出
function go_json($json_name,$i=1){
$json_api = file_get_contents($json_name); //读取索引
$json_api=trim($json_api,chr(239).chr(187).chr(191)); //处理JSON
$jsondata = json_decode($json_api, true); //转换JSON为数组
if($i==1){
return $jsondata; //默认输出数组格式
}else{
return $json_api; //输出JSON格式
}
}
//取⽂件后缀名
function getExt($url)
{
$path=parse_url($url);
$str=explode('.',$path['path']);
return $str[1];
}
//函数结束
//访问终端判断
$agent = $_SERVER['HTTP_USER_AGENT'];
if(strpos($agent,"comFront") || strpos($agent,"iPhone") || strpos($agent,"MIDP-2.0") || strpos($agent,"Opera Mini") || strpos($agent,"UCWEB") || strpos($agent,"A $terminal="wap"; //⼿机端
}else{
$terminal="pc"; //电脑端
}
$localplay = 'm3u8|mp4|flv|avi|asf|rmvb|rm|asf|divx|mpg|mpeg|mpe|wmv|mkv|vob|swf|mp3 '; //添加修改本地视频格式识别后缀请在这⾥添加
$localarr = explode('|',$localplay);
$i=1001;
foreach($localarr as $value){ //本地播放器配置
$localTags=$localTags. '<input id="tag-'.$i.'" type="checkbox" name="like" value="'.$value.'">'.$value.'</label> ';
++$i;
}
//读取JSON⽂件
$json_name ='config.json';
$jsondata = go_json($json_name);
if(is_array($jsondata)){
$userall = $jsondata['user'];
$parse = $jsondata['parse'];
$discern = $jsondata['discern'];
}else{
$userall = array("id"=>"1","username"=>"admin","password"=>md5("admin"));
$parse =array();
$discern =array();
$jsonarr = array(
'time' => date('y-m-d h:i:s',time()),
'user' => $userall,
'parse' => $parse,
'discern' => $discern
'discern' => $discern
);
file_put_contents($json_name,json_encode($jsonarr));
}
/
/----------------------------------------------
$play_url = $_GET['url']; //播放解析接⼝
if(empty($play_url)== FALSE){
//播放器的前期设置
$level=0;
$play_url = strtolower($play_url); //避免连接⼤写转换成⼩写字母
$play_suffix = getExt($play_url); //获取后缀
$play_type=''; //播放器识别字符
$play_Name=''; //播放器识别名称
$play_Arry=array(); //播放器数组
$_SESSION['ok']=0;
}
//解析结束进⾏跳转
//----------------------------------------------
//管理登录开始
if($_GET['out']==1){$_SESSION['ok']=0;}
$time =date('y-m-d h:i:s',time());
$username = $_POST['username'];
$password = $_POST['password'];
$alter = $_POST['alter'];
if($alter ==1 && $_SESSION['ok']==1){
$userTT = array("id"=>"1","username"=>$_POST['username'],"password"=>md5($_POST['password']));
$jsonarr = array(
'time' => date('y-m-d h:i:s',time()),
'user' => $userTT,
'parse' => $parse,
'discern' => $discern
);
file_put_contents($json_name,json_encode($jsonarr));
echo "<script language=\"JavaScript\">alert(\"修改成功!\");</script>";
session_destroy();
}
//if(isset($username) && empty($_POST['alter'])!== FALSE){
if(isset($username) && empty($_POST['alter'])!== FALSE){
if($username !== $userall['username'])echo "<script language=\"JavaScript\">alert(\"输⼊账号错误!\");</script>";
elseif(md5($password)!==$userall['password'])echo "<script language=\"JavaScript\">alert(\"输⼊密码错误!\");</script>";
elseif($username == $userall['username'] && md5($password)==$userall['password']){$_SESSION['ok'] = 1;$_SESSION['username']=$userall['username'];$_SES }
if(!isset($_SESSION['ok']) && !isset($play_url)== true){
exit('<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>管理登录</title>
<link href="cdn.bootcss/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
<link href="cdn.bootcss/bootstrap/3.3.5/css/bootstrap-theme.min.css" rel="stylesheet">
<script src="cdn.bootcss/jquery/1.12.0/jquery.min.js"></script>
<script src="cdn.bootcss/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
表格网站php源码<h2>服务器时间:'.$time.'</h2>
<form method="post" role="form">
<form method="post" role="form">
<div class="form-group">
<label for="exampleInputUsername">管理账号</label><input name="username" type="username" class="form-control" id="username" value="'.$userall['usern </div>
<div class="form-group">
<label for="exampleInputPassword">管理密码</label><input name="password" type="password" class="form-control" id="password" value="'.$password.'" /> </div>
<button type="submit" class="btn btn-default">管理登录</button> <a href="?url=">转到播放地址页</a>
</form>
</div>
</div>
</div>
</body>
</html>
');
}
if($_SESSION['ok'] == 1){
//管理登录结束
//开始后台管理
$all =$_GET['all'];
$save = $_GET['save']; //操作 0=读取 1=添加,2=修改,3=删除 (Add, delete, modify)
//判断项⽬
$type =$_GET['type']; //分类 1=添加删除解析连接地址或 2 =添加删除识别字段
//数据项⽬
$sbid = $_GET['sbid']; //识别ID,修改和删除使⽤的
$sbname = $_GET['sbname']; //识别名称
$sburl = $_GET['sburl']; //识别字段
$sbkey = $_GET['sbkey']; //识别字段
$jxid = $_GET['jxid']; //解析ID,修改和删除使⽤的
$jxname = $_GET['jxname']; //解析名称
$jxurl = $_GET['jxurl']; //解析字段
$jxtags = $_GET['tags']; //解析标签
$md5 = $_GET['md5'];
$level = $_GET['level'];
$yd = $_GET['yd'];
$copy = $_GET['copy'];
if(empty($level))$level=0;
if(empty($type))$type=1;
if(empty($save))$save=1;
if(empty($yd))$yd=0;
if($save==1){$an ='添加';$fg='btn-danger';}elseif($save==2 ){$an ='修改';$fg='btn-primary';}elseif($save==3){$an ='删除'; $fg='btn-danger'; }
//处理和保存数组
//添加删除数据
if($level==1){
if($type==1){
if($save==1){$md5 = md5($jxurl);}
$saveall='';
for ($i=0;$i<count($parse);++$i){
$ID=$parse[$i]['ID'];
$Name=$parse[$i]['Name'];
$Url=$parse[$i]['Url'];
$Tags=$parse[$i]['Tags'];
$MD5 =$parse[$i]['md5'];
if($md5 == $MD5){
$saveall = $saveall.'#'.$MD5.'#';
if($save==1){$parsearr[$i]=array('ID'=>$i+1,'Name'=>$Name,'Url'=>$Url,'Tags'=>$Tags,'md5'=>$MD5);}
if($save==2){if($yd==1){$jxname=$Name; $jxurl=$Url;$jxtags=$Tags; $parsearr[$i]=array('ID'=>$i+1,'Name'=>$Name,'Url'=>$Url,'Tags'=>$Tags,'md5'=>$MD5);} if($save==3){continue;$title='解析数据删除成功!';}
}else{
$parsearr[$i]=array('ID'=>$i+1,'Name'=>$Name,'Url'=>$Url,'Tags'=>$Tags,'md5'=>$MD5);
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论