【问题标题】:Youtube C# .NET API : Uploading video and getting events when finishedYoutube C# .NET API:上传视频并在完成后获取事件
【发布时间】:2011-09-20 10:58:48
【问题描述】:

这是使用 C# .NET API 从 Windows 窗体桌面应用程序上传视频到 Youtube 的代码:

YouTubeRequestSettings settings = new YouTubeRequestSettings("whatwill come here ?",
                "my api key",
                "my youtube login email", "my youtube login password");
YouTubeRequest request = new YouTubeRequest(settings);

Video newVideo = new Video();

newVideo.Title = "test 1";
newVideo.Tags.Add(new MediaCategory("Gaming", YouTubeNameTable.CategorySchema));
newVideo.Keywords = "test 1 , test 2";
newVideo.Description = "test 3 test 4";
newVideo.YouTubeEntry.Private = false;
newVideo.Tags.Add(new MediaCategory("tag 1, tag 2",
              YouTubeNameTable.DeveloperTagSchema));
newVideo.YouTubeEntry.Location = new GeoRssWhere(37, -122);
newVideo.YouTubeEntry.MediaSource = new MediaFileSource("C:\\test.avi", "video/quicktime");         
Video createdVideo = request.Upload(newVideo);

这行得通。我正在寻找的是让我恢复上传进度的事件,所以我可以在进度条中显示进度。我可以注册以下事件:

                            request.Service.AsyncOperationProgress +=
                            new AsyncOperationProgressEventHandler(Service_AsyncOperationProgress);
                        request.Service.AsyncOperationCompleted +=
                            new AsyncOperationCompletedEventHandler(Service_AsyncOperationCompleted);

...但他们在上传时永远不会被解雇。此外,我找不到任何关于 .NET api 的文档比上面的小视频上传示例更进一步。那么:这些是要寻找的错误事件吗?仅供参考,我在后台线程中的以下代码中开始看似同步上传:

            ThreadPool.QueueUserWorkItem(
            delegate
                {
                    try
                    {
                        createdVideo = request.Upload(newVideo);
                    } catch (Exception ex){
                      Invoke((ThreadStart) delegate{uploadingFailedWithException(ex);});
                    }
                });
            Invoke((ThreadStart)readyUploading);

这样我就知道同步操作何时结束,但我想为用户提供进度更新事件。有什么想法吗?

【问题讨论】:

    标签: c# youtube c#-2.0 youtube.net-api


    【解决方案1】:

    您使用的 Upload 方法是同步的,因此,您的程序的执行将在该行代码处停止,仅在上传完成后继续执行。

    您尝试执行的操作需要使用异步上传。显示如何使用 ResumableUploader 组件和 AsyncOperationCompleted/AsyncOperationProgress 事件的完整示例包含在 .NET 客户端库中,可在 http://code.google.com/p/google-gdata/source/browse/#svn%2Ftrunk%2Fclients%2Fcs%2Fsamples%2FYouTubeUploader%2FYouTubeUploader 获得。

    【讨论】:

    • 谢谢,确实应该这样做! :-)
    猜你喜欢
    • 2016-07-22
    • 2011-11-22
    • 2016-02-05
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2013-04-07
    • 2023-01-22
    相关资源
    最近更新 更多