You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Video Indexer通过带SAS令牌的Blob URL上传视频失败问题

解决Azure Blob URL + SAS令牌调用Video Indexer Upload API的INVALID_INPUT错误

我之前也碰到过一模一样的问题,核心原因是Video Indexer API会严格校验Blob URL返回的Content-Type响应头,而浏览器往往会自动忽略不正确的Content-Type、直接识别视频内容,导致看似正常但API报错。下面是一步步的解决方案:

1. 检查并修正Blob的Content-Type属性

这是最常见的触发原因:你的视频Blob可能没有设置正确的视频MIME类型(比如video/mp4)。即使浏览器能正常播放,API会严格检查响应头里的Content-Type,如果返回的是application/xml或默认的application/octet-stream,就会抛出INVALID_INPUT错误。

操作步骤:

  • 登录Azure Portal,找到对应的存储账户→目标容器→要处理的视频Blob。
  • 点击Blob进入详情页,切换到属性标签。
  • 在「Content-Type」字段,设置为对应视频格式的MIME类型(比如MP4填video/mp4,MOV填video/quicktime),保存修改。

2. 确保SAS令牌拥有正确的权限

生成SAS令牌时,必须包含**读取(Read)**权限,否则Video Indexer无法下载Blob内容,会返回错误的XML响应(这也是你看到application/xml的原因之一)。

生成SAS时注意:

  • 权限勾选「读取」,必要时可以额外勾选「列表」(但读取权限是必须项)。
  • 确认SAS的有效期覆盖你调用API的时间,避免令牌过期失效。

3. 对完整的Blob URL(含SAS)进行URL编码

SAS令牌里包含大量特殊字符(如?、&、=),直接拼接到API的videoUrl参数中会导致URL解析错误,API实际请求的地址可能不是Blob本身,而是返回错误信息的XML页面。

你需要把整个Blob URL(包括SAS部分)进行URL编码,再作为videoUrl的值传入。比如:
原URL:https://yourstorage.blob.core.windows.net/container/video.mp4?sv=2023-01-01&ss=b&srt=o&sp=r&se=2024-01-01T00:00:00Z&st=2023-12-01T00:00:00Z&spr=https&sig=xxx
编码后:https%3A%2F%2Fyourstorage.blob.core.windows.net%2Fcontainer%2Fvideo.mp4%3Fsv%3D2023-01-01%26ss%3Db%26srt%3Do%26sp%3Dr%26se%3D2024-01-01T00%3A00%3A00Z%26st%3D2023-12-01T00%3A00%3A00Z%26spr%3Dhttps%26sig%3Dxxx

4. 验证修改后的URL

在调用API之前,先验证Blob URL的有效性:

  • 使用curl命令发送HEAD请求,检查Content-Type:
    curl -I "你的Blob URL(含SAS)"
    
    确保响应头里的Content-Type是正确的视频类型(比如video/mp4),而不是application/xml。
  • 或者在Postman里发送GET请求,确认能正常下载视频内容。

完成以上步骤后,再重新调用Video Indexer的Upload API,应该就能正常处理Blob里的视频了。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:23:32