C#在视频中找到最高可用的YouTube分辨率

时间:2016-03-26 04:37:57

标签: c# youtube

我制作播放列表下载程序,下载播放列表中的每个视频,但到目前为止,我只能在360p下载。我想自动找到视频的最高分辨率并下载它。

这是我的代码:

                    IEnumerable<VideoInfo> videoInfos = DownloadUrlResolver.GetDownloadUrls("www.youtube.com/watch?v=" + vid.ToString());

                    VideoInfo video = videoInfos.First(info => info.VideoType == VideoType.Mp4 && info.Resolution == 360);

                    string filename = video.Title;

                    if (video.RequiresDecryption)
                    {
                        DownloadUrlResolver.DecryptDownloadUrl(video);
                    }

                    string invalidChars = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());
                    foreach (char c in invalidChars)
                    {
                        filename = filename.Replace(c.ToString(), "");
                    }

                    var videoDownloader = new VideoDownloader(video, Path.Combine(corpath, filename + video.VideoExtension));


                    Console.Write("\rVideo #{0} is currently being downloaded...", i.ToString());

                    videoDownloader.Execute();
                    i++;
                }
                catch (Exception ex)
                {

                }

我正在使用此库:https://github.com/flagbug/YoutubeExtractor/

1 个答案:

答案 0 :(得分:0)

循环浏览videoInfos并找到可用分辨率最高的那个

删除此行,因为它只获取某个分辨率

VideoInfo video = videoInfos.First(info => info.VideoType == VideoType.Mp4 && info.Resolution == 360);

添加以下代码

int maxResolution = 0;
foreach(var v in videoInfos)
{
  if (v.Resolution > maxResolution)
  {
    maxResolution = v.Resolution;
  }
}

然后记得在此之后更改代码以使用列表而不是单个对象