c# - 捕获网络响应流

标签 c# url stream

当我通过

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 只是一个例子。

最佳答案

正如我在评论中所说:网页(您从 URL 中获得的内容)是带有媒体播放器组件的东西,可以通过某种流式传输方式从其访问该媒体。

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

棘手的事情。

对于 YouTube:

Downloading video from YouTube

关于c# - 捕获网络响应流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11704996/

相关文章:

javascript - Python:从javascript按钮获取下载链接

具有 IO 效果的 Haskell 流

c# - 将文件流式传输到 Azure Blob 存储?

c# - 如何使用 C# 在表单加载时单击按钮

c# - 如何在asp.net mvc和C#中使用序列化数据

android - UnknownHostException 或 IllegalStateException

google-maps - 谷歌距离矩阵与谷歌地图的距离差异

C# 将 2 个流合并为一个

c# - 如果处理了特定异常,如何防止中断

c# - 读取自定义配置部分返回 "Invalid Key Value"