Добавление эскиза с YouTube API, используя C#?

Я создал программу для Visual Studio, которая рендерит видео со статическим изображением с помощью ffmpeg, а затем загружает их на YouTube, но он также может загружать видео, которые не воспроизводятся им.

И для тех, кого я хотел бы указать используемый эскиз, возможно ли установить эскиз для видео с помощью C#?

Я посмотрел документацию по этому вопросу, но она не включает в себя примеры C#/.NET ( https://developers.google.com/youtube/v3/docs/thumbnails/set).

1 ответ

Решение

Предполагая, что вы используете клиентскую библиотеку.net API Google, этот код должен работать

public class ThumbnailsSetOptionalParms
        {
            /// Note: This parameter is intended exclusively for YouTube content partners. The onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.
            public string OnBehalfOfContentOwner { get; set; }  

        }

        /// <summary>
        /// Uploads a custom video thumbnail to YouTube and sets it for a video. 
        /// Documentation https://developers.google.com/youtube/v3/reference/thumbnails/set
        /// Generation Note: This does not always build corectly.  Google needs to standardise things I need to figuer out which ones are wrong.
        /// </summary>
        /// <param name="service">Authenticated YouTube service.</param>  
        /// <param name="videoId">The videoId parameter specifies a YouTube video ID for which the custom video thumbnail is being provided.</param>
        /// <param name="optional">Optional paramaters.</param>        
        /// <returns>ThumbnailSetResponseResponse</returns>
        public static ThumbnailSetResponse Set(YouTubeService service, string videoId, ThumbnailsSetOptionalParms optional = null)
        {
            try
            {
                // Initial validation.
                if (service == null)
                    throw new ArgumentNullException("service");
                if (videoId == null)
                    throw new ArgumentNullException(videoId);

                // Building the initial request.
                var request = service.Thumbnails.Set(videoId);

                // Applying optional parameters to the request.                
                request = (ThumbnailsResource.SetRequest)SampleHelpers.ApplyOptionalParms(request, optional);

                // Requesting data.
                return request.Execute();
            }
            catch (Exception ex)
            {
                throw new Exception("Request Thumbnails.Set failed.", ex);
            }
        }


    }

Код скопирован из моего примера проекта клиента Google.net для youtube-Data-API ThumbnailsSample.Cs

У меня нет никакого кода для загрузки самого файла, но есть очень хорошее руководство по Drive API, оно должно быть похожим, вы должны быть в состоянии изменить загрузку медиафайлов, к сожалению, это единственная документация, которую я знаю для загрузки медиафайлов.

Вы можете установить эскиз с помощью Youtube SDK и Stream следующим образом:

    public async Task SetThumbnail(String url)
    {
        System.Net.WebClient theClient = new WebClient();
        using (var fileStream = theClient.OpenRead(url))
        {
            var videosInsertRequest = this.Service.Thumbnails.Set(this.Video.Id, fileStream, "image/jpeg");
            await videosInsertRequest.UploadAsync();
        }
        Console.WriteLine("Thumbnail " + url + " set to video: " + this.Video.Id);
    }

В этом примере вы получаете URL-адрес и устанавливаете миниатюру для видео, но вы можете изменить поток для локального потока или любого другого потока.

Другие вопросы по тегам