//http://www.miguvideo.com/wap/resource/pc/detail/miguplay.jsp?cid=636120900

//http://www.miguvideo.com/playurl/v1/play/playurlh5?contId=637544550&rateType=1,2,3,4

//echo file_get_contents("http://www.miguvideo.com/wap/resource/pc/data/detailData.jsp?cid=636120900");

$ids = MIGU::parse($url);

echo str_replace("\/", "/", json_encode(MIGU::get_vip_video_url($ids)));

class MIGU

{

public static function parse($url)

{

$params = parse_url($url)["query"];

$cid = str_replace("cid=","",$params);

$name = "MIGU-".md5($cid);

if (file_exists(NAME_PATH.$name)) {

$data = json_decode(file_get_contents(NAME_PATH.$name),true);

$ids = $data;

}else{

$api = "http://www.miguvideo.com/wap/resource/pc/data/miguData.jsp";

$content = self::curl($api,'','http://www.miguvideo.com/wap/r…il/miguplay.jsp?{$params}',$cid);

$content1 = self::curl($url,'',$url);

if ($content1) {

preg_match('#id="sessionID"\s*value="(.*?)">#',$content1,$_a);

}

if (isset($_a[1])) {

$ids['sessionID'] = $_a[1];

}

//print_r($_a);exit;

$json = json_decode($content,true);

$data = $json[0];

$ids['vid'] = $data['playId'];

$ids['title'] = $data['name'];

$ids['poster'] = $data['imgH'];

$ids['url'] = $url;

file_put_contents(NAME_PATH.$name, json_encode($ids));

}

return $ids;

}

public static function get_vip_video_url($ids){

$api = "http://www.miguvideo.com/playurl/v1/play/playurlh5?contId={$ids['vid']}&rateType=1,2,3&clientId={$ids['sessionID']}";

$data = self::curl($api,'',$ids['url']);

//print_r($data);exit;

$d = json_decode($data,true);

if ($d['code'] == '200') {

$data = $d['body'];

$urls = $data['urlInfos'];

$types = $data['mediaFiles'];

$count=0;

foreach ($urls as $key => $value) {

switch ($types[$key]['rateType']) {

case '1':$def = "标清";$vurl = $value['url'];break;

case '2':$def = "高清";$vurl = $value['url'];break;

case '3':$def = "超清";$vurl = $value['url'];break;

}

if ($value['url'] == '') {

continue;

}

if (GlobalBase::is_ipad()) {

if ($types[$key]['rateType']=='1') {

$videoinfo['code'] = 200;

$videoinfo["data"]["url"] = $vurl;

$videoinfo['data']['poster'] = $ids['poster'];

}

} else {

$video_m3u8[0] = str_replace('gslbmgspvod.miguvideo.com','vod.hcs.cmvideo.cn:8088',$vurl);

$video_m3u8[1] = "video/m3u8";

$video_m3u8[2] = $def;

$video_m3u8[3] = $key=="1" ? 10 : 0;

$videoinfo['code'] = 200;

$videoinfo['data']["video"][$count] = $video_m3u8;

$videoinfo['data']['poster'] = $ids['poster'];

$count++;

}

}

return $videoinfo;

}

}

public static function format_video($url,$key){

$ip = GlobalBase::get_ip();

$name = 'MIGUVIDEO-'.md5($key.$ip);

$url_1 = explode('media',$url);

$url_2 = str_replace('gslbmgspvod.miguvideo.com','vod.hcs.cmvideo.cn:8088',$url_1[0]);

$domain = $url_2.'media/';

$_data = file_get_contents($url);

$_data = preg_split('/[\r\n]+/s', $_data);

$d_u = array();

$urls = array();

$bool = true;

$targetduration = "";

foreach ($_data as $value) {

if(strstr($value,"#EXT-X-TARGETDURATION:")){//多码率

$targetduration = $value;

}else if(strstr($value,'#EXTINF:')){//单码率

$d_u[count($d_u)] = $value;

}else if($value&&substr($value,0,1)!="#"){

$urls[count($urls)] = $domain.$value;

}

}

$m3u8 = "#EXTM3U\n#EXT-X-VERSION:3\n";

$m3u8 .= empty($targetduration)?"#EXT-X-TARGETDURATION:7200\n" : $targetduration."\n";

foreach ($d_u as $key => $value) {

$m3u8 .= $value."\n"."../../video/ts.php?url=".base64_encode($urls[$key])."&site=migu\n";

}

$m3u8 .="#EXT-X-ENDLIST";

file_put_contents(M3U8_PATH.$name.".m3u8", $m3u8);

$vurl = "./data/m3u8/".$name.".m3u8";

return $vurl;

}

public static function format_video1($url,$key){

$ip = GlobalBase::get_ip();

$name = 'MIGUVIDEO-'.md5($key.$ip);

$url_1 = explode('media',$url);

$url_2 = str_replace('gslbmgspvod.miguvideo.com','vod.hcs.cmvideo.cn:8088',$url_1[0]);

$domain = $url_2.'media/';

$_data = file_get_contents($url);

$_data = preg_split('/[\r\n]+/s', $_data);

$d_u = array();

$urls = array();

$bool = true;

$targetduration = "";

foreach ($_data as $value) {

if(strstr($value,"#EXT-X-TARGETDURATION:")){//多码率

$targetduration = $value;

}else if(strstr($value,'#EXTINF:')){//单码率

$d_u[count($d_u)] = $value;

}else if($value&&substr($value,0,1)!="#"){

$urls[count($urls)] = $domain.$value;

}

}

$m3u8 = "#EXTM3U\n#EXT-X-VERSION:3\n";

$m3u8 .= empty($targetduration)?"#EXT-X-TARGETDURATION:7200\n" : $targetduration."\n";

foreach ($d_u as $key => $value) {

$m3u8 .= $value."\n".$urls[$key]."\n";

}

$m3u8 .="#EXT-X-ENDLIST";

print_r($m3u8);exit;

file_put_contents(M3U8_PATH.$name.".m3u8", $m3u8);

$vurl = "./data/m3u8/".$name.".m3u8";

return $vurl;

}

public static function curl($url,$cookie="",$ref,$cid='')

{

$params["ua"] = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36";

if ($cid != '') {

$params["fields"] = "cid=".$cid;

}

$params["ref"] = $ref;

return GlobalBase::curl($url,$params);

}

}

?>

移动咪咕PHP代理源码,咪咕视频解析源码相关推荐

  1. 抖音seo源码 短视频seo源码二次开发,怎么使用抖音seo源码,视频seo源码私有化部署?

    抖音seo源码 短视频seo源码二次开发,怎么使用抖音seo源码,短视频seo源码私有化部署? 抖音seo源码 短视频seo源码二次开发,怎么使用抖音seo源码,短视频seo源码私有化部署到本地.首先 ...

  2. php获取腾讯视频信息,云水日记-PHP实现腾讯视频解析源码

    PHP实现腾讯视频解析源码,只能解析非VIP的视频,否则只能看3分钟,仅供考学习使用....<?php //腾讯视频解析 $vids = isset($_GET['vids']) ? $_GET ...

  3. 二次解析视屏 php,[PHP源码]最新PHP二次视频解析源码 带后台版/13092

    最新PHP二次视频解析源码带后台版,功能强大 主目录文件结构及说明: admin 后台管理目录,请改名 save 数据保存目录,注意:权限必须为755以上,不然无法后台更新配置; cache 文件缓存 ...

  4. 一对一直播源码 一对一视频交友源码开发

    一.什么是一对一视频交友源码 一对一直播交友源码指的就是交友软件的开发程序包,也即是开发者编写好固定模式的程序,让这些基础程序可以进行售卖流通,在这些基础程序上可以做一些二次开发,又不会对基础程序作出 ...

  5. php智能解析,解析源码|一次解析源码|智能解析源码

    一次解析源码!支持优酷,奇异,芒果,搜狐,pptv,乐视,M1905,音悦台,阳光宽频,梨视频,一直播,华数TV,音悦台等的普通视频解析 VIP的视频解析会自动搜索各个切片资源站进行m3u8的解析! ...

  6. 抖音无水印视频解析源码

    原理如下: <?php /* Author 5G云源码分享网 DateTime 2019-12-26 */function GetVideos($url) {$ch = curl_init(); ...

  7. 短视频源码仿抖音短视频APP源码短视频平台源码短视频源码

    [WoShop仿抖音短视频源码的主要功能] 1.短视频带货:关联商品的短视频封面会有商品标识,短视频内容中会弹出商品链接 2.直播带货:短视频源码支持直播功能,直播间内可开启带货功能 3.邀请赚钱:用 ...

  8. 浅谈:1对1直播源码一对一视频聊天源码

    借助直播行业2018年平稳发展的东风,1对1直播源码开源平台开发受到了广泛地关注.正如直播源码那样,通过1对1直播源码可以快速搭建部署一个一对一视频聊天系统平台.而一对一视频聊天系统平台的功能具有更强 ...

  9. 医院在线问诊源码 医院视频问诊源码 医院小程序源码

    开发环境:ASP.NET + C# + VS2019 + SQL2008 系统简介: 预约挂号 可以选择日期和时间在线挂号,支持预约挂号,预约医院的号源,节省看病时间的同时也能使医院提升诊疗效率,充分 ...

最新文章

  1. Android数据存储之SD卡
  2. linux 提取某一行内容
  3. asp从后台调出的公式怎么参与运算_吴望一《流体力学》第一章中微分运算公式的初等证明...
  4. 【转载】不带www跳转www.设定网站唯一入口,提升权重!
  5. C++ 常用设计模式
  6. 专题开发十三:JEECG微云快速开发平台-附录
  7. 做网店大家千万要注意
  8. Spring Boot 返回 XML 数据,一分钟搞定!
  9. Eplan绘图软件:西门子S7-1500部件
  10. 怎么尽可能将pdf文件压缩到最小
  11. excel如何把多张表合并成一个表_如何将多个 Excel 工作簿的工作表合并成一个工作表?...
  12. 风暴英雄 服务器在哪个文件夹,《风暴英雄》国服官方答疑 玩家最关心的问题都在这里...
  13. 如何确定网站的关键词呢
  14. 入侵检测工具AIDE极简教程
  15. java 移动短代支付_运营商支付/短代支付的市场前景如何?
  16. 怎么用计算机打印出东西,怎样在电脑上打印东西_怎么用电脑打印东西
  17. 将Twitter4j与Scala结合使用以执行用户操作
  18. 多元函数牛顿法求函数极小值
  19. 交易风云-MAM、PAMM、社区交易&KlipC:如何选择多账户管理系统
  20. 2019中国彩票市场行业分析

热门文章

  1. 【历史上的今天】11 月 5 日:初代安卓系统公开发布;诺基亚更名为微软 Lumia;开放手持设备联盟成立
  2. uniapp延迟执行_【 vue / uniapp 】延迟加载数据的特殊处理
  3. 【HTML】表格标签,map,iframe,h5标签,语义化,标签分类,role,aria-*
  4. linux能否批量重命名,linux批量重命名方法
  5. Android与uni-app 互相通信案例(包含源代码)
  6. networkx 画图中文方块
  7. LeetCode刷题:871. Minimum Number of Refueling Stops
  8. android 汉字笔画拆写,基于形状分割的手写汉字笔划提取方法
  9. Android 数据库知识回顾
  10. N1盒子丢失bootloader救砖方法