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

本文介绍如何利用七牛云平台进行音频文件的转码和拼接操作,包括使用PHP实现的具体代码示例,以及解决回调失败问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

原先转码都是在服务器上搭建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验证,七牛咋可能这样正确请求到呢。就这么简单,关闭就行了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值