异步时如何使用 VideoLib 下载视频?

How can I download a video using VideoLib when it's Async?

好吧,这是我的困境:

我想学习如何使用 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

如有任何帮助,我们将不胜感激。

好的,我找到了问题的答案:

问题是allVideos是多个视频。当您使用 GetAllVideosAsync 方法时,它会检索整个视频列表。你必须缩小范围。

当您使用 mp4Videos 时,您已将其缩小到一个视频,但计算机仍然不知道这一点,因为它是多个视频的变量。 所以,简单地把代码写成这样:

var SingleVideo = mp4Videos.FirstOrDefault();

然后,使用SingleVideo变量,可以像常规视频一样保存到字节数组,但是使用async方法:

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

将内容保存到字节数组后,您可以随意保存它。

希望对有需要的人有所帮助!