通过API将视频上传到Youtube,获取mediaBodyRequired错误

时间:2014-07-14 18:55:54

标签: 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,但没有发现女巫属性代表视频正文。 有人知道怎么修这个东西吗?感谢

1 个答案:

答案 0 :(得分:1)

最可行的方法可能是使用AJAX在Javascript中实现可恢复的上传协议,而不是谷歌客户端库。可恢复上传协议意味着您首先使用JSON元数据和特殊参数提交请求,并且响应的Location标头为您提供了一个辅助临时URL,用于将文件内容上传到。

  • 文档中建议使用可恢复的上传协议,文档中的其他代码示例(JS中没有代码示例)使用它。

  • 我得到了一个非RUP版本的API"工作"但没有上传的内容会被处理。

  • 我尝试使用Google客户端库实现RUP,并且第一步响应对象为undefined,即使基础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