IPTV tvb iNews PHP

thapana · 2024年07月23日 · 最后由 thapana 回复于 2024年07月26日 · 944 次阅读
<?php
/*
    .php?id=0&hq 無線新聞台1080P
    .php?id=0 無線新聞台720P
    .php?id=1 無線新聞台360P
    .php?id=2&hq 無線財經·體育·資訊台1080P
    .php?id=2 無線財經·體育·資訊台720P
    .php?id=3 無線財經·體育·資訊台360P
    .php?id=4&hq 事件直播頻道1 1080P(全清晰度)
    .php?id=4 事件直播頻道1 720P
    .php?id=5 事件直播頻道1 576P
    .php?id=6&hq 事件直播頻道2 1080P(全清晰度)
    .php?id=6 事件直播頻道2 720P
    .php?id=7 事件直播頻道2 576P
*/
$id = $_GET['id'];
$ids = ['I-NEWS','I-NEWS','I-FINA','I-FINA','NEVT1','NEVT1','NEVT2','NEVT2'];
$hq = $_GET['hq'];
if(!isset($ids[$id])) {
    exit();
};
$clientIP = $_SERVER['REMOTE_ADDR'];

// 检查是否同时有IPv4和IPv6地址
if (strpos($clientIP, ',') !== false) {
    // 同时有IPv4和IPv6地址,分离出来
    $ipList = explode(',', $clientIP);
    $ipv6 = trim($ipList[0]); // 取第一个IP(IPv6)
    $ipv4 = trim($ipList[1]); // 取第二个IP(IPv4)

    // 优先使用IPv6
    $ip = $ipv6;
} elseif (filter_var($clientIP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
    // 只有IPv6地址
    $ip = $clientIP;
} else {
    // 只有IPv4地址 
    $ip = $clientIP;
}

$headers = array(
    'User-Agent: Dart/2.19 (dart:io)',
    'Content-Type: application/json',
    'Accept-Encoding: gzip',
    'Host: inews-api.tvb.com', 
    'CLIENT-IP: '.$ip,
    'X-FORWARDED-FOR: '.$ip
);

// 其他代码保持不变
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'https://inews-api.tvb.com/news/checkout/live/hd/ott_'.$ids[$id].'_h264?profile=safari');
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
$data = curl_exec($ch);
curl_close($ch);
$json = json_decode($data);
$url = $json->content->url;
if(isset($hq)) {
    if($id == '4' || $id == '5' || $id == '6' || $id == '7') {
        header('location:'.preg_replace('/&p=(.*?)$/','',$url->hd));
    } else {
        header('location:'.preg_replace('/&p=(.*?)$/','&p=3000',$url->hd));
    };
} else if($id == '0' || $id == '2' || $id == '4' || $id == '6') {
    header('location:'.$url->hd);
} else {
    header('location:'.$url->sd);
};

增加了互动窗的事件 1 和事件 2

值得注意的是,如果使用了广告拦截的,一定要对 ads.cdn.tvb.com 放行,tvb 很聪明把 drm 的 keys 放在这个域名,一旦拦截广告,也同时播放不了电视。😂

感谢,已观看。

可以看,在只能在网页上播放,在播放器里不能播放。

ck95960 回复

因为有 drm,ads.cdn.tvb.com 会加载 keys,如果播放器支持加载 keys,也可以放。

ck95960 回复

如果这个代码是旧的那个 tvb.php,我用 ios 的 aptv 可以播放, 有 2 个方法,一个是 aptv 开科学访问第一次,拿到了 key 后就可以随便看, 一个就是网页打开一次,然后 aptv 就可以随便看。

如果还是看不成,那就必须开科学才能看

宝塔家庭内网服务器无法播放

感谢分享,牛逼了大哥😄

倒也不用这么麻烦。。

tvb 的源很麻烦,音频和视频是分开的,而且码率也是分开的,还有 drm 和 cookie 验证,播放很复杂,首次加载很久

有 TVB 生活台的吗

需要 登录 后方可回复, 如果你还没有账号请 注册新账号