Member 13676168 Ответов: 0

MJPEG stream w/ .NET core 2.0


Я использую .NNET Core 2.0 для разработки своего веб-API на C#, и я хочу переслать поток изображений MJEPG с запросом HTTP GET. Я создал составное содержимое, но когда я проверяю ответ, я вижу только первое изображение, и никакого воспроизведения видео не происходит. Я пытался даже использовать внешний файл mjpeg, который, как я знаю, работает, но он делает то же самое, он отображает первое изображение.

Что я уже пробовал:

Я попытался использовать уже существующий поток MJEPG, который я получаю от события камеры, и использовать файл mjepg.

Это запрос Get контроллера:
// GET: api/<controller>
[HttpGet]
public IActionResult Get()
{
   var path = Path.Combine(
                   Directory.GetCurrentDirectory(),
                   "LVUpload", "test.mjpeg");

    var stream = new FileStream(path, FileMode.Open);

    MultipartResult multipartResult = new MultipartResult
    {
        ContentType = "image/jpeg",
        Stream = stream
    };
    return multipartResult;
}

И реализации составных :
public class MultipartContent
{
    public string ContentType { get; set; }

    public Stream Stream { get; set; }
}

public class MultipartResult : MultipartContent, IActionResult
{
    private readonly System.Net.Http.MultipartContent content;

    public MultipartResult(string subtype = "x-mixed-replace", string boundary = "canonliveview")
    {
        if (boundary == null)
        {
            this.content = new System.Net.Http.MultipartContent(subtype);
        }
        else
        {
            this.content = new System.Net.Http.MultipartContent(subtype, boundary);
        }
    }

    public async Task ExecuteResultAsync(ActionContext context)
    {
            if (Stream != null)
            {
                var content = new StreamContent(Stream);

                if (ContentType != null)
                {
                    content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(ContentType);
                }

                this.content.Add(content);
            }

        context.HttpContext.Response.ContentLength = content.Headers.ContentLength;
        context.HttpContext.Response.ContentType = content.Headers.ContentType.ToString();

        await content.CopyToAsync(context.HttpContext.Response.Body);
    }

Может ли кто-нибудь помочь мне сделать это с помощью .Net Core 2.0? Я знаю, что это возможно с полным .Net framework, но я должен использовать последнюю версию .Net Core.

0 Ответов