2

当我经过

http://www.youtube.com/watch?v=Zi8vJ_lMxQI

作为参数,下载的是 HTML 代码而不是视频。

public void StreamDownload(Uri currentUrl)
        {
            int dataLength;
            int bytesRead;

            WebRequest req = WebRequest.Create(currentUrl);
            WebResponse response = req.GetResponse();
            string oFileName = System.IO.Path.GetFileName(URLBox.Text);

            oFileName = AdditionalFunctions.CorrectFname(oFileName); //this function replaces forbidden characters with '♥'.

            Stream dataStream = response.GetResponseStream();

            byte [] buffer = new byte[1024];

            FileStream oFile = new FileStream(oFileName,FileMode.Append);

            dataLength = (int)response.ContentLength;

            do
            {
                bytesRead = dataStream.Read(buffer, 0, buffer.Length);
                oFile.Write(buffer, 0, bytesRead);
            }
            while (bytesRead != 0);
        }

由于评论而编辑
是否有从指定 URL 提取视频流的通用算法?Youtube 只是一个例子。

4

2 回答 2

2

您的代码可能很好,但您使用的 url 用于网页而不是视频文件本身。

检查呈现的 html 源代码(右键单击页面和“查看源代码”)。你应该在那里找到网址。

您还可以从您的 youtube-link 遍历 html 以在您的代码中找到源 url。

于 2012-07-28T22:29:20.557 回答
2

正如我在评论中所说:WEBPAGE(你从你的 URL 获得的)是带有 PLAYER 组件的媒体,该媒体将通过某种流媒体访问。

因此,首先,您必须解析网页以查找您的流 URL 是否存在于某处。如果不是,则需要某种网络数据包捕获来确定最近从尝试加载/播放视频的进程打开了哪个连接,然后从该连接捕获数据。

棘手的东西。

对于 YouTube:

从 YouTube 下载视频

于 2012-07-28T23:32:49.447 回答