七牛云,Yii2.0 音频转码(arm转mp3)中遇到的,回调失败,任务执行成功的问题

来源:互联网 发布:studded mac 编辑:程序博客网 时间:2024/04/28 22:29

首先,还是要感谢七牛云平台。这样就让我们让程序可以更好的迁移。

原先转码都是在服务器上搭建ffmpeg,这个虽好,但真的不适合迁移程序,这次就用七牛云来做音频的转码和拼接工作。

其次,还是吐槽七牛云的文档。断断续续的关注了他好几年了,说实话 ,文档是真够垃圾的。

进入正题。

private function upchange($filePath,$mediaid){    $accessKey = trim('');    $secretKey = trim('');    $auth = new Auth($accessKey, $secretKey);    $uploadMgr = new UploadManager();    $bucket = trim('');    $pipeline = trim('');//这个是指的新建的队列名字,要和bucket区分开。    $savekey = \Qiniu\base64_urlSafeEncode($bucket.':'.$mediaid.'.mp3');    $key = $mediaid.'.amr'; //七牛云中保存的amr文件名    //转码完成后通知到你的业务服务器。(公网可以访问,并相应200 OK)    $notifyUrl = '';//这个是回调地址,着重说一下这个。    //设置转码参数    $fops = "avthumb/mp3/ab/320k/ar/44100/acodec/libmp3lame";    $fops = $fops.'|saveas/'.$savekey;    $policy = array(        'persistentOps' => $fops,        'persistentPipeline' => $pipeline,        'persistentNotifyUrl'=>$notifyUrl,    );    //指定上传转码命令    $uptoken = $auth->uploadToken($bucket, null, 3600, $policy);    list($ret, $err) = $uploadMgr->putFile($uptoken, $key, $filePath);    if ($err !== null) {        return false;    }else {        $bucketMgr = new BucketManager($auth);        $bucketMgr->delete($bucket, $key);        return $ret['key'];    }}
上传并转码的方法就是上面这些。其中,遇到的 回调失败,任务执行成功的问题 这个问题。有的网友回复说是需要在回调中响应给七牛一个200 的状态码。
我也是这么做的,其实没必要,只要你的网也能访问到即可。(这种想法是错误至极的,我就是没弄明白这个)
其实这里需要用POST去请求一下。因为七牛是POST给你响应体的。
使用如下:

curl -X POST -d "name=test.jpg" http://your_notify_url

这个就能测试你的回调是否能正确响应。

而对于我这个来说,当然是,开启csrf验证,七牛咋可能这样正确请求到呢。就这么简单,关闭就行了。


阅读全文
1 0
原创粉丝点击