javascript - 使用 NodeJS API 调用上传 MP4 时 Azure 视频索引器停止
问题描述
我正在使用 NodeJS 将 mp4s 的目录一一上传到 Azure。出于某种原因,视频索引在大约 20% 的时间内停止。我不清楚为什么。API 调用没有显示错误。尝试为视频加载数据时,我只得到“处理中”状态,但它永远不会结束。我必须手动删除视频并重新开始。
登录 videoindexer.ai 网站,我可以看到进程无限期停止:
这是我用于上传 MP4 的 NodeJS。如果我在这里做错了什么,我将不胜感激任何建议:
const fs = require('fs');
const path = require('path');
const fetch = require('node-fetch');
const FormData = require('form-data');
const uploadVideo = async (filePath) => {
const fileName = path.parse(filePath).name;
const url = `https://api.videoindexer.ai/${LOCATION}/Accounts/${ACCOUNTID}/Videos?accessToken=${TOKEN}&name=${fileName}&description=TEST&privacy=private&partition=some_partition`;
const fileBase = path.parse(filePath).base; // e.g. "video1.mp4"
const formData = new FormData();
formData.append('file', fs.createReadStream(filePath), { filename: fileBase });
const headers = {
'x-ms-client-request-id': '',
'Ocp-Apim-Subscription-Key': APIKEY,
...formData.getHeaders()
};
const response = await fetch(url, {
cache: 'no-cache',
headers,
method: 'POST',
body: formData
});
const json = await response.json();
if (json.ErrorType && json.Message) {
throw new Error(`${json.ErrorType} - ${json.Message}`);
}
console.log('Successfully uploaded video');
console.log(json);
return json.id;
};
uploadVideo('./video1.mp4').then((videoId) => console.log('result: ' + videoId)) // <- returns the correct videoId even when process stalls
解决方案
请添加标题'Content-Type': 'multipart/form-data'.
您可以删除 ...formData.getHeaders()
并请提供您的帐户 ID 和/或停止的视频 ID,以便我们可以内部检查
谢谢,视频索引器团队
推荐阅读
- php - 匹配数组并更新数组一中的值
- c++ - Scripting::LState 的多重定义
- php - 所有 Laravel 环境变量的列表?
- c# - DocX ReplaceText 使用来自 Xceed 的 WPF 工具包的富文本
- javascript - 查找任何一年的星期几,plusYears() 函数不起作用
- reactjs - 当函数返回值可以是多种类型(使用 |)时,我如何在 TypeScript 中选择一种?
- python - Tensorflow 1.11 挂在“sess = tf.Session()”上
- javascript - 带有 Sequelize 的 Node.js 数据库模块
- java - 如何在从返回 0:255 或 -1 之间的 int 的 FileInputStream.read() 分配的 int 的前 3 位中查找模式?
- python - 为什么 SimpleITK 不使用 imageJ 显示图像?