【发布时间】:2015-09-10 11:12:10
【问题描述】:
private void UploadVideo(string FileName, string VideoTitle, string VideoDescription)
{
try
{
var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
});
video.Snippet = new VideoSnippet();
video.Snippet.Title = VideoTitle;
video.Snippet.Description = VideoDescription;
video.Snippet.Tags = new string[] { "tag1", "tag2" };
video.Status = new VideoStatus();
video.Status.PrivacyStatus = "public";
using (var fileStream = new FileStream(FileName, FileMode.Open))
{
const int KB = 0x400;
var minimumChunkSize = 256 * KB;
var videosInsertRequest = youtubeService.Videos.Insert(video,
"snippet,status", fileStream, "video/*");
videosInsertRequest.ProgressChanged +=
videosInsertRequest_ProgressChanged;
videosInsertRequest.ResponseReceived +=
videosInsertRequest_ResponseReceived;
// The default chunk size is 10MB, here will use 1MB.
videosInsertRequest.ChunkSize = minimumChunkSize * 3;
dt = DateTime.Now;
totalBytes = fileStream.Length;
videosInsertRequest.Upload();
videosInsertRequest.UploadAsync();
}
}
catch (Exception errors)
{
string errorss = errors.ToString();
}
}
直到现在我只使用以下行上传视频文件:
videosInsertRequest.Upload();
在上传的描述中说:将内容上传到服务器。这个方法是同步的,会一直阻塞,直到上传完成。
UploadAsync 描述说:将内容异步上传到服务器。
如果我有一个视频文件列表,并且我想同时上传它们,我的意思是同时上传一些视频,我该怎么做?
或者,如果我将使用 UploadAsync,那么如果我单击一个按钮,并且每次它会上传不同文件名的视频文件,它们将同时并行上传?
换句话说,我认为:我的问题应该是如何将多个视频文件同时上传到 youtube?
【问题讨论】:
-
如果您尝试同时上传多个文件,您不会遇到用户配额问题吗?如果我一次上传 10 个视频,我仍然只能每秒发送 10 个请求。所以每个视频每秒只能上传一个块,就像你一次一个视频一样,你每秒会上传 10 个块。
-
DalmTo ok 也许是另一种方式。每次我点击一个按钮上传一个新的视频文件时,它都会以某种方式将视频文件添加到队列中,并自动上传视频文件我的意思是,一旦完成上传一个文件,它将从队列中取出下一个视频文件,并将上传它等等。也许我可以使用 List
或队列以某种方式我的一般想法是拥有一批视频文件,我将单击一个按钮并“忘记”视频文件,如果不是同时上传它们。
标签: c# .net winforms google-api google-api-dotnet-client