2015-08-01 17 views
10

Jestem w trakcie pracy, co jest najlepszym sposobem będzie wykonać następujące czynności:treści wideo na żywo za pośrednictwem sieci Web API 2

Mam kilka plików Powierzchnia CCTV (pliki MP4, począwszy od 4MB-50MB), które chcę udostępnić za pośrednictwem portalu internetowego. Moją pierwszą myślą było przesyłać plik poprzez Web API, więc znalazłem link poniżej:

http://www.strathweb.com/2013/01/asynchronously-streaming-video-with-asp-net-web-api/

Po wdrożeniu przykładowy projekt, zdałem sobie sprawę, że przykład został oparty na sieci Web API 1, i nie Web API 2.1, którego używam. Po przeprowadzeniu dalszych badań dostałem kod do skompilowania z WebAPI 2.1. I wtedy zrozumiałem, że jeśli chcę zrobić strumieniowe nie mogę korzystać z plików MP4, tam jest sporo szczegółów technicznych za to, więc tutaj jest wątek:

Best approach to real time http streaming to HTML5 video client

Wydaje się to zadziałało muszę kodować moje pliki MP4 do czegoś takiego jak WebM, ale to zajmie zbyt dużo czasu. Icecast (http://icecast.org/), który jest serwerem streamingowym, ale jeszcze go nie wypróbowałem, znowu nie jestem pewien, czy to jest to, co muszę zrobić.

Teraz, gdy o tym myślę, właściwie nie potrzebuję streamingu na żywo, po prostu muszę pozwolić klientowi na odtworzenie pliku wideo za pośrednictwem przeglądarki, być może za pomocą elementu wideo HTML5? Chodzi o to, że moja aplikacja musi działać również na IOS, więc uważam, że nie mogę nawet kodować mojego MP4 do FLV i używać tylko flash.

Wszystko, czego naprawdę potrzebuję, to posiadanie wszystkich moich klipów wideo jako miniatur na stronie internetowej, a jeśli klient kliknie na jeden, zaczyna grać tak szybko, jak to tylko możliwe, bez konieczności pobierania całego pliku. Pomyśl o funkcji "Watch Trailer" na imdb.com. Po prostu po prostu odtwarzaj plik wideo, to naprawdę to, czego chcę. Nie potrzebuję streamingu na żywo, do czego jest przeznaczona usługa WebM? Znowu nie jestem pewien.

Odpowiedz

13

dwie rzeczy:

  1. użyć video element w kodzie HTML (działa w przeglądarkach i iOS):

    <video src="http://yoursite.com/api/Media/GetVideo?videoId=42" /> 
    
  2. Wsparcie 206 PARTIAL CONTENT wnioski w was kod Web API. To jest kluczowe dla obsługi przesyłania strumieniowego i iOS i jest wymienione w tym wątku, który opublikowałeś.

Wystarczy postępować zgodnie z poniższym przykładzie:

http://blogs.msdn.com/b/webdev/archive/2012/11/23/asp-net-web-api-and-http-byte-range-support.aspx

W skrócie:

if (Request.Headers.Range != null) 
{ 
    // Return part of the video 
    HttpResponseMessage partialResponse = Request.CreateResponse(HttpStatusCode.PartialContent); 
    partialResponse.Content = new ByteRangeStreamContent(stream, Request.Headers.Range, mediaType); 
    return partialResponse; 
} 
else 
{ 
    // Return complete video 
    HttpResponseMessage fullResponse = Request.CreateResponse(HttpStatusCode.OK); 
    fullResponse.Content = new StreamContent(stream); 
    fullResponse.Content.Headers.ContentType = mediaType; 
    return fullResponse; 
} 
-1

Umieść statyczne pliki wideo na serwerze WWW i odwołaj je do odtwarzacza wideo. Możesz użyć standardowego odtwarzacza HTML (< wideo src = "http: //location/of/file.mp4" >) lub wybrać coś ciekawszego - wystarczy google dla "odtwarzacza wideo html".

Aby upewnić się, że pliki wideo nie muszą być całkowicie pobierane przed rozpoczęciem odtwarzania, uruchom je wcześniej przez qt-faststart.

+0

nie wiesz o tym podejściem, ale dzięki – FaNIX

Powiązane problemy