阿里视频直播播流拉流地址生成跟推流的一样,然后播流不能不能用,鉴
接手的项目使用了原先阿里中心推流的方式,可是阿里那边已经说了汇总新推流的方式吉祥下线,只维持原先旧的中心推流,文档也将以推流、播流域名分开设置的方式进行推播。可恨的是阿里已经不在提供自己的sdk,要接入只能找七牛的sdk,不过好在推流的服务商多种多样,可以按照需求自行选择。

按照指引生成两个域名

接下来就开始盘它,从生成推流域名开始,生成推流域名的时候很顺利,就是播流的老师播放不了,翻了很多文档和资料还是没有进展。网上几乎全部都是这样写的,下面代码示范里,推流播流的key都是一样的:

由于:uri串一样、time超时时间戳也几乎一样、”-0-0-“暂时文档里都是固定的、key一样;所以MD5后得出的hash值结果也肯定一样的,所以推流的地址跟flash播放url的鉴权串是一模一样的,除了拼接的domain段:

后来还是提交了工单请教了客服。

原来播流地址的鉴权key和推流地址的鉴权key是可以不一样的。当然也可以设置一样。我看了看我自己配置的,由于不是我亲手弄得,就没注意这个事情。后来发现真的不一样。


那么!现在知道问题所在了,开始动手改代码,以下是php的代码:
public static function buildLiveStream(string $appName, string $stream, string $domain, string $pushKey='', string $pullKey=''): array
{
// $pushIni = 'rtmp://video-center.alivecdn.com/%s/%s?vhost=%s';
// $playIni = 'rtmp://%s/%s/%s';
$pushIni = config("wowo.live.push_url");
$playIni = config("wowo.live.pull_url");
// $push = sprintf($pushIni, $appName, $stream);
// $play = sprintf($playIni, $appName, $stream);
if($pullKey && $pushKey) {
// $auth = self::liveAuthKey($appName, $stream, $key);
$push = self::push_url($pushIni,$pushKey,'10800',$appName,$stream);
$play = self::push_url($playIni,$pullKey,'10800',$appName,$stream);
}
return [
'push'=>$push,
'play'=>$play
];
}