如何使用curl从Cloudinary获取视频时长?
获取Cloudinary视频时长的Curl实现方案
我来帮你搞定用curl从Cloudinary获取视频时长的问题!之前你尝试用explicit方法遇到404,大概率是请求格式或者参数没弄对,下面给你两种靠谱的解决方案:
方案一:公开视频的快速获取(无需API密钥)
如果你的视频是公开可访问的,这是最简单的方法——直接请求视频的JSON元数据端点,里面就包含时长信息:
curl "https://res.cloudinary.com/[你的Cloudinary云名称]/video/[资源类型(比如upload)]/[视频的public_id].json"
举个实际例子,假设你的云名称是my-cloud,视频public_id是vacation/beach-video,资源类型是默认的upload,那命令就是:
curl "https://res.cloudinary.com/my-cloud/video/upload/vacation/beach-video.json"
返回的JSON里会有一个duration字段,对应的数值就是视频的时长(单位是秒)。
方案二:私有/受限视频的Explicit API调用
如果视频是私有或者需要权限验证的,就得用Explicit API来获取元数据,这时候要注意参数的完整性,否则就会出现404或者权限错误。
正确的Curl命令格式
curl -X GET "https://api.cloudinary.com/v1_1/[你的云名称]/video/explicit" \ -H "Content-Type: application/json" \ -d '{ "public_id": "[视频的public_id]", "api_key": "[你的API密钥]", "signature": "[生成的签名]", "timestamp": [当前Unix时间戳], "resource_type": "video", "type": "[资源类型,比如private/authenticated]" }'
关键注意事项
- 签名生成:Cloudinary的API请求需要签名验证,签名是由
timestamp、public_id、resource_type等参数加上你的API密钥后哈希生成的。你可以用Cloudinary的SDK(比如Node.js、Python)快速生成,比如Node.js的示例:const cloudinary = require('cloudinary').v2; cloudinary.config({ cloud_name: 'your-cloud-name', api_key: 'your-api-key', api_secret: 'your-api-secret' }); const timestamp = Math.round(new Date().getTime()/1000); const signature = cloudinary.utils.api_sign_request({ public_id: 'your-video-id', timestamp: timestamp }, 'your-api-secret'); - 参数正确性:
resource_type必须设为video,type要和你上传视频时的类型一致(比如private),public_id不能包含文件后缀。
为什么之前会404?
大概率是这几个原因:
- URL构造错误:比如把
video写成了image,或者云名称拼写错误 - 缺少必要参数:比如没加
timestamp或signature,导致API拒绝请求 public_id格式不对:包含了.mp4这类后缀,Cloudinary的public_id不需要后缀
内容的提问来源于stack exchange,提问作者Yasin Tazeoglu




