|
山东临沂,**了ts
[hide]
- <?php
- /**
- * 临沂电视台流媒体**
- * **m3u8播放列表和TS片段,解决防盗链问题
- */
- // 频道映射配置
- $channelMap = [
- 'lyzh' => [
- 'name' => '临沂综合',
- 'url' => 'https://m3u8-channel.lytv.tv/nmip-media/channellive/channel111841/playlist.m3u8',
- 'group' => '电视',
- 'type' => 'video'
- ],
- 'lyjj' => [
- 'name' => '临沂经济',
- 'url' => 'https://m3u8-channel.lytv.tv/nmip-media/channellive/channel115062/playlist.m3u8',
- 'group' => '电视',
- 'type' => 'video'
- ],
- 'lygg' => [
- 'name' => '临沂公共',
- 'url' => 'https://m3u8-channel.lytv.tv/nmip-media/channellive/channel113571/playlist.m3u8',
- 'group' => '电视',
- 'type' => 'video'
- ],
- 'lyjjgb' => [
- 'name' => '临沂经济广播',
- 'url' => 'https://m3u8-channel.lytv.tv/nmip-media/audiolive/audio122068/playlist.m3u8',
- 'group' => '广播',
- 'type' => 'audio'
- ],
- 'lyjtlygb' => [
- 'name' => '临沂交通旅游广播',
- 'url' => 'https://m3u8-channel.lytv.tv/nmip-media/audiolive/audio120987/playlist.m3u8',
- 'group' => '广播',
- 'type' => 'audio'
- ]
- ];
- // 获取远程内容
- function fetchContent($url) {
- $options = [
- 'http' => [
- 'method' => "GET",
- 'header' =>
- "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\r\n" .
- "Referer: https://www.ilinyi.net/\r\n" .
- "Accept: */*\r\n" .
- "Accept-Language: zh-CN,zh;q=0.9\r\n"
- ],
- 'ssl' => [
- 'verify_peer' => false,
- 'verify_peer_name' => false
- ]
- ];
-
- $context = stream_context_create($options);
- $content = @file_get_contents($url, false, $context);
-
- return $content !== FALSE ? $content : false;
- }
- // 处理TS片段**
- if (isset($_GET['ts'])) {
- $tsUrl = base64_decode($_GET['ts']);
- $tsContent = fetchContent($tsUrl);
-
- if ($tsContent !== false) {
- header('Content-Type: video/mp2t');
- header('Cache-Control: public, max-age=300');
- echo $tsContent;
- } else {
- http_response_code(500);
- echo "无法获取TS片段";
- }
- exit;
- }
- // 处理m3u8播放列表**
- if (isset($_GET['id'])) {
- $channelId = $_GET['id'];
-
- if (isset($channelMap[$channelId])) {
- $channel = $channelMap[$channelId];
- $m3u8Url = $channel['url'];
-
- $m3u8Content = fetchContent($m3u8Url);
-
- if ($m3u8Content !== false) {
- // 处理m3u8内容,重写TS片段URL
- $lines = explode("\n", $m3u8Content);
- $processedContent = "";
-
- foreach ($lines as $line) {
- if (empty(trim($line))) {
- $processedContent .= "\n";
- continue;
- }
-
- // 保留注释行和标签行
- if ($line[0] == '#') {
- $processedContent .= $line . "\n";
- continue;
- }
-
- // 处理TS片段URL
- if (strpos($line, '.ts') !== false || strpos($line, '.m4s') !== false) {
- // 如果是相对路径,转换为绝对路径
- if (strpos($line, 'http') !== 0) {
- $baseUrl = dirname($m3u8Url);
- if (substr($baseUrl, -1) != '/') {
- $baseUrl .= '/';
- }
- $line = $baseUrl . $line;
- }
-
- // 将TS URL编码并重写为**URL
- $encodedTsUrl = base64_encode($line);
- $proxyUrl = $_SERVER['PHP_SELF'] . '?ts=' . $encodedTsUrl;
- $processedContent .= $proxyUrl . "\n";
- } else {
- $processedContent .= $line . "\n";
- }
- }
-
- // 设置正确的Content-Type
- if ($channel['type'] === 'audio') {
- header('Content-Type: audio/x-mpegurl');
- } else {
- header('Content-Type: application/vnd.apple.mpegurl');
- }
-
- echo $processedContent;
- } else {
- http_response_code(500);
- echo "无法获取频道内容";
- }
- exit;
- } else {
- http_response_code(404);
- echo "频道不存在";
- exit;
- }
- }
- // 生成M3U播放列表
- header('Content-Type: text/plain; charset=utf-8');
- if (isset($_GET['download']) || !isset($_GET['id'])) {
- if (isset($_GET['download'])) {
- header('Content-Disposition: attachment; filename="linyi_channels.m3u"');
- }
- echo "#EXTM3U\n";
- echo "# Generated by Linyi TV Proxy\n";
- echo "# 使用TS**模式,解决防盗链问题\n";
- echo "# Referer: https://www.ilinyi.net/\n\n";
- // 输出所有频道
- foreach ($channelMap as $id => $channel) {
- $name = $channel['name'];
- $group = $channel['group'];
-
- echo "#EXTINF:-1 tvg-id="$id" group-title="$group",$name\n";
-
- // 生成**播放URL
- $playUrl = $_SERVER['PHP_SELF'] . '?id=' . $id;
- echo "$playUrl\n\n";
- }
- }
- ?>
复制代码- #EXTM3U
- #EXTINF:-1 tvg-name="临沂综合" tvg-logo="" group-title="山东",临沂综合
- http://127.0.0.1/linyi.php?id=lyzh
- #EXTINF:-1 tvg-name="临沂经济" tvg-logo="" group-title="山东",临沂经济
- http://127.0.0.1/linyi.php?id=lyjj
- #EXTINF:-1 tvg-name="临沂公共" tvg-logo="" group-title="山东",临沂公共
- http://127.0.0.1/linyi.php?id=lygg
- #EXTINF:-1 tvg-name="临沂经济广播" tvg-logo="" group-title="山东",临沂经济广播
- http://127.0.0.1/linyi.php?id=lyjjgb
- #EXTINF:-1 tvg-name="临沂交通旅游广播" tvg-logo="" group-title="山东",临沂交通旅游广播
- http://127.0.0.1/linyi.php?id=lyjtlygb
复制代码 |
|