Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 流代理ASP.NET核心中的实时流_C#_Asp.net Core_Video Streaming - Fatal编程技术网

C# 流代理ASP.NET核心中的实时流

C# 流代理ASP.NET核心中的实时流,c#,asp.net-core,video-streaming,C#,Asp.net Core,Video Streaming,我有一个网络摄像头的流url,它返回一个“multipart/x-mixed-replace;boundary=myboundary”的内容类型,可以通过 我想在ASP.NET CORE中创建一个可以返回相同流的代理 我已经创建了一个获取流的路由: [Route("api/test")] [HttpGet] public async Task<HttpResponseMessage> Test() { var client = new HttpClient(); va

我有一个网络摄像头的流url,它返回一个“multipart/x-mixed-replace;boundary=myboundary”的内容类型,可以通过

我想在ASP.NET CORE中创建一个可以返回相同流的代理

我已经创建了一个获取流的路由:

[Route("api/test")]
[HttpGet]
public async Task<HttpResponseMessage> Test()
{
    var client = new HttpClient();
    var inputStream = await client.GetStreamAsync("http://mywebcam/livrestream.cgi");
    var response = new HttpResponseMessage();
    response.Content = new PushStreamContent((stream, httpContent, transportContext) =>
    {
        // what to do ?
    }, "video/mp4");
    return response;
}
[路由(“api/测试”)]
[HttpGet]
公共异步任务测试()
{
var client=新的HttpClient();
var inputStream=await client.GetStreamAsync(“http://mywebcam/livrestream.cgi");
var response=新的HttpResponseMessage();
response.Content=新的PushStreamContent((流、httpContent、transportContext)=>
{
//怎么办?
}“视频/mp4”);
返回响应;
}
似乎我必须使用PushStreamContent。但是我该怎么办呢?
一个无休止的while循环,定期查询流?还有别的吗?

HttpResponseMessage
不再作为asp.net-core框架中的一级公民使用,并将序列化为普通对象模型

Asp.net Core内置了对范围请求的支持

从您的可访问链接检索流,并将流传递给您,包括适当的内容类型

static Lazy<HttpClient> client = new Lazy<HttpClient>();
const string WebCamUrl = "http://mywebcam/livrestream.cgi";

[Route("api/test")]
[HttpGet]
public async Task<IActionResult> Test() {        
    var contentType = "multipart/x-mixed-replace;boundary=myboundary";
    Stream stream = await client.Value.GetStreamAsync(WebCamUrl);
    var result = new FileStreamResult(stream, contentType) {
         EnableRangeProcessing = true
    };
    return result;
}
static Lazy client=new Lazy();
常量字符串WebCamUrl=”http://mywebcam/livrestream.cgi";
[路线(“api/测试”)]
[HttpGet]
公共异步任务测试(){
var contentType=“multipart/x-mixed-replace;boundary=myboundary”;
Stream=wait client.Value.GetStreamAsync(WebCamUrl);
var result=new FileStreamResult(流,contentType){
EnableRangeProcessing=true
};
返回结果;
}

为什么要使用
HttpResponseMessage
?这在asp.net-core中不再使用。第二,也要考虑头,以允许部分/块(即:范围头)为什么不考虑,但我不知道我应该在PushStreamContent中做什么?或者有另一种方法可以实现这一点?我不知道它是否工作,视频不会在dashjs播放器中启动:在网络检查器中,我可以看到请求“挂起”,最后,我让net::ERR_中止了500(内部服务器错误)@Tim你试过调试测试端点以查看错误抛出的位置吗?