<?php
error_reporting(0);
date_default_timezone_set("UTC");
$n = [
'CCTV1HD'=>[20240709,215634,10,32],//CCTV1高清
'CCTV2HD'=>[20240709,215634,10,20],//CCTV2高清
'CCTV4HD'=>[20240709,215634,10,16],//CCTV4高清
'CCTV9HD'=>[20240709,215634,10,16],//CCTV9高清
'CCTV10HD'=>[20240709,215634,10,19],//CCTV10高清
'CCTV11HD'=>[20240709,215634,10,99],//CCTV11高清
'CCTV12HD'=>[20240709,215634,10,19],//CCTV12高清
'CCTV13HD'=>[20240709,215634,10,60],//CCTV13高清
'CCTV14HD'=>[20240709,215635,10,19],//CCTV14高清
'CCTV15'=>[20240709,215635,10,18],//CCTV15
'ANHUIHD'=>[20240709,215645,10,19],//安徽卫视高清
'BEIJHD'=>[20240709,215645,10,19],//北京卫视高清
'DONGNHD'=>[20240709,215645,10,29],//福建东南卫视高清
'GSWS'=>[20240709,215636,10,17],//甘肃卫视
'GUANGDHD'=>[20240709,215644,10,39],//广东卫视高清
'GUANGXHD'=>[20240709,215644,10,37],//广西卫视高清
'GUIZHD'=>[20240709,215644,10,85],//贵州卫视高清
'HAINHD'=>[20240709,215644,10,15],//海南卫视高清
'HAIBHD'=>[20240709,215644,10,26],//河北卫视高清
'HENHD'=>[20240709,215644,10,17],//河南卫视高清
'HEILJHD'=>[20240709,215644,10,27],//黑龙江卫视高清
'HUBEIHD'=>[20240709,215643,10,41],//湖北卫视高清
'JYJSHD'=>[20240709,215636,10,94],//湖南金鹰纪实高清
'JYKTHD'=>[20240709,215637,10,241],//湖南金鹰卡通高清
'HUNANHD'=>[20240709,215643,10,114],//湖南卫视高清
'JILHD'=>[20240709,215643,10,22],//吉林卫视高清
'JIANGSHD'=>[20240709,215643,10,61],//江苏卫视高清
'JXDS'=>[20240709,215638,10,17],//江西都市
'FSGW'=>[20240709,215637,10,19],//江西风尚购物
'JXGGNY'=>[20240709,215638,10,30],//江西公共农业
'JXJY'=>[20240709,215638,10,13],//江西教育
'JXJJSHHD'=>[20240709,215637,10,20],//江西经济生活高清
'JXSEHD'=>[20240709,215637,10,16],//江西少儿高清
'JXWSHD'=>[20240709,215637,10,17],//江西卫视高清
'JXXWHD'=>[20240709,215637,10,18],//江西新闻高清
'JXYS'=>[20240709,215637,10,21],//江西影视旅游
'LIAONHD'=>[20240709,215643,10,24],//辽宁卫视高清
'NMGWS'=>[20240709,215636,10,18],//内蒙古卫视
'NXWS'=>[20240709,215635,10,19],//宁夏卫视
'QHWS'=>[20240709,215635,10,17],//青海卫视
'SHANDHD'=>[20240709,215643,10,67],//山东卫视高清
'SXWS'=>[20240709,215635,10,18],//山西卫视
'SXTV'=>[20240709,215635,10,19],//陕西卫视
'DONGFHD'=>[20240709,215645,10,88],//上海东方卫视高清
'SHENZHD'=>[20240709,215642,10,10],//深圳卫视高清
'SICHD'=>[20240709,215642,10,95],//四川卫视高清
'TIANJHD'=>[20240709,215642,10,58],//天津卫视高清
'XZWS'=>[20240709,215635,10,17],//西藏卫视
'BTWS'=>[20240709,215636,10,15],//新疆兵团卫视
'XJWS'=>[20240709,215635,10,19],//新疆卫视
'YUNNHD'=>[20240709,215642,10,16],//云南卫视高清
'ZHEJHD'=>[20240709,215638,10,135],//浙江卫视高清
'CETV1HD'=>[20240709,215637,10,16],//中国教育1高清
'CETV4'=>[20240709,215637,10,18],//中国教育4
'CHONGQHD'=>[20240709,215642,10,19],//重庆卫视高清
'XDKT'=>[20240709,215636,10,19],//哈哈炫动
'CCTV3_HD'=>[20250107,185651,12.28,-1281673],//CCTV3高清
'CCTV5+HD'=>[20241108,'095220',13.62,-5425],//CCTV5+高清
'CCTV5_HD'=>[20250107,185457,13.02,-392707],//CCTV5高清
'CCTV6_HD'=>[20241230,160139,13.15,-113],//CCTV6高清
'CCTV8_HD'=>[20250115,163504,12.8,-1295402],//CCTV8高清
'CCTV16HD'=>[20250107,185509,13.33,-386284],//CCTV16高清
];
#回看测试:http://127.0.0.1/gcts.php?id=CCTV1HD&playseek=20250206190000-20250206193000
$id = str_replace(' ','+',$_GET['id']??'CCTV1HD');
if(!isset($n[$id])) die(header("HTTP/1.1 404"));
$update = $n[$id][0].$n[$id][1];
$cut = $n[$id][2]??'10';
$offset = $n[$id][3]??'16';
$now = time();
$ip = 'jxcbn.ws-cdn.gitv.tv';
$url_pre = 'http://'.$ip.'/hls/'.$id.'/'.$n[$id][0].'T'.$n[$id][1].'-1-';
$url_end = '.ts';
$playseek = $_GET['playseek']??'';
#模式判断
if ($playseek) {//回放
$t_arr = explode('-',$playseek);
$start = floor((strtotime($t_arr[0])-28800-strtotime($update))/$cut)-$offset+3;
$end = floor((strtotime($t_arr[1])-28800-strtotime($update))/$cut)-$offset+3;
$m3u8 = "#EXTM3U".PHP_EOL."#EXT-X-VERSION:3".PHP_EOL."#EXT-X-TARGETDURATION:$cut".PHP_EOL."#EXT-X-MEDIA-SEQUENCE:$start".PHP_EOL;
for (; $start < $end; $start++) {
$m3u8 .= "#EXTINF:$cut,".PHP_EOL.$url_pre.$start.$url_end.PHP_EOL;
}
$m3u8 .= "#EXT-X-ENDLIST";//结束标志
} else {//直播
$start = floor(($now-strtotime($update))/$cut-$offset);
$m3u8 = "#EXTM3U".PHP_EOL."#EXT-X-VERSION:3".PHP_EOL."#EXT-X-TARGETDURATION:$cut".PHP_EOL."#EXT-X-MEDIA-SEQUENCE:$start".PHP_EOL;//前4行
for ($i = 0; $i<3; $i++,$start++) {//后6行
$m3u8 .= "#EXTINF:$cut,".PHP_EOL.$url_pre.$start.$url_end.PHP_EOL;
}
}
header("Content-Type: application/vnd.apple.mpegURL");
header("Content-Disposition: inline; filename=$id.m3u8");
echo $m3u8;
?>