NOW直播解析源码
<?php
//https://now.qq.com/cgi-bin/now/web/room/get_room_info_v2?room_id=1983753
//https://now.qq.com/cgi-bin/now/web/user/get_personal_live_rcmd_read?_=0.6791041731369902&bkn=869715713&num=19&tab_id=2
//https://now.qq.com/pc/index.html?roomid=1210251521
//https://now.qq.com/h5/index.html?roomid=79072731
//https://now.qq.com/cgi-bin/now/web/room/get_live_room_url?platform=4&room_id=1210676514
//require_once(“../include/global.inc.php");
echo json_encode(Now::parse($url));
/**
*
*/
class Now
{
public static function parse($url)
{
parse_str(parse_url($url)[“query"]);
if($roomid){
return self::get_room_info_v2($roomid);
}
}
public static function get_room_info_v2($room_id)
{
$api = “https://now.qq.com/cgi-bin/now/web/room/get_room_info_v2?room_id=$room_id";
$content = self::curl($api);
$data = json_decode($content,true)[“result"];
$is_on_live = $data[“is_on_live"];
if($is_on_live){//是否直播
return self::get_live_room_url($room_id);
}else{
if(!emptyempty($data[“vid"])){
$vid = $data[“vid"];
return self::get_record_room_info($vid);
}else{
return GlobalBase::get_unknown_video();
}
}
}
public static function get_record_room_info($vid)
{
$api = “https://now.qq.com/cgi-bin/now/web/room/get_record_room_info?vid=$vid";
$content = self::curl($api);
$data = json_decode($content,true)[“result"];
$record_video_url = $data[“record_video_url"];
$video_cover_url = $data[“video_cover_url"];
$videoinfo[“poster"] = $video_cover_url;
$videoinfo[“video"][“file"] = $record_video_url;
$videoinfo[“video"][“type"] = “video/m3u8";
return $videoinfo;
}
public static function get_live_room_url($room_id)
{
$api = “https://now.qq.com/cgi-bin/now/web/room/get_live_room_url?platform=4&room_id=$room_id";
$content = self::curl($api);
$data = json_decode($content,true)[“result"];
$videoURLList = $data[“videoURLList"];
foreach ($videoURLList as $key => $value) {
if (GlobalBase::is_ipad()) {
$videoinfo[“url"]= $value;
break;
}else{
switch ($key) {
case 0:$def = “自动";break;
case 1:$def = “高清";break;
case 2:$def = “标清";break;
case 3:$def = “流畅";break;
}
$videoinfo[“live"] = true;
$video[0] = $value;
$video[1] = “video/m3u8";
$video[2] = $def;
$video[3] = $key != 0 ? 0 : 10;
$videoinfo[“video"][$key] = $video;
}
}
return $videoinfo;
}
public static function curl($url)
{
$params[“ua"] = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36";
return GlobalBase::curl($url,$params);
}
}
?>