c# - 异步时如何使用 VideoLib 下载视频?
问题描述
好吧,这是我的困境:
我想学习如何使用 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
变量,您可以像传统视频一样将其保存到字节数组中,但使用异步方法:
Byte[] Byte = await SingleVideo.GetBytesAsync();
将内容保存到字节数组后,您可以随意保存。
我希望这可以帮助任何需要它的人!
推荐阅读
- c - CS50 - 制作 helpers.c
- javascript - 当键盘打开时,在android上的webview中滚动到焦点上的特定元素
- javascript - Node.js url 模块 vs Javascript URL
- python - 如何将以文本格式从 API 返回的数据插入 Django 模型
- office365 - 如何在 window office js 2016 中使用 office js 添加评论?
- sql - 我想在 SQL Server 中以特定组大小划分表中的记录
- box2d - Box2D MLCP 求解器
- javascript - VS 扩展:更新工作区时 Websocket 连接关闭
- flutter - 颤振中没有上下文的AppLocalizations
- routes - 我如何在strapi中创建一条路线,返回我收藏的strapi中的数字总和