1:下载七牛云SDKcomposerrequireqiniu/php-sdk2:在php中实现七牛云demoaccessKey="";$this->secretKey="";$this->桶="";$this->url="";$this->pipeline="";}/***获取上传令牌*/publicfunctiongetToken(){$auth=newAuth($this->accessKey,$this->secretKey);//生成上传令牌$token=$auth->uploadToken($this->bucket);返回$令牌;}/***上传*/publicfunctionupload($file,$saveFileName=null){$token=$this->getToken();$uploadMgr=new上传管理器();如果($saveFileName===null){$pathinfo=is_array($file)?路径信息($文件['名称']):$文件;$extension=$pathinfo['extension'];$saveFileName=Yii::$app->getSecurity()->generateRandomString()。'-'.date('His',time())".".$extension;}//上传到七牛云后保存的文件名$tmpName=is_array($file)?$文件['tmp_name']:$文件;列表($result,$err)=$uploadMgr->putFile($token,$saveFileName,$tmpName);如果($err!==null){返回false;}返回['文件'=>$saveFileName,'url'=>$this->url。$保存文件名,];}/***获取上传的音视频元数据*/publicfunctiongetAvinfo($file){$client=newClient();$response=$client->createRequest()->setMethod('post')->setUrl($this->url.$file.'?avinfo')//请求URL->send();如果($response->isOk){return$response->data;}返回[];}/***获取进程状态*/publicfunctionpersistentStatus($persistentId){$auth=newAuth($this->accessKey,$this->secretKey);$config=new\七牛\Config();$pfop=newPersistentFop($auth,$config);列表($result,$error)=$pfop->status($persistentId);如果($error!=null){returnself::STATUS_ERROR;}$code=isset($result['code'])?$结果['代码']:3;返回$代码;}/***获取视频指定矩阵图片*/publicfunctiongetVideoImage($file,$saveFile=null,$offset=1){$auth=newAuth($this->accessKey,$this->secretKey);$config=new\七牛\Config();$pfop=newPersistentFop($auth,$config);如果($saveFile==null){$fileName=basename($file);$路径信息=路径信息($文件名);$saveFile=$pathinfo['文件名'].'.jpg';}$entry=base64_urlSafeEncode("$this->bucket:$saveFile");$fops="vframe/jpg/offset/".$offset."|saveas/$entry";$管道=空;如果($this->pipeline){$pipelineArr=explode(',',$this->pipeline);$pipeline=$pipelineArr[array_rand($pipelineArr,1)];}列表($id,$err)=$pfop->执行($this->bucket,$file,$fops,$pipeline);如果($err!=null){返回false;}//查询进程状态$persistentStatus=false;$code=self::STATUS_ERROR;while($persistentStatus===false){睡眠(1);$code=$this->persistentStatus($id);如果(in_array($code,[self::STATUS_SUCCESS,self::STATUS_ERROR])){$persistentStatus=true;}}if($code==self::STATUS_SUCCESS){return['url'=>$this->url.$saveFile,'文件'=>$saveFile];}返回假;}/***视频处理*/publicfunctionavthumb($file,$saveFileName=null,$param=[]){if(empty($param)){returnfalse;}$auth=newAuth($this->accessKey,$this->secretKey);$config=new\七牛\Config();$pfop=新的PersistentFop($auth,$config);$路径信息=路径信息($文件);$extension=strtolower($pathinfo['extension']);如果($saveFileName===null){$saveFileName=Yii::$app->getSecurity()->generateRandomString()。'-'。日期('他的',时间())“。”。$扩展名;}$entry=base64_urlSafeEncode("$this->bucket:$saveFileName");$fops="avthumb/".$扩展;//裁剪$star=isset($param['star'])?$参数[‘星’]:0;$end=isset($param['end'])?$参数['结束']:0;$星=整数($星);$end=intval($end);if(!((empty($star)&&empty($end))||($star>=$end))){//需要剪裁$duration=$end-$star;如果(!empty($duration)){$fops.="/ss/".$星号。”/t/”。$duration;/*截取片段*/}}//文字水印$wmText=isset($param['wmText'])?$param['wmText']:'';如果($wmText){$fops.="/wmText/".base64_urlSafeEncode($wmText);//透明度$wmAlpha=isset($param['wmAlpha'])?$param['wmAlpha']:'1.0';$fops.="/wmAlpha/"。$wmAlpha;//字体$wmFont=isset($param['wmFont'])?$param['wmFont']:'宋体';$wmFont=base64_urlSafeEncode($wmFont);$fops.="/wmFont/".$wm字体;//水印颜色$wmFontColor=isset($param['wmFontColor'])?$param['wmFontColor']:'#ffffff';$wmFontColor=base64_urlSafeEncode($wmFontColor);$fops。=“/wmFontColor/”。$wm字体颜色;//水印文字大小$wmFontSize=isset($param['wmFontSize'])?$param['wmFontSize']:'30';$fops.="/wmFontSize/".$wmFontSize;//水印文字位置$wmGravityText=isset($param['wmGravityText'])?$param['wmGravityText']:'SouthWest';//方向$wmOffsetX=isset($param['wmOffsetX'])?$param['wmOffsetX']:'0';//X偏移量$wmOffsetY=isset($param['wmOffsetY'])?$param['wmOffsetY']:'0';//Y偏移量$fops.="/wmGravityText/".$wmGravityText。“/wmOffsetX/”。$wmOffsetX。“/wmOffsetY/”。$wmOffsetY;$audio=isset($param['audio'])?$param['音频']:'';//音频if($audio){$fops.="/multiArep/".base64_urlSafeEncode('kodo://'.$this->bucket.'/'.$audio);}$fops.="|saveas/$entry";$管道=空;如果($this->pipeline){$pipelineArr=explode(',',$this->pipeline);$pipeline=$pipelineArr[array_rand($pipelineArr,1)];}list($persistentId,$err)=$pfop->execute($this->bucket,$file,$fops,$pipeline);如果($err!=null){返回false;}//查询进程状态$persistentStatus=false;$code=self::STATUS_ERROR;while($persistentStatus===false){睡眠(1);$code=$this->persistentStatus($persistentId);如果(in_array($code,[self::STATUS_SUCCESS,self::STATUS_ERROR])){$persistentStatus=true;}}if($code==self::STATUS_SUCCESS){return['file'=>$saveFileName,'url'=>$this->url.$saveFileName,'duration'=>$duration,];}返回假;}}设置accessKey、secretKey、bucket、url、pipeline参数替换为自己的七牛云账号信息3:简单实现1:实现上传$qiniu=newQiNiu();$qiniu->upload($_FILES['文件']);2:获取上传音视频信息$file='';//上传七牛云后的文件名$qiniu=newQiNiu();$qiniu->getAvinfo($file);3:获取视频的指定帧图像$file='';//上传七牛云后的视频名称$qiniu=newQiNiu();$qiniu->getVideoImage($file);//其他参数参考demo4:视频处理(裁剪、文字水印、添加音频)$file='';//上传七牛云后的视频名称$qiniu=newQiNiu();$qiniu->avthumb($file);//其他参数参考demo
