Как я могу скачать видео с помощью VideoLib, когда это Async? - PullRequest
0 голосов
/ 27 августа 2018

Хорошо, вот моя дилемма:

Я хотел узнать, как использовать NuGet, поэтому я протестировал его с помощью системы под названием VideoLibrary (https://www.nuget.org/packages/VideoLibrary/).). Я успешно установил его на свой компьютер и, наконец, установил, что он работает внутри кода. возможность успешно скачать видео, которое является целью расширения, однако оно было в неправильном формате. Итак, прочитав раздел вопросов и ответов, я получил этот код:

        var youTube = YouTube.Default;
        var allVideos = await youTube.GetAllVideosAsync(URL);
        var mp4Videos = allVideos.Where(_ => _.Format == VideoFormat.Mp4);

Теперь, насколько я понимаю, сначала загружаются все видео, а затем устанавливается переменная только для видео MP4. Однако после того, как это сделано, я не знаю, как сохранить его в байтовом массиве. Как правило, чтобы сохранить видео с помощью VideoLib, необходимо назначить его байтовому массиву, а затем сохранить байтовый массив в файл. Поэтому я использовал этот код ранее с видео, которое не было асинхронным:

byte[] bytes = video.GetBytes();
var stream = video.Stream();
File.WriteAllBytes(@"C:\" + fullName, bytes);

Теперь этот метод не работает с моими видео сейчас, потому что они асинхронные. Позже разработчик упомянул, что вы можете назначить видео байтовому массиву, используя:

byte[] bytes = allVideos.GetBytesAsync();

Однако по какой-то причине это не работает. Я предполагаю, что я использую это неправильно, и именно поэтому, но я не знаю. Код подчеркнут красным, и он дает:

'IEnumerable<YouTubeVideo>' does not contain a definition to 'GetBytesAsync' 
and no extension method 'GetBytesAsync accepting a first argument of type 
'IEnumerable<YouTubeVideo>'coulb be found

Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 28 августа 2018

Хорошо, я нашел ответ на свой вопрос:

Проблема в том, что allVideos - это несколько видео. Когда вы используете метод GetAllVideosAsync, он получает весь список видео. Вы должны сузить это.

Когда вы используете mp4Videos, вы сузили его до одного видео, однако компьютер все еще не знает об этом, потому что это переменная нескольких видео. Итак, просто введите код через это:

var SingleVideo = mp4Videos.FirstOrDefault();

Затем, используя переменную SingleVideo, вы можете сохранить ее в байтовом массиве, как обычное видео, но используя асинхронный метод:

Byte[] Byte = await SingleVideo.GetBytesAsync();

Как только содержимое сохранено в байтовом массиве, вы можете сохранить его любым удобным для вас способом.

Надеюсь, это поможет всем, кому это нужно!

...