阿里云取出所有直播间的接口
上午一直在调试安卓同事的一个直播间接口
测试了好几种方法,最后快实现的时候,循环调用出现了问题
最后在 csdn上找到了解决方法
直接上代码吧,挺坑的,阿里的接口,也没注释,都不知道怎么做。
001 <?php
002 header("Content-type: text/html; charset=utf-8");
003 //phpinfo();
004 function curl_http_request($url,$data = null)
005 {
006 $ch = curl_init();
007 curl_setopt($ch, CURLOPT_URL, $url);
008 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
009 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
010 //如果$data不为空,则为POST请求
011 if (!empty($data)){
012 curl_setopt($ch, CURLOPT_POST, 1);
013 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
014 }
015 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
016 $output = curl_exec($ch);
017 $error = curl_error($ch);
018 curl_close($ch);
019 if ($error){
020 throw new Exception('请求发生错误:' . $error);
021 }
022 //$resultArr = json_decode($output, true);//将json转为数组格式数据
023 return $output;
024
025 }
026
027 function percent_encode($res){
028 $res=trim(utf8_encode(urlencode($res)));
029 //$res=utf8_encode($res);
030 $res=str_replace(array('+','*','%7E'), array('%20','%2A','~'), $res);
031 return $res;
032 }
033
034 function uuid($prefix = '')
035 {
036 $chars = md5(uniqid(mt_rand(), true));
037 $uuid = substr($chars,0,8) . '-';
038 $uuid .= substr($chars,8,4) . '-';
039 $uuid .= substr($chars,12,4) . '-';
040 $uuid .= substr($chars,16,4) . '-';
041 $uuid .= substr($chars,20,12);
042 return $prefix . $uuid;
043 }
044
045 function compute_signature($parameters, $access_key_secret){
046 ksort($parameters);
047 $canonicalizedQueryString = '';
048 foreach ($parameters as $k => $v) {
049 if(empty($canonicalizedQueryString))
050 $canonicalizedQueryString .= percent_encode($k) . '=' . percent_encode($v);
051 else
052 $canonicalizedQueryString .= '&' . percent_encode($k) . '=' . percent_encode($v);
053 }
054 //var_dump($canonicalizedQueryString);
055 $stringToSign = 'GET&%2F&' . percent_encode($canonicalizedQueryString);
056 //var_dump($stringToSign);
057 $signature=base64_encode(hash_hmac("sha1",$stringToSign,$access_key_secret."&",true));
058 return $signature;
059 }
060
061 function compose_url($Action,$StreamName='',$AppName=''){
062 //$timestamp=strftime("%Y-%m-%dT%H:%M:%SZ",time());
063 $timestamp=gmdate("Y-m-d\TH:i:s\Z");
064 $access_key_id='xxxxxxx';
065 $access_key_secret='xxxxxxxxxxxxxxxxx';
066 $parameters = array(
067 'Format' => 'JSON',
068 'Version' => '2014-11-11',
069 'AccessKeyId' => $access_key_id,
070 'SignatureVersion' => '1.0',
071 'SignatureMethod' => 'HMAC-SHA1',
072 'SignatureNonce' => uuid(),
073 'TimeStamp' => $timestamp,
074 'Action' =>$Action,//DescribeCdnService
075 'DomainName' =>'xxx.xxxxx.com',
076 'AppName' =>$AppName,
077 'StreamName' =>$StreamName,
078 'StartTime' => '',
079 'EndTime' =>'',
080
081 );
082 $signature = compute_signature($parameters, $access_key_secret);
083 $canonicalizedQueryString='Signature='.urlencode($signature);
084 foreach ($parameters as $k => $v) {
085 $canonicalizedQueryString .= '&' . $k . '=' . percent_encode($v);
086 }
087 //var_dump("http://cdn.aliyuncs.com/?".$canonicalizedQueryString);
088
089
090 $url = "http://cdn.aliyuncs.com/?".$canonicalizedQueryString;
091 return $url;
092
093 }
094
095
096
097
098 //判断get参数是否存在
099 if(is_array($_GET)&&count($_GET)>0)
100 {
101
102 $url_list=compose_url("DescribeLiveStreamsOnlineList");
103
104 //第一个请求,获取参数
105 //直播列表
106 $result_lineList=array();
107 //拼接url
108
109 $array_string = curl_http_request($url_list);
110 $result =json_decode($array_string);
111 $object = json_decode(json_encode( $result),true);
112 $res_array = $object["OnlineInfo"]["LiveStreamOnlineInfo"];
113 if(empty($res_array)){
114 $content = Array();
115 $content["flag"]=0;
116 $resturn_str = json_encode($content);
117 echo $resturn_str;
118 }else{
119 $content = Array();
120 $content["flag"]=1;
121 $content["room"]=$res_array;
122 //$resturn_str = json_encode($content);
123 //echo $resturn_str;
124 //循环遍历每个直播间
125
126 for ($i= 0;$i< count($res_array); $i++){
127
128 $SteamName = $res_array[$i]["StreamName"];
129 //echo $SteamName;
130 $url_num=compose_url('DescribeLiveStreamOnlineUserNum',$SteamName,'xxxx');
131
132 $array_string_num = curl_http_request($url_num);
133 $result_num = json_decode($array_string_num);
134 $object_num = json_decode(json_encode( $result_num),true);
135
136 //获取当前直播间的人数
137 //$resturn_str = json_encode($object_num);
138 //echo $resturn_str;
139 //echo "
140 ";
141
142 $UserNumber = $object_num["OnlineUserInfo"]["LiveStreamOnlineUserNumInfo"][0]["UserNumber"];
143 $content["room"][$i]["UserNumber"]=$UserNumber;
144
145 //$resturn_str = json_encode($content);
146 //echo $resturn_str;
147
148 //echo $content;
149
150 }
151
152 //得到最终数据
153 $resturn_str = json_encode($content);
154 echo $resturn_str;
155
156
157 }
158
159 }else{
160
161 $url1=compose_url("DescribeLiveStreamsOnlineList");
162
163 $url= compose_url('DescribeLiveStreamOnlineUserNum','StreamName1','xxxx');
164 echo $url;
165
166 }
167
168
169 ?>文章参考: http://blog.csdn.net/yfgcq/article/details/52169901
他把所有的功能都实现了, 直接使用就可以了!
上一篇:摄像头爆破软件天巡6.0
下一篇:2019年新年快乐