TP+阿里云推流截图

    public function catchPic(){
     		$stream = '';//流id(在阿里云申请服务时可以获得)
            $param = [
                'Action' => 'CreateStreamSnapshot',
                'Id' => $stream
            ];
            $pic = $this->getSignature($param);
            $data = json_decode($pic,true);
            if(isset($data['OssObject'])){
                $res = $this->signedUrl($data['OssObject'],$data['OssBucket']);
                //$res返回的链接就是图片链接,但是有的情况需要用oss链接,在阿里云图片里面设置自定义链接
                $url = str_replace("http://rtmp321.oss-cn-shenzhen.aliyuncs.com","XXX(OSS链接)",$res);
            }
        return app('json')->success();
    }
    
  function getSignature($data = [])
    {
        $key = '';
        $secret = '';
		//这是请求api 的公共请求参数,
        $publicParams = array(
            "Format" => "JSON",
            "Version" => "2018-12-12",
            "AccessKeyId" => $key,
            "Timestamp" => date('Y-m-d\TH:i:s\Z', time() - date('Z')),
            "SignatureMethod" => "HMAC-SHA1",
            "SignatureVersion" => "1.0",
            "SignatureNonce" => substr(md5(rand(1, 99999999)), rand(1, 9), 14),
        $params = array_merge($publicParams,$data);
        $params['Signature'] =  $this->sign($params, $secret);
        $uri = http_build_query($params);
        $url = 'https://vs.cn-shenzhen.aliyuncs.com/?'.$uri;
        $res = $this->curlGetAndPostl($url);
        return $res;
    }

function sign($params, $accessSecret, $method = "GET")
    {
        ksort($params);
        $stringToSign = strtoupper($method) . '&' . $this->percentEncode('/') . '&';
        $tmp = "";
        foreach ($params as $key => $val) {
            $tmp .= '&' . $this->percentEncode($key) . '=' . $this->percentEncode($val);
        }
        $tmp = trim($tmp, '&');
        $stringToSign = $stringToSign . $this->percentEncode($tmp);
        $key = $accessSecret . '&';
        $hmac = hash_hmac("sha1", $stringToSign, $key, true);
        return base64_encode($hmac);
    }

/**
     *  url  是远程的请求地址
     * params 是数据 get下是 字符串
     * ispost 是开关 1是开启post请求  默认get请求
     **/
    function curlGetAndPostl($url, $params = false, $ispost = 0)
    {
        $httpInfo = array();
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_USERAGENT, 'JuheData');
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        if ($ispost) {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));//这里要注意  不然有些服务端获取不到数据
            curl_setopt($ch, CURLOPT_URL, $url);
        } else {
            if ($params) {
                curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
            } else {
                curl_setopt($ch, CURLOPT_URL, $url);
            }
        }
        $response = curl_exec($ch);
        if ($response === FALSE) {
            //echo "cURL Error: " . curl_error($ch);
            return false;
        }
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
        curl_close($ch);
        return $response;
    }
 function percentEncode($value = null)
    {
        $en = urlencode($value);
        $en = str_replace("+", "%20", $en);
        $en = str_replace("*", "%2A", $en);
        $en = str_replace("%7E", "~", $en);
        return $en;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值