3

我在 curl lib 上使用 curlpp,以便从 youtube 下载视频。

我设法下载了flv,但无法使用各种视频播放器打开它。

我使用了另一个 youtube 视频下载器并下载了完全相同质量的完全相同的视频,我注意到请求相同,文件大小也几乎相同 - 我认为这是问题所在,例如:MyVideo.flv - 4.55MB 工作视频.flv - 4.53MB

这是代码:

// Callback Function size_t FileCallback(FILE f, char ptr, size_t size, size_t nmemb) { return fwrite(ptr, size, nmemb, f); }

void GetVideo(std::wstring videoUrl) {

    FILE * file = fopen("C:\\locatin\\b.flv", "w");

if (file)
{
    curlpp::Cleanup cleaner;
    curlpp::Easy request;

    // Set the writer callback to enable cURL to write result in a memory area
    curlpp::types::WriteFunctionFunctor functor(utilspp::BindFirst(utilspp::make_functor(&FileCallback), file));
    curlpp::options::WriteFunction *getFileOpt = new curlpp::options::WriteFunction(functor);
    request.setOpt(getFileOpt);

    // Setting the URL to retrive.
    request.setOpt(new curlpp::options::Url(videoUrl));
    request.setOpt(new curlpp::options::Verbose(true));
    request.setOpt(new Timeout(2000));

    std::list<std::string> headers;
    headers.push_back("Connection: keep-alive");
    headers.push_back("Keep-Alive: 115");
    headers.push_back("Accept-Encoding: gzip,deflate");
    headers.push_back("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");
    headers.push_back("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10");
    headers.push_back("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    headers.push_back("Accept-Language: en-us,en;q=0.5");

    request.setOpt<HttpHeader>(headers);
    request.perform();

    fclose(file);
}

}

任何想法任何人?

谢谢。

4

2 回答 2

1

由于我在 Windows 平台上开发,我决定下载文件我将使用 URLDownloadToFile 信息:http: //msdn.microsoft.com/en-us/library/ms775123%28VS.85%29.aspx

这就像一个魅力,仍然不知道为什么 curl 保存文件与 IE 或 FF 或上面的 win32 api 函数有点不同。

于 2010-10-04T13:28:09.940 回答
0

Youtube 可以提供以h263 (flashvideo)、h264 等多种格式编码的视频。您下载的是哪种格式?这个网站也有很好的 youtube 音频/视频格式信息)

使用工具验证文件的标题并确保您下载的内容正常!如果您在 *nix 上,您可以在命令行上 执行文件:file filename.flv

另一种可能性是您可能没有播放视频所需的编解码器。这可以解释为什么您的系统上没有视频播放器能够播放您下载的视频。

于 2010-10-03T18:21:52.580 回答