C# 流代理ASP.NET核心中的实时流
我有一个网络摄像头的流url,它返回一个“multipart/x-mixed-replace;boundary=myboundary”的内容类型,可以通过 我想在ASP.NET CORE中创建一个可以返回相同流的代理 我已经创建了一个获取流的路由: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
[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你试过调试测试端点以查看错误抛出的位置吗?