为yii2.0.55项目接入阿里云视频点播服务,需配置sdk与凭证、封装vodservice生成带鉴权的cdn播放地址,并绑定https加速域名及完成cname解析,前端通过player widget加载动态url实现安全播放。

为Yii2.0.55项目接入阿里云视频点播服务并生成安全可播的地址,需绕过框架默认静态资源路径限制,将播放逻辑与CDN域名、鉴权参数、转码策略解耦,避免直接暴露源站URL或硬编码播放器配置。
配置阿里云点播SDK与凭证
在项目根目录执行:composer require aliyuncs/aliyun-openapi-php-sdk;
创建 config/vod.php,填入AccessKey ID、AccessKey Secret、RegionId(如cn-shanghai)及默认BucketName;
【务必禁止将该文件提交至Git仓库,应加入.gitignore】;
在 common/config/bootstrap.php 中加载该配置:Yii::setAlias('@vodConfig', dirname(__DIR__) . '/config/vod.php');。
封装点播播放地址生成服务
新建 common/components/VodService.php,继承 \yii\base\Component;
在 init() 方法中初始化 AliyunVodClient 实例,使用 @vodConfig 中的凭证;
实现 getPlayAuth($videoId, $authTimeout = 3600) 方法:调用 GetVideoPlayAuthRequest 并传入 AuthTimeout 参数,返回包含 PlayAuth 和 PlayUrl 的数组;
注意:若未启用CDN加速,PlayUrl 为OSS直链,无法用于生产环境——必须配合后续CDN域名配置才有效。
绑定CDN加速域名并启用HTTPS
登录阿里云视频点播控制台 →「分发加速」→「域名管理」→「添加加速域名」;
填写已备案的二级域名(如 vod.yourdomain.com),选择对应区域,开启「HTTPS安全加速」并上传证书;
完成CNAME解析:将该域名CNAME指向阿里云提供的加速节点地址(格式类似 xxx.alikunlun.com);
【未完成CNAME前所有播放请求均会失败,且控制台不提示该错误】;
返回「播放设置」→「播放域名」,将刚添加的域名设为默认播放域名。
生成带二次鉴权的播放地址
第一步:在 VodService.php 中新增 getSecurePlayUrl($videoId, $uid = null, $rand = null) 方法;
第二步:调用 GetPlayInfoRequest,设置 PlayConfig.PlayDomain 为已配置的CDN域名,AuthInfo.Enable 设为 true;
第三步:若传入 $uid,则设置 ReAuthInfo.uid;若未传 $rand,则自动生成UUID作为 ReAuthInfo.rand;
第四步:返回结果中提取 PlayInfoList[0].PlayURL,该URL已含 auth_key 与 Expires 参数,且域名指向CDN而非OSS源站。
前端嵌入播放器并传入动态URL
在视图文件中使用 Player::widget(['playUrl' => $playUrl])(需提前注册该Widget);
Player Widget内部通过 <video></video> 标签或阿里云Web播放器SDK加载;
若用SDK,确保引入 https://g.alicdn.com/de/prismplayer/2.10.12/aliplayer-min.js;
初始化时传入 {id: "player", source: $playUrl, width: "100%", height: "500px"};
这一步无需额外配置跨域——CDN域名已自动支持CORS,而OSS直链因无Referer白名单限制将被拒绝。











