javascript - 使用 javascript 上传 YouTube 视频

标签 javascript jquery youtube-api youtube-javascript-api

我正在尝试使用 JavaScript 制作一个基于浏览器的 YouTube 视频 uploader 。

我正在使用sample code from here

当我上传视频时进行身份验证后,对 YouTube 服务器的 POST 请求永远不会结束,并且视频不会上传。

这发生在 sample provided by google也是。

这是我用来上传视频的功能:

$('#upload').click(function(){
    $('#upload').attr('disabled', true);

    var title = escapeXmlEntities($('#title').val());
    var description = escapeXmlEntities($('#description').val());
    var category = escapeXmlEntities($('#category option:selected').val());

    var xmlBody = '<?xml version="1.0"?> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007"> <media:group> <media:title type="plain">' + title + '</media:title> <media:description type="plain">' + description + '</media:description> <media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">' + category + '</media:category> </media:group> </entry>';
    showMsg("Submitting metadata of video to get upload token.");
    $.ajax({
        dataType: 'xml',
        type: 'POST',
        url: 'https://gdata.youtube.com/action/GetUploadToken',
        contentType: 'application/atom+xml; charset=UTF-8',
        processData: false,
        headers: generateYouTubeApiHeaders(),
        data: xmlBody,
        success: function(responseXml) {
            var xml = $(responseXml);
            var nextUrl = window.location.href;
            var submissionUrl = xml.find('url').text() + '?nexturl=' + encodeURIComponent(nextUrl);
            var token = xml.find('token').text();

            showMsg("Uploading Video...");
            $('#form_upload').attr('action', submissionUrl);
            $('<input>').attr({
                type: 'hidden',
                name: 'token',
                value: token
            }).appendTo('#form_upload');
            $('#form_upload').submit();
        },
        error: function(jqXHR) {
            showMsg('Metadata submission failed: ' + jqXHR.responseText);
            $('#upload').removeAttr('disabled');
            $('#upload').val('Upload');
        }
    });
});

这是对 YouTube 服务器发出的最后一个 POST 请求的 Firebug 屏幕截图,该请求永无止境。

error-image

此外,我想获取视频上传的进度并使用javascript显示它,但我不知道如何实现它,我在谷歌上搜索并找到了很多方法,但对我来说没有成功。

最佳答案

YouTube 数据 API v3 中现在支持使用 CORS 进行断点续传。

一个粗糙但有效的示例,位于 https://youtube-api-samples.googlecode.com/git/yt-upload-javascript/index.html (源文件位于 https://code.google.com/p/youtube-api-samples/source/browse/#git%2Fyt-upload-javascript )显示上传流程,使用 Google+ 登录按钮处理 OAuth 2(如果您愿意,可以使用普通的 OAuth 2 浏览器客户端流程)并带有进度指示器。它还展示了如何在上传后轮询视频处理状态,并在处理后将生成的视频嵌入到页面上。

关于javascript - 使用 javascript 上传 YouTube 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19725673/

相关文章:

javascript - MailApp.sendEmail 不适用于 onEdit 功能(Google 表格脚本编辑器)

javascript - switchClass 不能添加/删除类吗?

jquery - 在 Internet Explorer 中自动调整 jQuery UI 对话框的大小

python - 即使使用 gdata-python-client 使用所有者的帐户登录,获取私有(private) YouTube 视频时也会出现 404

javascript - 获取 child 的 parent 的 index() 值

javascript - 如何通过实时重新加载获得 docpad grunt skeleton min vendor js 文件

javascript - 在 react 中,我如何强制浏览器要求保存密码?

youtube-api - 如何通过 V3 .NET 使用 api key 将视频上传到 Youtube

ruby - 我可以通过官方的 Youtube API 下载我的 YouTube 视频吗?

javascript - d3.js 轴添加刻度值