使用PHP实现客户端设备直接上传视频到Vimeo的可行性及示例咨询
结论
该功能完全可以实现,不需要将用户上传的视频先存储到你的业务服务器再转传到Vimeo,通过Vimeo的tus直传方案配合PHP后端鉴权即可实现。
实现逻辑
- 你之前查阅到的PHP SDK示例是服务端本地文件上传场景的用法,和你需要的用户端直传场景适配逻辑不同
- 核心流程为:
- 前端用户在网页选择本地视频文件后,先将文件大小、文件名等基础信息发送到你的PHP后端
- PHP后端调用Vimeo SDK生成上传授权、Vimeo端的上传地址,将相关参数返回给前端
- 前端直接将本地视频文件上传到上一步拿到的Vimeo上传地址,全程不会占用你的业务服务器的存储资源和上行带宽
核心参考代码
PHP后端生成上传凭证示例:
// 引入Vimeo SDK 需提前通过composer安装vimeo/vimeo-api $vimeo = new \Vimeo\Vimeo('你的client_id', '你的client_secret', '你的access_token'); // 接收前端传递的文件参数 $fileSize = (int)$_POST['file_size']; $fileName = trim($_POST['file_name']); // 请求Vimeo接口生成tus上传凭证 $response = $vimeo->request('/me/videos', [ 'upload' => [ 'approach' => 'tus', 'size' => $fileSize ], 'name' => $fileName, // 可按需添加视频隐私、描述、分类等自定义参数 'privacy' => [ 'view' => 'anybody' ] ], 'POST'); // 返回给前端的核心参数:Vimeo上传地址、视频唯一标识 $uploadData = [ 'upload_link' => $response['body']['upload']['upload_link'], 'video_uri' => $response['body']['uri'] ];
- 前端可直接使用tus协议客户端库,拿到
upload_link后直接上传文件即可,上传状态、进度都可以通过前端库直接获取。
注意事项
- 你需要先在Vimeo开发者后台为自己的应用开启上传权限,否则会返回权限异常错误
- 上传的视频大小不能超过你当前Vimeo账户的存储配额以及单文件大小上限
- 视频上传完成后Vimeo会自动触发转码,转码完成后才能正常播放
内容的提问来源于stack exchange,提问作者SmokerCreep
相关产品推荐
相关产品推荐

