我正在使用.Net Core 2.0来开发我的ASP.Net API,我想请求外部公共流并使用我自己的GET路由转发它。
外部流是MJPEG内容类型。
由于我使用的是最新版本的.NET Core,因此PushStreamContent不再可用。
这是负责连接和流程过程的类:
internal class LiveViewStream
{
HttpClient _client = new HttpClient();
WebClient webClient = new WebClient();
public Stream outputStream = new MemoryStream();
public Stream GetVideoTCP()
{
string url = "http://87.139.76.248:8081/cgi-bin/faststream.jpg";
return webClient.OpenRead(url);
}
public void Main()
{
var bytesRead = 0;
var buffer = new byte[65536];
using (Stream stream = GetVideoTCP())
{
do
{
bytesRead = stream.Read(buffer, 0, buffer.Length);
outputStream.Write(buffer, 0, bytesRead);
}
while (stream.Position != stream.Length);
}
}
这是GET路线:
// GET: api/<controller>
[HttpGet]
public HttpResponseMessage Get()
{
var video = new LiveViewStream();
video.Main();
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(video.outputStream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("video/x-motion-jpeg");
return response;
}
此代码错误地指出while
方法不受支持。我尝试了不同的方法,但它们没有用,我要么在发出GET请求时得到一个文件,要么什么都没有。
有人可以帮我吗?
答案 0 :(得分:1)
我通过使用Socket TCP服务器解决了这个问题,并使用自定义MjpegWriter将图像转发到客户端套接字。