试图上传到YouTube的视频,视频上传,但它上传

问题描述:

这之后,我的一个例外是代码:试图上传到YouTube的视频,视频上传,但它上传

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 Data API Setup(1.9)和YouTube_SDK_1.9.0.0.msi

现在我试着将视频文件再次上传到这个视频文件中,并且它上传得很好,没有问题一次,视频在youtube.com上工作 但即使它在我的代码中工作,我也有一个异常错误。无论上传是否正常,我都会得到例外。

  1. 该程序运行并挂了几分钟,我看不到form1它正在运行。
  2. 几分钟后,我收到异常。

即使我收到异常,每次程序运行时都会得到它,文件上传的很好。

我不知道为什么,但我看到文件上传3-5次,上传一次或两次,上传的文件相同,其他文件因为重复而被拒绝。但是我一次运行这个程序,为什么有时它会一次上传这么多次?现在我再次尝试;该程序不再运行,我像10分钟前关闭它。并且看到文件已经上传并且在完成处理后立即进行处理,我再次看到文件上传,现在由于它是重复的而被拒绝。但是,如果程序没有运行,为什么它会继续上传文件?

上传之间的时间就像14分钟同样的文件我的程序关闭我没有运行它,但我看到两个文件具有相同的名称,相同的文件:一个是好的一个是拒绝重复。

所以我现在有3个问题:

  1. 无法看到Form1中运行,如程序挂程序时。

  2. 出现异常错误。

  3. 该文件上传多一次。

异常就行了:request.Upload(video);

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

https://uploads.gdata.youtube.com/feeds/api/users/default/uploads 

这是完整的例外:

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: 

线47上Form1.cs的是:request.Upload(视频);

现在我再次看到它正在上传文件,如4次: 无法弄清楚为什么以及如何保持上传文件。 而其中3个文件被拒绝重复,一个没问题!

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

我使用Visual Studio 2010 pro .net 4.0 Windows 7 64bit。

我多次查看了我的YouTube登录信息和密码,并且也在我的Gmail中以及所有时间都出现了相同的问题和例外情况。

例外状态说明了这里发生了什么:您的请求超时。您可以使用this property更改超时时间。它默认设置为100,000毫秒。你可以将其设置为一个较大的数目,增加超时或为-1坚持HTPPRequestObject默认:

settings.Timeout = -1; 

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

更新:

可以启动一个线程是这样的:

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(); 
+0

你能告诉我怎么OT使用我的代码的线程?无法找到如何。 –

+0

@Daniel Lip:我编辑了我的答案。 –

这里是教程通过C#上传YouTube影片。

参考这里:http://codewithgeek.blogspot.com/2015/12/upload-video-to-youtube-from-c-aspnet.html