0

再開可能なアップロードを使用しているときに、ビデオをプレイリストに追加する方法を知っている人はいますか?

これを明確にさせてください。以下は私のコードです。

Video newVideo = new Video();
newVideo.Title = fileName.Split(".".ToCharArray())[0];
newVideo.Tags.Add(new MediaCategory("Nonprofit", YouTubeNameTable.CategorySchema));
newVideo.Description = DateTime.Now.ToShortDateString();
newVideo.YouTubeEntry.Private = false;
ResumableUploader m_ResumableUploader = null;
Authenticator YouTubeAuthenticator;

m_ResumableUploader = new ResumableUploader(100); //chunksize 1 MB
m_ResumableUploader.AsyncOperationCompleted += new AsyncOperationCompletedEventHandler(m_ResumableUploader_AsyncOperationCompleted);
m_ResumableUploader.AsyncOperationProgress += new AsyncOperationProgressEventHandler(m_ResumableUploader_AsyncOperationProgress);

YouTubeAuthenticator = new ClientLoginAuthenticator("YouTubeUploader", ServiceNames.YouTube, ConfigurationManager.AppSettings["USERNAME"].ToString(), ConfigurationManager.AppSettings["PASSWORD"].ToString());

YouTubeAuthenticator.DeveloperKey = ConfigurationManager.AppSettings["DEVELOPER_KEY"].ToString();
string contentType = MediaFileSource.GetContentTypeForFileName(fileName);
newVideo.MediaSource = new MediaFileSource(filePath, contentType);

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

System.IO.FileStream stream = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);

m_ResumableUploader.InsertAsync(YouTubeAuthenticator, newVideo.YouTubeEntry, new object());  

ビデオをプレイリストに直接アップロードしようとしています。

私はこのコードを見ていますが、2 つを接続するのに苦労しています。助けが必要。

https://developers.google.com/youtube/2.0/developers_guide_dotnet

動画をプレイリストに追加する

PlayListMember オブジェクトを使用して、ビデオをプレイリストに追加できます。次のコードは、既知の ID 値を持つ PlayListMember オブジェクトを作成し、それを Playlist オブジェクト (p) に追加します。要求では、動画が再生リストに表示される位置が指定されていないため、新しい動画は再生リストの最後に追加されます。

 // For Playlist object p
 PlayListMember pm = new PlayListMember();
 // Insert <id> or <videoid> for video here
 pm.Id = VIDEOID;
 request.AddToPlaylist(p, pm);

更新 1 - プレイリストに追加するときに「サポートされていない URI 形式」エラーが表示されます。

YouTubeRequestSettings ys = new YouTubeRequestSettings("YouTubeUploader",
ConfigurationManager.AppSettings["DEVELOPER_KEY"].ToString());
YouTubeRequest ytr = new YouTubeRequest(ys);
Video v = ytr.ParseVideo(e.ResponseStream);                  
PlayListMember pm = new PlayListMember();
Feed<Playlist> userPlaylists = ytr.GetPlaylistsFeed(ytr.Credentials.Username);
foreach (Playlist p in userPlaylists.Entries)
{
     fs.WriteLine(p.Title);
     if (p.Title == "Test 2")
     {
          pm.Id = v.VideoId;
          ytr.AddToPlaylist(p, pm);

          fs.WriteLine("Added To Playlist ");
     }
}
4

2 に答える 2

1

私はそれを考え出した。YouTube のコードにエラーがあります。PlayListMember id を VIDEOID に設定するように指示されます。

 // For Playlist object p
 PlayListMember pm = new PlayListMember();
 // Insert <id> or <videoid> for video here
 pm.Id = VIDEOID;
 request.AddToPlaylist(p, pm);

それは正しくありません。VIDEOID を PlayListMember VideoID に設定する必要があります

 // For Playlist object p
 PlayListMember pm = new PlayListMember();
 // Insert <id> or <videoid> for video here
 pm.VideoId = VIDEOID;
 request.AddToPlaylist(p, pm);
于 2013-01-03T14:56:25.840 に答える
0

2 つの操作をリンクするのは、ビデオ ID です。最初の部分 (アップロード) からビデオ ID を取得し、それを 2 番目の部分 (プレイリストの挿入) に提供する必要があります。問題は、.NET クライアント ライブラリを使用して再開可能なアップロードを実行するときに、新しいビデオのビデオ ID を取得する方法に要約されます。

このサンプルコードは特にそれを扱っていると思います: http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/YouTubeUploader/YouTubeUploader/insertandretry.cs#169

于 2012-12-28T16:33:00.073 に答える