gpt4 book ai didi

c# - 从 Youtube 下载视频的问题?

转载 作者:行者123 更新时间:2023-12-03 05:28:21 25 4
gpt4 key购买 nike

我正在尝试用 C# 为桌面制作视频下载应用程序。
现在的问题是以下代码可以正常工作:

WebClient webOne = new WebClient();
string temp1 = " http://www.c-sharpcorner.com/UploadFile/shivprasadk/visual-studio-and-net-tips-and-tricks-15/Media/Tip15.wmv";
webOne.DownloadFile(new Uri(temp1), "video.wmv");

但以下代码没有:
temp1="http://www.youtube.com/watch?v=Y_..."

(在这种情况下,会下载 200-400 KB 的垃圾文件)

这两个 URL 之间的区别很明显,第一个包含文件的确切名称,而另一个似乎以某种方式加密.​​.....

我无法找到任何适当且令人满意的问题解决方案,因此我非常感谢您在这里提供一些帮助,谢谢。

笔记:
从这里的一个问题我得到了一个链接 http://youtubefisher.codeplex.com/所以我访问了那里,得到了源代码并阅读了它。这是一项伟大的工作,但我似乎不明白的是,这个人究竟是如何知道他必须制作哪些结构和类(class)才能下载 YouTube 视频,以及为什么他必须经历所有这些麻烦,为什么不我的方法行不通?

请有人指导。再次感谢。

最佳答案

要从 youtube 下载视频,您必须找到实际的视频位置。不是您用来观看视频的页面。 http://www.youtube.com/watch?v=... url,是一个 html 页面(很像这个),它将从它的源位置加载视频并显示它。通常,您必须解析 html 并从 html 中提取视频位置。

在您的情况下,您已经找到了执行此操作的代码 - 幸运的是,因为从 youtube 下载视频一点也不简单。查看您在问题中提供的链接,可以在 YoutubeService.cs / GetDownloadUrl() 中找到疯狂背后的魔力。 :

http://youtubefisher.codeplex.com/SourceControl/changeset/view/68461#1113202

该方法正在解析 youtube 观看 url 返回的 html 页面,并找到实际的视频内容。增加的复杂性是 youtube 视频也可以是各种不同的格式。

如果下载后需要转换视频类型,我推荐FFMPEG

编辑:回应您的评论 - 您根本没有查看 YoutubeFisher 的源代码,是吗?我建议分析我提到的文件(YoutubeService.cs)。虽然在我自己快速查看之后,您必须解析 yt.playerConfig html页面中的变量。

使用该资源来帮助您。

编辑:回应您的第二条评论:“实际上,我正在尝试开发一个可以从任何视频网站下载视频的应用程序。”你说这很容易 - 仅供引用,它不是。由于每个视频网站都是不同的,您不能只写一些开箱即用的东西。如果我必须这样做,我会这样做:我会为主要的视频共享网站(Metacafe、Youtube、其他)编写自定义解析器,以保证这些网站能够正常工作。在那之后,如果你愿意,我会写一个“失败”。基本上,如果您从未知网站请求视频,它会搜索 html 以寻找已知的视频扩展名(flv、wmv、mp4 等),然后从中提取 url。

在后一种情况下,您可以使用正则表达式来提取 url,或者使用 indexof、substring 和 lastindexof 之类的组合。

关于c# - 从 Youtube 下载视频的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11552644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com