微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Google Cloud Storage 上的视频文件作为 Microsoft 视频索引器的输入的问题

如何解决使用 Google Cloud Storage 上的视频文件作为 Microsoft 视频索引器的输入的问题

我使用 MicroSoft Video indexer 来运行视频智能并从用户视频输入中提取有用的特征/内容。我一直在使用 Web 界面,但现在我需要使用 Rest API 来实现自动化。

有两种方法可以指定要上传的视频文件。一种是摄取原始字节,另一种是引用云端视频文件的地址(推荐)。请参阅API doc

问题是我在指定 Google Cloud Storage 存储桶上的文件时遇到问题。我知道您必须指定公开可用文件的 URL,我正在通过提供视频文件的签名 URL 来执行此操作。但是当我指定上传到 Cloudinary 的同一视频文件的地址时,它一直给我以下错误

{
  "ErrorType": "INVALID_INPUT","Message": "Url content type 'application/xml' is not supported. Only audio and video files are supported. You can find the supported types here: https://docs.microsoft.com/ro-ro/azure/media-services/media-services-media-encoder-standard-formats. Trace id: '7e9e2626-6dd3-4e9b-8b06-5991cfdb896c"
}

这里有两个地址供参考:

  1. 多云:https://res.cloudinary.com/account-id/video/upload/v1612773239/VideoAI/Elen_Hyundai_high.mp4
  2. GCS:https://storage.googleapis.com/project-id.appspot.com/video-files/filename?GoogleAccessId=firebase-adminsdk-some-service-account-key.com&Expires=1612857836&Signature=Rog3NWpzqXINxPWQl9sLLP8eDASNEglUehL6YkMB90YXRIWGk8PZOYGpUB9MVgTXKtFe4IjbR0tRuDUVhCeIhFTfL3kR2YXCZ3mqbOYOQlzfasq4YE4FtGiN40gNicjiLbJbq8vq4pMIwRfSirSOV92t9ev5ydPcW0BgICfd5n6QOhCvLx%2FpPgonCuGtK82Zyu21M%2BFRxuqmDTfCsZwP0fxfzwoZblusEFxIxpZFiXtow27EBYy3Dqv062UWhPuLhSyBKnFIHReaSaRcfwRVMF4Sw849eeMLGYdqHSy9LOVsw%2FcYTJenjM4bqoj1jqSduh8A%2FmGkN3rFRok3aT4qjw%3D%3D

如果您需要测试,我可以提供实际网址。

解决方法

好的,我通过对从 GCS 获取的 signedURL 的查询参数路径进行编码,然后将其添加到发送到 MicroSoft Video Indexer (MVI) 的 videoUrl 参数中解决了这个问题

const temp = signedURL.split('?')

videoUrl = temp[0] + encodeURIComponent(`?${temp[1]}`)

这是因为 MVI 在 vi​​deoUrl 上运行 decodeURIComponent - 因此目标是使结果等于 GCS 发送的原始 url:

  const bucketFile = bucket.file(filePath)
  const [signedURL] = await bucketFile.getSignedUrl({
    action: 'read',expires: 3600 * 1000,// 1hr or add-your-expiration,})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。