【问题标题】:Issue in downloading video from Youtube?从 Youtube 下载视频的问题?
【发布时间】:2012-07-18 03:41:32
【问题描述】:

我正在尝试用 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/,所以我访问了那里,获取了源代码并阅读了它。这是一项伟大的工作,但我似乎不明白的是,这个人到底是如何知道他必须制作哪些结构和课程才能下载 YouTube 视频,以及为什么他必须经历所有这些麻烦,为什么不我的方法行不通?

有人请指导。再次感谢。

【问题讨论】:

  • 它不是“垃圾文件”,它是包含视频周围页面的 HTML(您的下载无法正常工作的原因),从 YouTube 下载视频并不简单。
  • 您需要非常小心,因为您正在做的事情是潜在的 - 而且很可能 - 不合法。

标签: c# youtube youtube-api


【解决方案1】:

我在@CodeProject 找到了这个页面,它向您展示了如何在不使用第三方库的情况下制作一个非常高效的 Youtube 下载器。请记住,有时需要稍微修改代码,因为 Youtube 有时会更改其 Web 结构,这可能会干扰您的应用与 Youtube 交互的方式。 这里是链接:这里你也可以下载C#项目文件,直接查看文件。

CodeProject - Youtube downloader using C# .NET

【讨论】:

    【解决方案2】:

    要从 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)。虽然在我自己快速查看之后,您必须解析 html 页面中的 yt.playerConfig 变量。

    使用该资源来帮助您。

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

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

    【讨论】:

    • 好的...但是在解析 html 时我需要寻找什么?我的意思是 html 中的哪个实体指向视频的 URL?
    • 抱歉,我的问题不清楚。实际上,我正在尝试开发一个可以从任何视频网站下载视频的应用程序。现在很明显,没有其他网站会在其页面中包含“yt.playerConfig”,但我试图在 metacafe 视频页面 HTML/脚本代码中查找“playerConfig”(以检查它是否是某种标准)但是似乎不是......现在请再次阅读我上面的评论,我们必须寻找什么???我说清楚了吗?再次抱歉,但我想不出任何其他方式。
    猜你喜欢
    • 2010-11-08
    • 2021-07-09
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    相关资源
    最近更新 更多