2012-10-08 10 views
5

Używam kodu z tej wersji codeproject article w celu przesłania pliku wideo MP4 do serwera SQL (varbinary (MAX)) i odtworzenia go z tego miejsca.Odtwarzanie pliku wideo z obiektu blob serwera sql za pośrednictwem modułu obsługi formatu ashx przy użyciu znacznika wideo HTML5

Moim wymaganiem jest użycie serwera SQL zamiast przechowywania i pobierania filmów z systemu plików.

Jest to kod używam, aby odtworzyć film:

<video id='my_video_1' controls 
    width="640" height="264" 
    data-setup="{"controls":true, "preload":none}" > 
    <source src='<%# "VideoHandler.ashx?id=" + Eval("ID") %>' type='video/mp4'> 
</video> 

Gdybym użyć fizyczny plik wideo jako źródła wideo, to działa. Jednak powyższy kod nie działa.

W „Internet Explorer” tag renderuje czarne pudełko z czerwonym krzyżem

W „Chrome” przyciski Player są widoczne, ale gdy klikam przycisk odtwarzania, bez wideo jest odtwarzane. Kiedy klikniemy prawym przyciskiem myszy, wyświetli się opcja "Zapisz wideo jako ...", a pobrany plik działa poprawnie z komputerem stacjonarnym.

Proszę mi pomóc z poprawnym kodem.

+0

Czy podwójne cudzysłowy w atrybucie konfigurowania danych mogą powodować problemy? –

Odpowiedz

1

Sprawdź blok kodu <video> statycznym źródłem wideo. Gdy znany jest znacznik , przetestuj program obsługi, upewnij się, że kodowanie wideo jest prawidłowe i dostarczanie prawidłowych akceptacji. Spróbuj z Mediów player..etc

<video id='my_video_1' controls width="640" height="264" 
    data-setup='{"controls":true, "preload":none}' > 
    <source src='<%# "VideoHandler.ashx?id=" + Eval("ID") %>' 
    type='video/mp4 codecs="avc1.42E01E, mp4a.40.2"'> 
</video> 


public void ProcessRequest (HttpContext context) 
{ 
    .... 
    context.Response.AppendHeader("Content-Type", "video/mp4");` 
    context.Response.AppendHeader("Accept-Ranges", "bytes"); 

    byte[] fileContents = GetYourBytesFromWhereEver(); 
    context.Response.OutputStream.Write(fileContents, 0, fileContents.Length); 
    context.Response.Flush(); 
    ..... 
} 
5

HTML5 Video Tage wymaga wsparcia dla Range Requests.

Podczas serwowania plików statycznych obsługa ta jest zapewniana wewnętrznie przez serwer, ale w przypadku usługi HttpHandler należy tę obsługę zapewnić samemu. Ogólnie oznacza to obsługę nagłówków na żądanie i serwowanie właściwych odpowiedzi z nagłówkami.

Artykuł Range Requests in ASP.NET MVC – RangeFileResult opisuje szczegółowo jak stworzyć ASP.NET MVC ActionResult z życzenie zakres wsparcia - powinien być w stanie przenieść wszystkie logiki z ExecuteResult metody ProcessRequest metody HttpHandler bez problemów.

Powiązane problemy