Csharp/C#教程:如何在asp.net中流式传输video内容?分享


如何在asp.net中流式传输video内容?

我有以下代码下载video内容:

WebRequest wreq = (HttpWebRequest)WebRequest.Create(url); using (HttpWebResponse wresp = (HttpWebResponse)wreq.GetResponse()) using (Stream mystream = wresp.GetResponseStream()) { using (BinaryReader reader = new BinaryReader(mystream)) { int length = Convert.ToInt32(wresp.ContentLength); byte[] buffer = new byte[length]; buffer = reader.ReadBytes(length); Response.Clear(); Response.Buffer = false; Response.ContentType = "video/mp4"; //Response.BinaryWrite(buffer); Response.OutputStream.Write(buffer, 0, buffer.Length); Response.End(); } } 

但问题是整个文件在播放前下载。 如何在下载时将其设为流媒体播放? 或者由客户/接收器应用程序来管理?

您正在将整个文件读入单个缓冲区,然后立即发送整个字节数组。

你应该在while循环中读入一个较小的缓冲区。

例如:

 byte[] buffer = new byte[4096]; while(true) { int bytesRead = myStream.Read(buffer, 0, buffer.Length); if (bytesRead == 0) break; Response.OutputStream.Write(buffer, 0, bytesRead); } 

你看过Smooth Streaming吗?

在这里查看示例代码

这对您来说更有效,特别是如果您需要从服务器上的文件流式传输video,或者甚至此文件托管在其他服务器上

文件在您的服务器上:

 context.Response.BinaryWrite(File.ReadAllBytes(HTTPContext.Current.Server.MapPath(_video.Location))); 

外部服务器上的文件:

上述就是C#学习教程:如何在asp.net中流式传输video内容?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 var wc = new WebClient(); context.Response.BinaryWrite(wc.DownloadData(new Uri("https://mysite/video.mp4"))); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1005242.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐