因为本文主要解决方案为使用七牛云存储的在线编码功能,所以在文章开始之前,小编先给大家推荐一个<font color=red>2019年最新的七牛优惠码:61d1fd4d</font>,可以享受1万以下99折,1万以上95折的折扣,也就是说充10001就能到账10530多。可以赚个小外快,你懂得
之前的文章介绍过一个项目,就是开发一个微信小程序,使用的七牛云存储作为存储空间,上篇文章介绍了小程序如何上传大视频,这两天又发现一个问题,就是上传的程序有的无法正常播放,但格式都是MP4或者AVI的,就有的能播放,有的无法播放。
出现这种问题第一反应就是编码问题,尝试本地编码,使用MP4 H265进行编码,发现不能播放的视频可以正常播放了,果然是编码的问题。
那么问题又来了,小程序的视频有需要客户上传的,也有需要用户自己上传的,手动对视频编码显然不合适,然后就询问七牛客服有没有解决办法,最后客服回复说七牛有在线转码的功能,可以调用七牛SDK接口实现上传的视频自动转码,完美解决我们的问题。并且1080P 的 10 分钟视频,基本10秒内就能处理完。速度很快。这个在线转码的功能官方称之为“持久化处理”,可以在上传时自动进行转码处理,当然这个服务时收费的,不过收费方式还是很合理的,根据视频时长按分钟收费(差不多一分钟不到1分钱)。价格还是比较便宜的,另外,小编再给大家推荐一个<font color=red>2019年最新的七牛优惠码:61d1fd4d</font>,可以享受1万以下99折,1万以上95折的折扣,也就是说充10001就能到账10530多。可以赚个小外快,你懂得。。。
下面给大家介绍以下如何调用这个“持久化处理”。
官方的解释可以看:https://developer.qiniu.com/dora/manual/3686/pfop-directions-for-use
这里分为两种情况:
第一种是处理已经上传的视频,
POST /pfop/ HTTP/1.1
Host: api.qiniu.com
Content-Type: application/x-www-form-urlencoded
Authorization: QBox <AccessToken>
bucket=<urlEncodedBucket>&key=<urlEncodedKey>&fops=<urlEncodedFops>¬ifyURL=<urlEncodedPersistentNotifyUrl>&force=<Force>
处理完成之后会把处理结果返回为notifyURL
第二种情况是上传时直接调用
这里参考@大象笔记的内容,参考: https://github.com/qiniu/php-sdk/blob/4c4f9b819f420b77bc7313b7d5ee6d33f1139df6/examples/upload_tokens.php
$policy = array(
'persistentOps' => $avthumbMp4Fop . ";" . $vframeJpgFop,
'persistentPipeline' => "video-pipe",
'persistentNotifyUrl' => "http://api.example.com/qiniu/pfop/notify",
);
$upToken = $auth->uploadToken($bucket, null, $expires, $policy, true);
在生成 uptoken 时,需要传入 persistentOps 和 persistentNotifyUrl 即可。
'uptoken' => QiniuStorage::disk('qiniu')->uploadToken(
null, 60*60*24,
$policy=array(
'persistentOps' => 'avthumb/mp4',
'persistentNotifyUrl' => env('APP_URL') . '/api/qiniu_pfop_callback'
))