2015-08-01 14 views
10

io sono nel processo di elaborazione di ciò che il modo migliore sarà fare quanto segue:Streaming di contenuti video attraverso API Web 2

ho un gruppo di file footage CCTV (file MP4, che vanno dal 4MB-50MB di dimensioni), che voglio rendere disponibile attraverso un portale web. Il mio primo pensiero è stato quello di trasmettere il file tramite Web API, così ho trovato il link qui sotto:

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

Dopo l'implementazione di un progetto di esempio, mi sono reso conto che l'esempio si è basata sul Web API 1, e non Web API 2.1, che è quello che sto usando. Dopo aver fatto ulteriori ricerche, ho ottenuto il codice da compilare con WebAPI 2.1. Poi ho capito che se voglio fare lo streaming non posso usare i file MP4, c'è una buona quantità di dettagli tecnici alla base di questo, ecco il filo:

Best approach to real time http streaming to HTML5 video client

Sembra per questo lavoro ho bisogno per codificare i miei file MP4 su qualcosa come WebM, ma ci vorrà troppo tempo. Icecast (http://icecast.org/), che è un server di streaming, ma non l'ho ancora provato, ancora una volta non sono sicuro se questo è quello che devo fare.

Ora che ci penso, in realtà non ho bisogno dello streaming live, devo solo consentire al client di riprodurre il file video tramite il browser, magari usando l'elemento video HTML5? Il fatto è che la mia applicazione ha bisogno di lavorare anche su IOS, quindi penso che significa che non posso nemmeno codificare il mio MP4 in FLV e usare solo il flash.

Tutto ciò di cui ho veramente bisogno è di avere tutti i miei video clip come miniature su una pagina web, e se il cliente ne fa clic su uno, inizia a giocare al più presto, senza dover scaricare l'intero file. Pensa alla funzione "Guarda trailer" su imdb.com. Basta semplicemente riprodurre un file video, questo è davvero quello che voglio. Non ho bisogno di streaming LIVE, che è quello che penso sia per WebM? Di nuovo, non sono sicuro.

risposta

13

due cose:

  1. utilizzare un video element nel codice HTML (questo funziona nei browser e IOS):

    <video src="http://yoursite.com/api/Media/GetVideo?videoId=42" /> 
    
  2. supporto 206 PARTIAL CONTENT richieste in voi codice Web API. Questo è cruciale sia per lo streaming che per il supporto iOS ed è menzionato in quella discussione che hai pubblicato.

Basta seguire questo esempio:

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

In poche parole:

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

Posizionare i file video statici su un server Web e fare riferimento a essi in un lettore video. Puoi utilizzare il player standard di HTML (< video src = "http: //location/of/file.mp4" >) o scegliere qualcosa di più divertente - solo google per "video player html".

Per assicurarsi che i file video non debbano essere scaricati completamente prima di iniziare a riprodurli, eseguili prima tramite qt-faststart.

+0

non sicuro di questo approccio ma grazie – FaNIX