阿里云视频点播上传遇到的坑

最近要做一个阿里云视频点播上传的接口,写的我要吐了,好在最后成功了。现在记下踩过的坑。
阿里云上传视频我用到的是上传sdk,贴上官方文档
PHP上传SDK
这个文档我是直接下的压缩包,用的本地上传接口,上传成功没毛病。但是在阿里云控制台上视频播放不了。
我同事查看是cname配置出了问题。就是下面这个cname一定要配置了,不然是视频无法播放。
阿里云视频点播上传遇到的坑_第1张图片
sdk的视频上传是把上传视频和获取上传地址和凭证的接口一起调用了,但是文档获取上传地址和凭证的接口返回的是一个json的字符串,不知道是我看不懂这个文档还是怎么,我的sdk给我返回的只有一个videoId的字符串,但是我一开始也是可以看到视频链接地址的。就以为链接地址也在返回的字符串里头,但是怎么整都取不出这个视频地址,然后看源码才发现返回的那些东西是直接打印出来的T_T 到这里我真的是要吐了

我自己接口返回的参数
阿里云视频点播上传遇到的坑_第2张图片
官方文档返回的参数
阿里云视频点播上传遇到的坑_第3张图片
获取上传地址和凭证
这里我找到了源码。把这个注释了,不知道对以后有没有影响,反正我注释了
阿里云视频点播上传遇到的坑_第4张图片
阿里云视频点播上传遇到的坑_第5张图片
这两个屏蔽了之后,打印输出就只剩本次上传的VideoId了
没有返回地址怎么办呢?
然后我看文档又给了个获取视频播放地址的接口。获取视频播放地址接口
完全没脾气。
这个我是照搬代码而已,没做什么调整。就是这个初始化,阿里云现在是有两个版本,一个是旧版,新版是可以用composer下的,但是我本地composer不行,下载失误,就用了直接下载压缩包,发现这玩意就是阿里云接口合集很多用不到。我就蒙蔽了
但是初始化一直报错,才发现我引入的路径其实是我上传视频里头的接口,就没有用到我新下载的sdk,那个接口是旧版的,不适用新版初始化。把这个改好了就欧克了。差点吐出来。

附上部分代码

//上传视频和获取视频凭证这里上传时其实是可以加蛮多参数的,因为我们不需要,我就没加
public static function uploadVideo($data,$admin)
    {
        $tmpfname = self::createVideoFile($data); //我们前端是给的视频base64吗,这个是把视频转码并放到服务器上,返回的文件路径 如:/video/test.mp4
        try {
            $uploader = new \AliyunVodUploader(config('setting.OssKeyId'), config('setting.OssKeySecret')); //
            $uploadVideoRequest = new \UploadVideoRequest($tmpfname, $data['name']); //获取视频上传地址和凭证
            $uploadVideoRequest->setCateId(1);
            $res = $uploader->uploadLocalVideo($uploadVideoRequest);
            //获取播放地址
            $video = self::getPlayInfo(self::initVodClient(config('setting.OssKeyId'), config('setting.OssKeySecret')),$res);
            $data['type'] = $uploadVideoRequest->getMediaExt();//获取扩展名
            self::createVideoMessage($data,$video,$admin); //视频入库
            //删除本地视频
            unlink($tmpfname);
        } catch (Exception $e) {
            throw new UploadException(['code'=>$e->getCode(),'msg'=>$e->getMessage()]);
        }
    }

获取播放地址getPlayInfo

    //获取播放地址 这个我啥也没改,就跟官方给的写的一样
    public static function getPlayInfo($client, $videoId) {
        $request = new vod\GetPlayInfoRequest();
        $request->setVideoId($videoId);
        $request->setAuthTimeout(3600*24);
        $request->setAcceptFormat('JSON');
        return $client->getAcsResponse($request);
    }

初始化

    //初始化
   public static function initVodClient($accessKeyId, $accessKeySecret) {
        $regionId = 'cn-shanghai';  // 点播服务接入区域
        $profile = \DefaultProfile::getProfile($regionId, $accessKeyId, $accessKeySecret);
        return new \DefaultAcsClient($profile);
    }

到此结束拉,第一次写这样的文章,本来是给自己做的笔记,也希望可以给需要的小伙伴一点帮助。要是写的有什么不对的希望大家指正~感谢!在这里插入图片描述

你可能感兴趣的:(PHP笔记,PHP)