七牛云音频拼接

        最近做的一个项目有一个七牛云音频拼接的功能需求,但是拼接完成后会有一个延迟问题,简述为:音频A拼接音频B生产音频C,最开始,我直接将音频C覆盖音频A(这样理论上访问音频A的路径播放的是音频C),会出现音频拼接之后一段时间之内音频C并未覆盖音频A,在问了七牛云技术人员之后,提出的解决方案是,将音频C用一个新路径存放,用该方法之后,此问题得到了改善,但并未完全解决,最后通过与七牛云技术人员的沟通,得到一个解决办法,那就是用异步回调来规避七牛云未将拼接后的音频同步之前的访问,大概思路是,在提交拼接并七牛云那边同步后,七牛云会进行异步拼接结果的通知,根据七牛云的通知来对音频进行一个释放,这样就解决了音频拼接后更新不及时的问题。

拼接代码:

$config['savekey'] = str_replace(
                    ['$(year)', '$(mon)', '$(day)', '$(hour)', '$(min)', '$(sec)', '$(etag)', '$(ext)', '$(fname)', '$(fprefix)'],
                    ['{year}', '{mon}', '{day}', '{hour}', '{min}', '{sec}', '{filemd5}', '{.suffix}', '{filename}', '{fileprefix}'],
                    $config['savekey']
                );
                $auth = new Auth($config['accessKey'], $config['secretKey']);
                $obj = new \Qiniu\Processing\PersistentFop($auth);
                $image_key = ltrim(str_replace($config['cdnurl'],'',$content[0]), '/');
                $fops = 'avconcat/1/format/mp3';
                foreach ($content as $key => $audio){
                    $sound_avinfo = json_decode(file_get_contents(cdnurl($audio, true) . '?avinfo'), true); // 获取音频元信息
                    $sound_duration += $sound_avinfo['format']['duration'];
                    if($key > 0){
                        $as =  $fops .= '/'.\Qiniu\base64_urlSafeEncode(cdnurl($audio,true));
                    }
                }
                $bucket = $config['bucket'];
                $savesKeyUrl = 'uploads/'.date('Ymd').'/'.Random::alnum(32).'.mp3';
                $savesKey = '/'.$savesKeyUrl;
//                $fops .= '|saveas/'.\Qiniu\entry($config['bucket'], $image_key);
                $fops .= '|saveas/'.\Qiniu\base64_urlSafeEncode("$bucket:$savesKeyUrl");
               $a = $obj->execute($config['bucket'],$image_key,$fops,null,'回调地址',1); 

接受回调:七牛云通知方式为 application/json POST  方式,可直接用 '$param = $this->request->param();' 或者 '$param = $this->request->post();' 来接收七牛云的通知数据,然后根据通知数据进行对应的操作就可以了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值