IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP网站升级https后如何引用http直播源hls? -> 正文阅读

[PHP知识库]PHP网站升级https后如何引用http直播源hls?

网站升级https后 发现使用http的hls直播源均无法正常播放了

网站引用了多个http hls直播源 如何才能让恢复使用呢 ?这里采用的是服务端转发 代码如下

<?php
error_reporting(0);
header("ACCESS-CONTROL-ALLOW-ORIGIN:*");

function get_url_contents($url)
{
    if (function_exists('curl_init')) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_URL, $url);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    } else {
        if (ini_get("allow_url_fopen") == "1") {
            return file_get_contents($url);
        }
    }
}

function resolve_hls($url)
{
    $url = trim(urldecode($url));
    $old = pathinfo($url);
    $m3u8 = get_url_contents($url);
    if (!empty($old['dirname'])) {
        if (strpos($m3u8,'EXT-X-STREAM-INF')!== false) {
            try {
                preg_match_all('/([\S]+)(\.m3u8)+(.*)?/i', $m3u8, $match);
                $new = $match[0][0];
                if (stripos($new, 'http:') !== false || stripos($new, 'https:') !== false || substr($new, 0, 2) == '//') {
                    $newUrl = $new;
                } else {
                    $newUrl = $old['dirname'] . '/' . $new;
                }
                resolve_hls($newUrl);
            }catch (\Exception $exception) {
                echo $exception->getMessage();
            }
        } else {
            try {
                preg_match_all('/([\S]+)(\.ts)+(.*)?/i', $m3u8, $match_ts);
                if(empty($match_ts[0][0])){
                    preg_match_all('/([\S]+)(\.aac)+(.*)?/i', $m3u8, $match_ts);
                }
                $new = $match_ts[0][0];
                if (stripos($new, 'http:') !== false || stripos($new, 'https:') !== false || substr($new, 0, 2) == '//') {
                echo $m3u8;
                } else {
                    $newUrl = $old['dirname'] . '/';
                echo preg_replace_callback('/([\S]+)(\.ts)+(.*)?/i', function ($mtches) use ($newUrl){
                    return 'https://qianxun.damicms.com/transhls.php?action=' . urlencode($newUrl . $mtches[0]);
                    }, $m3u8);
                }
            } catch (\Exception $exception) {
                echo $exception->getMessage();
            }
        }
    }
}
if (!empty($_GET['url'])) {
    $url = urldecode($_GET['url']);
    resolve_hls($url);
} else if(!empty($_GET['action'])){
    $url2 = trim(urldecode($_GET['action']));
    if(stripos($url2, 'https:') !== false){
    header("Location:{$url2}");
    }else{
    $m3u8 = get_url_contents($url2);
    echo $m3u8;
    }
}

?>

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 14:52:17  更:2021-08-20 14:52:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/11 20:16:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码