javascript - 通过 API 将视频上传到 Youtube,出现 mediaBodyRequired 错误

标签 javascript video youtube-javascript-api

我是 youtube API 的新手,想上传视频,但我不知道如何使用 insert,

fileStream = r.result;
    var request = gapi.client.youtube.videos.insert({
        part: 'snippet, status',
        resource: {
            snippet: {
                title: 'my video',
                description: 'Description',
                categoryId: "22"
            },
            status: {
                privacyStatus: "private"
            }
        }
    }, fileStream);
    console.log("after request")
    request.execute(function(response) {
        var result = response.result;
        console.log(response);
        if (result) {
            console.log("execute completed");
        }
    });
}

但是报错:

domain: "youtube.video"
location: "body"
locationType: "other"
message: "Bad Request"
reason: "mediaBodyRequired"

我阅读了文档 here , 但没有发现 witch 属性代表视频的正文。 有人知道怎么修这个东西吗?谢谢

最佳答案

最可行的方法可能是使用 AJAX 在 Javascript 中实现可续传上传协议(protocol),而不是 Google 客户端库。可恢复上传协议(protocol)意味着您首先提交带有 JSON 元数据和特殊参数的请求,响应的 Location header 为您提供一个辅助的临时 URL 以将您的文件内容上传到。

  • 文档中推荐使用断点续传协议(protocol),文档中的其他代码示例(JS 没有)使用它。

  • 我得到了一个非 RUP 版本,API 可以“正常工作”,但所有上传都不会处理。

  • 我尝试使用 Google 客户端库实现 RUP,但在第一步响应对象是未定义,即使基础 HTTP 请求/响应是正确的。

  • 这里有使用 jQuery AJAX 调用实现 RUP 的示例代码:https://youtube-api-samples.googlecode.com/git/yt-upload-javascript/index.html

  • 据我所知,API 文档并没有具体说明您应该如何在 Javascript 中执行插入操作。

引用资料:

https://developers.google.com/youtube/v3/guides/using_resumable_upload_protocol

https://developers.google.com/api-client-library/javascript/dev/dev_jscript

https://developers.google.com/youtube/v3/guides/uploading_a_video

Youtube Video Upload using javascript

关于javascript - 通过 API 将视频上传到 Youtube,出现 mediaBodyRequired 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24743741/

相关文章:

javascript - 即使通过用户输入启动,Youtube Javascript API 也不允许在移动设备上进行播放控制

javascript - 使用javascript在特定时间间隔播放视频并发布消息

youtube - 获取播放器的当前状态(Youtube API)

video - 带循环的 Youtube 播放器 api

Javascript:需要按顺序处理代码

javascript - 如何在 Asp.net 中使用 java 脚本将参数传递给同一页面

javascript - Promise 不会解析为 true 或 false

azure - 如何在 Azure 媒体服务上流式传输上传的视频

youtube-api - 嵌入没有广告的 YouTube 视频

javascript - 使用复选框和 javascript 更改 CSS 值