1

Async ResumableUploadを使用して動画をYouTubeにアップロードしていますが、正常にアップロードされた動画のVideoIDを取得できませんでした。これは、単一のSyncアップロードでは非常に簡単でしたが、Asyncの例を見つけることができませんでした。

コードは次のとおりです。

        var mResumableUploader = new ResumableUploader(chunkSize);
        mResumableUploader.AsyncOperationCompleted += MResumableUploaderAsyncOperationCompleted;
        mResumableUploader.AsyncOperationProgress += MResumableUploaderAsyncOperationProgress;

        var youTubeAuthenticator = new ClientLoginAuthenticator(appName, ServiceNames.YouTube, uName, passWord);
        youTubeAuthenticator.DeveloperKey = devKey;

        newVideo = new Video();

        newVideo.Title = "video";
        newVideo.Tags.Add(new MediaCategory("Entertainment", YouTubeNameTable.CategorySchema));
        newVideo.Keywords = "video";
        newVideo.Description = "video";
        newVideo.YouTubeEntry.Private = false;
        newVideo.YouTubeEntry.MediaSource = new MediaFileSource(fileName, fileContType);

        var link = new AtomLink("http://uploads.gdata.youtube.com/resumable/feeds/api/users/default/uploads");
        link.Rel = ResumableUploader.CreateMediaRelation;
        newVideo.YouTubeEntry.Links.Add(link);

        Console.WriteLine("Starting upload: ");
        mResumableUploader.InsertAsync(youTubeAuthenticator, newVideo.YouTubeEntry, "inserter");

どんな助けでも大歓迎です。

ありがとう。

4

2 に答える 2

2

提供されたサンプルのグーグルデータに示されているように、アップロードプロセスが完了した後にビデオを解析することができます。よろしく

        ru.AsyncOperationCompleted += new AsyncOperationCompletedEventHandler(ru_AsyncOperationCompleted);

void ru_AsyncOperationCompleted(object sender, AsyncOperationCompletedEventArgs e)
        {

            //upload complete
            YouTubeRequestSettings ytSettings = new YouTubeRequestSettings("myApp", googleDevKey, ytUsername, ytPassword);
            Video v = ytRequest.ParseVideo(e.ResponseStream);
            string videoId = v.VideoId;
            string watchPage = v.WatchPage.ToString();

        }
于 2013-01-22T20:25:31.090 に答える
1

YouTube API v3では、ResumableUploaderを使用する必要はありません。VideoInsertRequestResponseReceivedにデリゲートを追加する必要があります。

var video = new Video();
video.Snippet = new VideoSnippet();
video.Snippet.Title = "Default Video Title";
video.Status = new VideoStatus();
video.Status.PrivacyStatus = "unlisted"; // or "private" or "public"
var filePath = @"REPLACE_ME.mp4"; // Replace with path to actual movie file.

using (var fileStream = new FileStream(filePath, FileMode.Open))
{
  var videosInsertRequest = youtubeService.Videos.Insert(video, "snippet,status", fileStream, "video/*");
  videosInsertRequest.ResponseReceived += videosInsertRequest_ResponseReceived;
  await videosInsertRequest.UploadAsync();
}

void videosInsertRequest_ResponseReceived(Video video)
{
  Console.WriteLine("Video id '{0}' was successfully uploaded.", video.Id);
}

完全なコードはここにあります:https ://developers.google.com/youtube/v3/code_samples/dotnet#upload_a_video

于 2017-02-28T16:43:41.427 に答える