zoukankan      html  css  js  c++  java
  • PHP 实现抖音视频去水印播放

    原理

    # 播放地址
    https://aweme.snssdk.com/aweme/v1/playwm/?video_id=。。。。。
    # 无水印地址
    https://aweme.snssdk.com/aweme/v1/play/?video_id=。。。。。
    # 区别
    参数 paly/playwm
    # 注意
    据推测,犹豫抖音对PC做了限制,现在只有模拟手机发送请求才可以实现无水印播放。
    

    代码处理

    /**
     * 返回无水印播放地址
     * @desc 使用方法 域名url=视频的分享地址
     */  
    public function index()
    {
        // 通过 url 获取到 解析后的地址
        $url = $_GET['url'];
        $res = $this->curl_http_exec($url);
        preg_match('/href="(.*?)">Found/', $res, $matches);
        $url_share = $matches[1];
        // 根据解析后的地址获取到 item_ids
        preg_match('/video/(.*?)//', $url_share, $matches);
        $item_ids = $matches[1];
        // 根据 item_ids 获取播放地址
        $arr = json_decode($this->curl_http_exec('https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=' . $matches[1]), true);
        $url_play = $arr['item_list'][0]["video"]["play_addr"]["url_list"][0];
        // 根据播放地址 获取到无水印播放地址
        $url_play_remove_mark = str_replace('playwm', 'play', $url_play);
        preg_match('/href="(.*?)">Found/', $this->curl_http_exec($url_play_remove_mark), $matches);
        $videoUrl = str_replace('&', '&', $matches[1]);
        echo $videoUrl;
    }
    
    /**
     * 获取地址中的内容
     * @param $url
     * @return bool|string
     */
    public function curl_http_exec($url)
    {
        // $Header = array("User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1");
        $Header = array("User-Agent:Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1");
        $con = curl_init((string)$url);
        curl_setopt($con, CURLOPT_HEADER, false); # 启用时会将头文件的信息作为数据流输出。
        curl_setopt($con, CURLOPT_SSL_VERIFYPEER, false); # 禁用后cURL将终止从服务端进行验证。
        curl_setopt($con, CURLOPT_RETURNTRANSFER, true); # 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
        curl_setopt($con, CURLOPT_HTTPHEADER, $Header); # 用来设置HTTP头字段的数组
        curl_setopt($con, CURLOPT_TIMEOUT, 5000); # 设置cURL允许执行的最长秒数。
        $result = curl_exec($con); # 抓取URL并把它传递给浏览器
        curl_close($con); # //关闭cURL资源,并且释放系统资源
        return $result;
    }
    
  • 相关阅读:
    FMDB线程安全
    FMDB的使用
    iOS【手机验证码】判断手机号是否合法
    UIScrollView UIScrollViewDelegate
    iOS苹果开发者常用网站
    < meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" />
    CSS布局口诀
    css垂直居中
    在js中使用createElement创建HTML对象和元素
    jQuery-对Radio/CheckBox的操作集合
  • 原文地址:https://www.cnblogs.com/laowenBlog/p/13595599.html
Copyright © 2011-2022 走看看