阿里云视频服务-》获取视频播放地址

公共请求参数是指每一个接口都需要使用到的参数:
名称  类型  必填项 描述
Action  String  是   操作接口名,系统规定参数,取值: GetPlayInfo
VideoId String  是   视频ID
Format  String  否   返回值的类型,支持JSON与XML,默认为XML。
Version String  是   API版本号,为日期形式:YYYY-MM-DD,本版本对应为2017-03-21。
AccessKeyId String  是   阿里云颁发给用户的访问服务所用的密钥ID。
Signature   String  是   签名结果串,关于签名的计算方法,请参见签名机制。
SignatureMethod String  是   签名方式,目前支持HMAC-SHA1。
Timestamp   String  是   请求的时间戳。日期格式按照ISO8601标准表示,并需要使用UTC时间。格式为:YYYY-MM-DDThh:mm:ssZ
例如,2017-3-29T12:00:00Z(为北京时间2017329日的2000秒。
SignatureVersion    String  是   签名算法版本,目前版本是1.0。
SignatureNonce  String  是   唯一随机数,用于防止网络重放攻击。用户在不同请求间要使用不同的随机数值。
    /**
     * PHP 获取视频播放地址
     */
    public function index($VideoId) {
        date_default_timezone_set("UTC");//阿里云服务时间为UTC
        $apiParams['Format'] = 'JSON';
        $apiParams['VideoId'] = $VideoId;
        $apiParams['Version'] = '2017-03-21';
        $apiParams['SignatureMethod'] = 'Hmac-SHA1';
        $apiParams['SignatureNonce'] = substr(md5(rand(1, 99999999)), rand(1, 9), 14);
        $apiParams['SignatureVersion'] = '1.0';
        $apiParams['Action'] = 'GetPlayInfo';
        $apiParams['AccessKeyId'] = 'M4baa4qQsmkTzBwc';//阿里云密钥ID
        $apiParams['Timestamp'] = date("Y-m-d\TH:i:s\Z");

        $accessSecret = 'bva1ys7WnEPEaMImONunZkYhMBrhxk';//阿里云密钥
        $apiParams['Signature'] = $this->computeSignature($credential = "GET",$apiParams, $accessSecret);//签名
        $uri = http_build_query($apiParams);
        $url = 'http://vod.cn-shanghai.aliyuncs.com/?' . $uri;
        return $this->curl($url);

    }

    /**
     * CURL
     */
    private function curl($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $result = curl_exec($ch);
        return $result;
    }

    /**
     * 阿里云签名机制(生成签名)
     */
    private function computeSignature($credential, $parameters, $accessKeySecret) {
        ksort($parameters);
        $stringToSign = strtoupper($credential) . '&' . $this->percentEncode('/') . '&';
        $tmp = "";
        foreach ($parameters as $key => $val) {
            $tmp .= '&' . $this->percentEncode($key) . '=' . $this->percentEncode($val);
        }
        $tmp = trim($tmp, '&');
        $stringToSign = $stringToSign . $this->percentEncode($tmp);
        $key = $accessKeySecret . '&';
        $hmac = hash_hmac("sha1", $stringToSign, $key, true);
        return base64_encode($hmac);

    }
    /**
     * url编码 
     * @param $str 
     * @return mixed|string 
     */
    protected function percentEncode($value = NULL) {
        $en = urlencode($value);
        $en = str_replace("+", "%20", $en);
        $en = str_replace("*", "%2A", $en);
        $en = str_replace("%7E", "~", $en);
        return $en;
    }

输出结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/u013257111/article/details/76187115