in src/OSS/OssClient.php [940:967]
public function signRtmpUrl($bucket, $channelName, $timeout = 60, $options = NULL)
{
$this->precheckCommon($bucket, $channelName, $options, false);
$expires = time() + $timeout;
$proto = 'rtmp://';
$hostname = $this->generateHostname($bucket);
$cano_params = '';
$query_items = array();
$params = isset($options['params']) ? $options['params'] : array();
uksort($params, 'strnatcasecmp');
foreach ($params as $key => $value) {
$cano_params = $cano_params . $key . ':' . $value . "\n";
$query_items[] = rawurlencode($key) . '=' . rawurlencode($value);
}
$resource = '/' . $bucket . '/' . $channelName;
$string_to_sign = $expires . "\n" . $cano_params . $resource;
$cred = $this->provider->getCredentials();
$this->checkCredentials($cred);
$signature = base64_encode(hash_hmac('sha1', $string_to_sign, $cred->getAccessKeySecret(), true));
$query_items[] = 'OSSAccessKeyId=' . rawurlencode($cred->getAccessKeyId());
$query_items[] = 'Expires=' . rawurlencode($expires);
$query_items[] = 'Signature=' . rawurlencode($signature);
return $proto . $hostname . '/live/' . $channelName . '?' . implode('&', $query_items);
}