【问题标题】:download youtube video in C++用 C++ 下载 youtube 视频
【发布时间】:2026-01-18 18:35:01
【问题描述】:

我正在编写一个方法,应该从 youtube 下载 .flv 视频并将其保存到硬盘驱动器。我已经阅读了所有内容,可用的源代码,论坛,但我无法让我的代码工作。我认为 youtube 已删除此功能,并且不再可以下载视频。但随之而来的问题是:一些免费和商业的程序是如何做到的?

这是我的代码:

    WebClient^ client = gcnew WebClient();

 String^ page = client->DownloadString(URL);

  String^ videoId = innerValue(URL, "v=", "&");

  String^ details = client->DownloadString("http://www.youtube.com/get_video_info?&video_id=" + videoId);

  String^ t1 = innerValue(page, "&t=", "&");

  String^ t2 = HttpUtility::UrlDecode(innerValue(details, "&token=", "&"));

  String^ videoUrl = String::Format("http://www.youtube.com/get_video?video_id={0}&t={1}&fmt={2}", videoId, t2, fmt);

  client->DownloadFile(videoUrl, gcnew String(file));

InnerValue 方法只是获取两个参数之间的文本。不管我用“t1”还是“t2”,还是不行!

让我知道我做错了什么?

谢谢

【问题讨论】:

    标签: video download youtube


    【解决方案1】:

    尝试使用浏览器下载您正在形成的网址。如果可行,您可能必须在发送请求时欺骗用户代理设置。

    【讨论】:

    • 那么显然它在您的应用程序中不起作用。尝试找出 flv url 的生成方式。
    【解决方案2】:

    我对此有一个想法,这可能对你有帮助。 所以假设你想下载一些 youtube 视频,你必须做的就是添加 ss。让我举例说明。假设您的视频是:

    https://www.youtube.com/watch?v=xyz

    改成

    https://ssyoutube.com/watch?v=xyz

    在 c++ 中使用简单的字符串操作。

    然后在此使用问题“how-to-click-a-button-on-website-with-c”的答案中提到的内容

    我更喜欢使用 Selenium。因为它有利于自动化目的。

    用这个你可以试试

    1. 点击更多按钮
    2. 选择所需的视频类型
    3. 然后下载按钮开始

    我认为这将下载视频。我知道这种技巧,而不是您要寻找的东西,但为了满足用例,可以使用它

    如果这对你有帮助,请告诉我

    【讨论】: