2013-04-29 20 views
5

Mam bardzo duże filmy wysokiej jakości, które muszę przesyłać strumieniowo przez HTTP (na urządzenia mobilne). Nie można użyć ffmpeg do stworzenia "strumieniowej" wersji wideo.C# Przesyłanie strumieniowe filmów o niższej jakości za pośrednictwem protokołu HTTP

Muszę również w dalszym ciągu obsługiwać funkcję wyszukiwania/uruchamiania HTTP, aby użytkownik mógł przeskoczyć do przodu w filmie.

Używam ServiceStack (nie IIS).

Czy są dostępne jakieś opcje?

Mam dostęp do serwera, więc wszelkie usługi stron trzecich są dopuszczalne.

Odpowiedz

4

Niedawno dodaliśmy Częściową obsługę zawartości zarówno w directly serving Static files, jak i via a Web Service. Będzie on dostępny pod adresem v3.9.44 release of ServiceStack na NuGet, który jest planowany na ten weekend (możesz zbudować ServiceStack from the repo, jeśli potrzebujesz go wcześniej).

Częściowa obsługa zawartość zostanie automatycznie włączone gdzie będzie dostępny do poszukiwania/potok dowolny plik statyczny (serwowane przez ServiceStack) jak również wszelkie usługi, które:

zwraca plik:

return new HttpResult(new FileInfo(filePath), request.MimeType); 

zwraca bajty:

return new HttpResult(byteArray, "audio/mpeg"); 

zwraca strumień:

return new HttpResult(memoryStream, "audio/mpeg"); 

wraca surowy sznurek:

return new HttpResult(customText, "text/plain"); 

Aby wyłączyć Partial Content zestaw support:

Config.AllowPartialResponses = false; 
+0

Beautiful! Wszelkie sugestie dotyczące skompresowanej wersji filmów? –

+0

Nie, po prostu włączamy transport danych, kompresja jest problemem na poziomie aplikacji, który jak sądzę byłby już w skompresowanym strumieniu/bajtach, które są zwracane, co jest już zrozumiałe/oczekiwane przez klienta. – mythz

+1

Ciągle jestem nieco zszokowany, że dodanie obsługi wideo do mojego API "po prostu działało" ... skopiuj/wklej moją usługę obrazu, dostosuj kilka rzeczy i voila. Niesamowite. – sirthomas

Powiązane problemy