Потоковое видео с ASP.NET - PullRequest
       7

Потоковое видео с ASP.NET

4 голосов
/ 03 сентября 2010

Есть ли хороший способ для потоковой передачи видео через asp.net на обычную веб-страницу и мобильный телефон? Я попробовал следующее, но это не работает в моем Sony Ericsson K810i. Когда я пробую его в своем браузере, я вижу клип (хотя не знаю, транслируется ли он).

html:

<object type="video/3gpp" 
        data="handlers/FileHandler.ashx" 
        id="player" 
        width="176" 
        height="148" 
        autoplay="true"></object>

FileHandler.ashx ( Лучший способ для потоковой передачи файлов в ASP.NET ):

public void ProcessRequest (HttpContext context) {

    string path = "~/files/do.3gp";

    string localPath = context.Server.MapPath(path);

    if (!File.Exists(localPath))
    {
        return;
    }

    // get info about contenttype etc 
    FileInfo fileInfo = new FileInfo(localPath);
    int len = (int)fileInfo.Length;
    context.Response.AppendHeader("content-length", len.ToString());
    context.Response.ContentType = FileHelper.GetMimeType(fileInfo.Name); // returns video/3gpp

    // stream file
    byte[] buffer = new byte[1 << 16]; // 64kb
    int bytesRead = 0;
    using(var file = File.Open(localPath, FileMode.Open))
    {
       while((bytesRead = file.Read(buffer, 0, buffer.Length)) != 0)
       {
            context.Response.OutputStream.Write(buffer, 0, bytesRead);
       }
    }

    // finish
    context.Response.Flush();
    context.Response.Close();
    context.Response.End();

}

1 Ответ

6 голосов
/ 17 ноября 2010

То, что у вас есть, не является «технически» потоковым.Это загрузка файла.Ваш клиент (браузер / телефон) отправил HTTP-запрос, а ваш FileHandler.ashx открыл файл и записал байты в поток ответов.Это точно такое же взаимодействие для запроса веб-страницы, за исключением того, что данные представляют собой текст HTML, а не двоичные данные, представляющие видео.

Если телефон не поддерживает видео, это может быть несовместимое кодирование.Если вы уверены, что видео можно воспроизводить на телефоне, посмотрите, хочет ли телефон поддерживать прогрессивную загрузку (например, для iPhone / iPad / iPod Touch требуется, чтобы медиаплеер «потоковое» видео.) Если это так, вынужно посмотреть на любое из нескольких решений, доступных для обработки запросов на данные диапазона байтов и ответа на запрос байтами из файла в указанном диапазоне.

Я написал библиотеку для ASP.NET MVC , чтобы справиться с этим, и моя работа была в основном сделана на основе этого руководства и исходного кода .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...