To ogłoszenie wygasło w dniu 2015-06-21 12:54.

Poszukiwany specjalista ds. streamingu w formacie MPEG-DASH.

  • Kontrakt Umowa

Język programowania
Narzędzia
Inne

Opis oferty

Poszukujemy specjalisty do spraw streamingu do opracowania rozwiązania
służącego do udostępniania strumieni live w formacie MPEG-DASH. Ogółem 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:

# 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.

Zainteresowanych zleceniem prosimy o przesłanie zgłoszeń wraz z przygotowaną ofertą oraz wyceną za wykonanie zlecenia na adres e-mail:
[email protected]

W temacie e-maila prosimy o umieszczenie słowa „PRACA".

Metodologia pracy

Pytania i odpowiedzi