Rozwiązania służącego do udostępniania strumieni live w formacie MPEG-DASH.

Zlecenie zamknięte
no avatar
Polon
Zleceniodawca
Kategoria zlecenia:
Usługi programowania
Budżet:

Do negocjacji

Opublikowano:
Zakończone

Opis zlecenia

Potrzebne jest rozwiązanie, które będzie przetwarzało w locie strumień multimedialny z sieci do plików w formacie MPEG-DASH (profil live).

Całość może być wykonana albo jako w pełni niezależna aplikacja (uruchamiana na serwerze przez nasze provisionery) albo jako biblioteka Javy, do osadzania w naszej aplikacji, ale w takim wypadku musielibyśmy uzgodnić API.

Wymagany kod źródłowy rozwiązania.

Wymagania funkcjonalne:

- aplikacja musi obsługiwać bez problemu stream do 1080i, więc proponujemy obsługę protokołu RSTP, ale może być inny po uzgodnieniu z naszą stroną;

- jesteśmy w stanie dostosować format streamu do potrzeb aplikacji, tak więc przed rozpoczęciem prac proponuję uzgodnić z nami wymagany format, uważamy, że najwygodniej będzie zastosować MP4/H.264;

- adres strumienia wejściowego musi być odczytywany z parametrów wejściowych aplikacji/przekazywany przez parametr funkcji (jednocześnie będzie mogło być uruchomionych kilka instancji dla różnych strumieni wejściowych);

- drugim argumentem aplikacji/funkcji powinna być ścieżka, w której generowane będą pliki pakietów MPEG-DASH oraz manifest, manifest powinien być zapisany w pliku `manifest.mpd`;

- dodatkowym parametrem będzie plik z konfiguracją, który opisywać będzie docelowe formaty pakietów MPEG-DASH:

- ogólna konfiguracja (na chwilę obecną przede wszystkim długość pojedynczego chunka);

- video (konfigurowalny powinien być ID danego pakietu, rozdzielczość, oraz bitrate),

- audio (konfigurowalny powinien być ID danego pakietu, oraz bitrate);

- aplikacja powinna co zadany okres czasu generować screenshot z jednego z chunków (może to być zrobione jako osobna aplikacja uruchamiana dodatkowo).

Wymagania niefunkcjonalne:

- całość musi być możliwa do uruchomienia i zbudowania na platformie opartej o system Debian Wheezy;

- za "dostępne" można uznać pakiety z repozytoriów Debiana (albo innych repozytoriów Apt, jeśli są udostępniane release'y dla wersji Debian Wheezy), a także repozytoriów paczek dla poszczególnych technologii: Maven (dla Javy i innych opartych o JVM), Ruby Gems (dla Ruby), pip (dla Pythona), Composer (dla PHP), npm (JavaScript), NuGet (C#), Dub (D), go get (Go) itp;

- w przypadku braku paczek należy dostarczyć skrypty automatyzujące budowanie zależności z kodu źródłowego;

- w przypadku języka innego niż C, C++, C#, D, Java (i inne oparte na JVM jak Groovy, Scala), Go, Python, PHP, Ruby, Smalltalk, JavaScript, prosimy o konsultację - chcemy być w stanie samodzielnie wspierać stworzone rozwiązanie;

- w kodzie źródłowym jako znaków nowych linii należy używać \n (Linux line ending), kodowania UTF-8, a jako wcięć 4 spacji (nie tabulacji, ani nie dwóch).

Przykładowe uruchomienie programu (w przypadku implementacji jako niezależna aplikacja):

/usr/local/bin/out-stream-app --input rstp://ip:port/ --output /path/to/channel/directory/ --config streaming.conf

Przykładowa zawartość pliku streaming.conf:

  1. czas w sekundach

chunkInterval = 5

thumbnailInterval = 30

video(hd-v1) {

width=1920

height=1080

bitrate=4190760

}

video(hd-v2) {

width=1280

height=720

bitrate=2073921

}

video(v3) {

width=854

height=480

bitrate=869460

}

audio(hd-v1) {

bitrate=128000

}

audio(v2) {

bitrate=44100

}

Format wywołań i pliku konfiguracyjnego może być inny, chodziło nam jedynie o zobrazowanie.

Przesłane oferty

Dodaj ofertę lub zapytaj zleceniodawcę o więcej szczegółów

To zlecenie nie ma jeszcze ofert.