You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何使用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]"
  }'

关键注意事项

  1. 签名生成:Cloudinary的API请求需要签名验证,签名是由timestamppublic_idresource_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');
    
  2. 参数正确性resource_type必须设为videotype要和你上传视频时的类型一致(比如private),public_id不能包含文件后缀。

为什么之前会404?

大概率是这几个原因:

  • URL构造错误:比如把video写成了image,或者云名称拼写错误
  • 缺少必要参数:比如没加timestampsignature,导致API拒绝请求
  • public_id格式不对:包含了.mp4这类后缀,Cloudinary的public_id不需要后缀

内容的提问来源于stack exchange,提问作者Yasin Tazeoglu

火山引擎 最新活动