微信语音下载到服务器 上传到七牛转换为mp3

require_once APP_ROOT.'/vendor/autoload.php';
require_once APP_ROOT.'/vendor/config.php';
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
use Qiniu\Storage\BucketManager;//删除文件
class QiniuaudioAction extends Action {

        function upaudio(){
                $ACCESS_TOKEN=$_POST['ACCESS_TOKEN'];
                $media_id=$_POST['media_id'];//微信jsdk上传到微信服务器后返回的
                $save_audio=APP_ROOT."/audio";//本地暂时存放的文件夹
                $audio_name=time().".amr";//暂时存放的文件名称
                $qiniu_audio_name=time().".mp3";//上传到七牛的文件名
                $filePath="http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=$ACCESS_TOKEN&media_id=$media_id";//音频路径注意报media_id错误的话可能是没有录到声音 建议吧这个链接放到浏览器打开 然后打开下载的文件看看 
                getFilepapers($filePath,$save_audio,$audio_name);//下载到服务器
                $bucket = Config::AUDIO_NAME;
                $auth = new Auth(Config::AK, Config::SK);
                $file=$save_audio."/".$audio_name;
                //转码时使用的队列名称 
                $pipeline = Config::Peline;
                $savekey = Qiniu\base64_urlSafeEncode($bucket.":".$qiniu_audio_name);
                $fops='avthumb/mp3/ab/128k/ar/44100/acodec/libmp3lame|saveas/'.$savekey;
                $policy = array(
                'persistentOps' => $fops,
                'persistentPipeline' => $pipeline
                );
                 $uptoken = $auth->uploadToken($bucket, null, 3600, $policy);
                 $uploadMgr = new UploadManager();
                 list($ret, $err) = $uploadMgr->putFile($uptoken, $audio_name, $file);
                 $bucketMgr = new BucketManager($auth);
                 if($ret['key']){
                 $err = $bucketMgr->delete($bucket,$ret['key']);//删除amr文件
                 unlink($save_audio."/".$audio_name);//删除服务器上的amr文件
                 $this->ajaxreturn(array("type"=>"success","audio_url"=>Config::AUDIO_DOMAIN.$qiniu_audio_name));die();//返回七牛转码完成的MP3文件
                 }
                 $this->ajaxreturn(array("type"=>"error"));
            }

    }

/*获取远程资源*/
function getFilepapers($url,$save_dir='',$filename='',$type=0){

    if(trim($url)==''){
        return false;
    }
    if(trim($save_dir)==''){
        $save_dir='./';
    }
    if(0!==strrpos($save_dir,'/')){
        $save_dir.='/';
    }
    //创建保存目录
    if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){
        return false;
    }
    //删除原来的文件
    unlink($save_dir . "/".$filename);
    //获取远程文件所采用的方法
    if($type){
        $ch=curl_init();
        $timeout=5;
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
        $content=curl_exec($ch);
        curl_close($ch);
    }else{
        ob_start();
        readfile($url);
        $content=ob_get_contents();
        ob_end_clean();
    }
    $size=strlen($content);
    //文件大小

    $fp2=@fopen($save_dir.$filename,'a');
    fwrite($fp2,$content);
    fclose($fp2);
    unset($content,$url);
    return array('file_name'=>$filename,'save_path'=>$save_dir.$filename);
}

猜你喜欢

转载自blog.csdn.net/yao978318542/article/details/51726341
今日推荐