首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图将视频上传到YouTube,视频被上传,但上传后我得到了一个异常

试图将视频上传到YouTube,视频被上传,但上传后我得到了一个异常
EN

Stack Overflow用户
提问于 2011-09-21 11:15:52
回答 2查看 3.5K关注 0票数 1

这是代码:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Google.GData.Client;
using Google.GData.Extensions;
using Google.GData.Extensions.MediaRss;
using Google.GData.YouTube;
using Google.YouTube;



namespace YoutubeTesting
{
    public partial class Form1 : Form
    {


        public Form1()
        {
            InitializeComponent();
        }

        YouTubeRequestSettings settings;
        YouTubeRequest request;
        string devkey = "AI39si6xhSQXx95FTYIACWPfq-lLIphblgaReuz9z6VEjR1Q6YjrV6FRN2U6FN6P6-lGF2OYaUZhCVOKJ_MCk4o6kPeUszvf5A";
        string username = "tbout72";
        string password = "password here";


        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                settings = new YouTubeRequestSettings("You Manager", devkey, username, password);
                request = new YouTubeRequest(settings);
                Video video = new Video();
                video.Title = "test";
                video.Tags.Add(new MediaCategory("Comedy", YouTubeNameTable.CategorySchema));
                video.Keywords = "Comedy";
                video.Private = false;
                video.MediaSource = new MediaFileSource("d:\\P9170031.MOV", "video/MOV");
                request.Upload(video);
                MessageBox.Show("Successfully Uploaded");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

我从http://code.google.com/p/google-gdata/downloads/list引用了一些dll文件,我下载了两个文件: Google_Data_API_Setup_1.9.0.0.msi Google安装程序(1.9)和YouTube_SDK_1.9.0.0.msi

现在我又试着上传一个视频文件--这个视频文件--上传得很好,一次没有问题,视频正在youtube.com上运行,但是即使它在我的代码中工作,我也得到了一个异常错误。不管上传是否有效,我都得到了例外。

  1. 程序正在运行,挂起了几分钟,在运行时我看不到form1。
  2. 几分钟后我就会破例了。

尽管我得到了异常,每次程序运行时都会得到异常,但是文件上传得很好。

我不知道为什么,但我看到文件被上传了3-5次,一次或两次很好地上传了相同的文件,其他文件被拒绝,因为它是一个副本。但是我运行了一次程序,所以为什么有时它同时上传文件这么多次?现在我又试了一次,程序不再运行了,就像10分钟前我关闭了它。看到文件上传,现在正在处理,在它完成过程后,我再次看到文件上传,现在它被拒绝了,因为它是一个副本。但是,如果程序没有运行,它为什么要继续上传文件呢?

上传之间的时间大约是14分钟,相同的文件,我的程序关闭了,我再也没有运行它,但我看到两个文件同名,相同的文件:一个是好的,一个是被拒绝的复制。

所以我现在有三个问题:

  1. 在运行程序时无法看到form1,就像程序挂起一样。
  2. 异常错误总是会出现。
  3. 该文件正在上传不止一次。

例外是在线:request.Upload(视频);

异常错误消息是:请求执行失败:

代码语言:javascript
复制
https://uploads.gdata.youtube.com/feeds/api/users/default/uploads

这是完全例外:

代码语言:javascript
复制
Google.GData.Client.GDataRequestException was caught
  Message=Execution of request failed: https://uploads.gdata.youtube.com/feeds/api/users/default/uploads
  Source=Google.GData.Client
  StackTrace:
       at Google.GData.Client.GDataRequest.Execute()
       at Google.GData.Client.GDataGAuthRequest.Execute(Int32 retryCounter)
       at Google.GData.Client.GDataGAuthRequest.Execute(Int32 retryCounter)
       at Google.GData.Client.GDataGAuthRequest.Execute(Int32 retryCounter)
       at Google.GData.Client.GDataGAuthRequest.Execute(Int32 retryCounter)
       at Google.GData.Client.GDataGAuthRequest.Execute()
       at Google.GData.Client.MediaService.EntrySend(Uri feedUri, AtomBase baseEntry, GDataRequestType type, AsyncSendData data)
       at Google.GData.Client.Service.Insert(Uri feedUri, AtomEntry newEntry, AsyncSendData data)
       at Google.GData.Client.Service.Insert[TEntry](Uri feedUri, TEntry entry)
       at Google.GData.YouTube.YouTubeService.Upload(String userName, YouTubeEntry entry)
       at Google.YouTube.YouTubeRequest.Upload(String userName, Video v)
       at Google.YouTube.YouTubeRequest.Upload(Video v)
       at YoutubeTesting.Form1.Form1_Load(Object sender, EventArgs e) in D:\C-Sharp\Youtube_Testing\YoutubeTesting\YoutubeTesting\Form1.cs:line 47
  InnerException: System.Net.WebException
       Message=The operation has timed out
       Source=System
       StackTrace:
            at System.Net.HttpWebRequest.GetResponse()
            at Google.GData.Client.GDataRequest.Execute()
       InnerException: 

表格1.cs上的第47行是:request.Upload(视频);

现在,我再次看到它上传了4次文件:不知道为什么和如何继续上传文件。其中3份文件被拒绝复制,其中一份没有问题!

我问了一个人,他告诉我这件事对他来说没有任何问题。

我使用的是Visual 2010 pro .net 4.0 Windows 7 64位。

我多次检查了我的YouTube登录和密码,也检查了我的Gmail和所有时间相同的问题和异常。

EN

回答 2

Stack Overflow用户

发布于 2011-09-21 11:24:08

异常说明了这里发生的事情:请求超时了。您可以使用这一财产更改超时。默认情况下,它设置为100,000毫秒。您可以将其设置为更大的数目,以增加超时,或者将其设置为-1以坚持HTPPRequestObject的默认设置:

代码语言:javascript
复制
settings.Timeout = -1;

此外,您应该上传视频在一个单独的线程。这样,GUI就会保持响应性,并且不会像您所说的那样“挂起”。

更新:

您可以像这样启动线程:

代码语言:javascript
复制
new Thread(new ThreadStart(() =>
{
    var settings = new YouTubeRequestSettings("You Manager", devkey, username, password)
    {
        Timeout = -1
    };
    var request = new YouTubeRequest(settings);
    var video = new Video()
    {
        Title = "test",
        Tags.Add(new MediaCategory("Comedy", YouTubeNameTable.CategorySchema)),
        Keywords = "Comedy",
        Private = false,
        MediaSource = new MediaFileSource("d:\\P9170031.MOV", "video/MOV"),
    };
    request.Upload(video);
})).Start();
票数 3
EN

Stack Overflow用户

发布于 2015-06-08 05:52:46

下面是通过YouTube上传c#视频的教程。

请参阅此处:http://codewithgeek.blogspot.com/2015/12/upload-video-to-youtube-from-c-aspnet.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7498811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档