在 C# 代码中生成直接视频 youtube 链接(就像 VLC 一样)

Generating direct video youtube links in C# code (like VLC does)

我正在尝试创建一种方法,将通过标准的 youtube link(例如 https://youtu.be/.......)并且 return 直接播放视频 link,只是就像 VLC 一样。

在 VLC 中,这是通过 luac 或 lua 代码 (https://github.com/videolan/vlc/blob/master/share/lua/playlist/youtube.lua) 完成的也出于某种原因,VLC 只能以 640x368 分辨率播放??

我尝试查看代码本身,但我对 lua 一无所知,所以我根本不理解它,即使有注释。有没有我可以阅读的关于如何完成的资源?据我了解,lua 代码从网站本身运行一些脚本来生成这个?还有很多解扰??

现在我不反对使用 LibVLC 生成 link,但正如我上面提到的,它只适用于 640x368,我不明白为什么。如果它以可用的最佳质量工作,那么这就是我会使用的(可能具有选择分辨率的能力??)

我也不太关心 youtube 的政策,所以不要告诉我“这违反了 youtube 的服务条款,不要这样做” 这只是一个个人项目。我知道 youtube 非常反对这个,因为即使是 discord 上的 rythm bot 也不得不停止运行....

所以,简而言之,我正在寻找的是:一种直接 link 获取视频资源的方法,无论是从网站生成还是从 HTML 抓取.我知道 link 是临时的,我只需要一小段时间。

来自https://code.videolan.org/videolan/LibVLCSharp/-/blob/3.x/docs/how_do_I_do_X.md#how-do-i-play-a-youtube-video

Core.Initialize();

using(var libVLC = new LibVLC())
{
    var media = new Media(libVLC, "https://www.youtube.com/watch?v=dQw4w9WgXcQ", FromType.FromLocation);
    await media.Parse(MediaParseOptions.ParseNetwork);
    using (var mp = new MediaPlayer(media.SubItems.First()))
    {
            var r = mp.Play();
            Console.ReadKey();
    }
}

media.SubItems.First() 将包含您需要的内容。

至于分辨率,我认为LibVLC无能为力。

但是如果你不需要播放,只需要视频链接,我会看看https://github.com/Tyrrrz/YoutubeExplode