Wszystko o video streaming'u w Delphi

0

Witam
Jest to mój pierwszy post na tym forum. Od pewnego czasu interesuję się realizacją video streamu przy pomocy delphi. Z dość ubogich zasobów znalezionych w internecie dowiedziałem się paru rzeczy jednak mam jeszcze kilka pytań.

Otóż mam serwer postawiony na socketach, do serwera podpina się maks 5 klientów do których chce transmitować obraz z pięciu różnych kamer. I teraz moje pytania:

Czy dobrze rozumiem że ogólna zasada działania takiego streamu miała by wyglądać następująco:

(PO STRONIE SERVERA)

  1. Pojedyncza klatka z kamery jest pobierana (np. poprzez jakiś komponent z DSPack'a) i zapisywana w pamięci jako zdjęcie.

2.Owe zdjęcie jest kompresowane (nie wiem jeszcze jak).

3.Skompresowany plik wysyłam od serversocket do odpowiedniego clientsocket.

(PO STRONIE KLIENTA)
4. odebrany plik jest dekompresowany i wyświetlany (w jakimś komponencie dspacka)aż do czasu dekompresacji następnej klatki

Cała procedura powtarza się z 10 razy na sekundę i klient otrzymuje płynny obraz video.
Proszę o odp.

0

A czemu nie wysłać porcji filmu, np.2 sekundy, czy za jednym razem np.30 klatek?

0
240volt napisał(a)

(PO STRONIE SERVERA)

  1. Pojedyncza klatka z kamery jest pobierana (np. poprzez jakiś komponent z DSPack'a) i zapisywana w pamięci jako zdjęcie.

[...]

Cała procedura powtarza się z 10 razy na sekundę i klient otrzymuje płynny obraz video.

Jeśli dobrze zrozumiałem, to skoro wysyłasz jedną klatkę w procedurze, czyli maksymalnie 10 klatek na sekundę, więc obraz nie będzie płynny; Jeśli masz jeszcze pięciu klientów to wyślesz na sekundę po dwie klatki na głowę... Jeżeli klatek na sekudnę we filmie jest np. 30 i masz do tego 5 klientów - musisz wysłać minimum 150 klatek na sekundę; Trzeba to robić szybciej i zapisywać kolejne w buforze po to, by film nie zacinał się; Tak działa ładowanie filmów np. na youtube - transmisja trwa dotąd, aż film zostanie przesłany do końca, ale nie ma żadnego oczekiwania na kolejne klatki - każda następna jest wysyłana tak szybko, jak tylko się da i pakowana do bufora; Inaczej nic z tego nie będzie, bo film na pewno będzie się przycinał;

Poza tym wysyłanie po jednej klatce nie jest najlepszym rozwiązaniem; Tak jak wspomniał @Patryk27 - wysyłaj paczki po np. 2 sekundy - będzie to działać znacznie dynamiczniej;

0

Najlepiej użyj jakiegoś istniejącego protokołu. Nawet jeśli chciałbyś napisać własną implementację od zera, to tego typu dylematy masz już przez Mądrych Ludzi rozwiązane i przetestowane.

0

Czyli moje rozumowanie nie pyło do końca poprawne. Azarien a możesz coś więcej o tych gotowych procedurach, jakieś przykłady ?? szukałem sporo na temat gotowego rozwiązania albo przynajmniej jakiegoś tutoriala :) ale nic ciekowego nie odkryłem. A wiadomo najlepiej się uczy jak ktoś prowadzi za rękę :) Jeżeli macie coś naprawdę godnego uwagi na temat videostremu w Delphi to proszę o linki lub cokolwiek. Może ktoś z was podzieli się własnymi osiągnięciami?

0

A może ktoś za odpłatą udzieli informacji ??
w razie co mój email : [email protected]

0

Znalazłem coś ciekawego a mianowicie: http://code.google.com/p/delphi-dspack-video-streaming/, pierwsze zdjęcie wygląda obiecująco, jednak jest mały problem ta strona jest po angielsku i nie wiele mogę z niej zrozumieć, może ktoś zainteresowany tematem pomoże zrozumieć jak ten projekt zrealizowano (obawiam się że to rozwiązanie jest płatne)

0
240volt napisał(a)

jednak jest mały problem ta strona jest po angielsku i nie wiele mogę z niej zrozumieć

No to cieniutko... W każdym razie jest tłumacz Google, który z chęcią Ci pomoże;

Tutaj masz link:
http://translate.google.pl/translate?hl=pl&ie=UTF8&prev=_t&sl=en&tl=pl&u=http://code.google.com/p/delphi-dspack-video-streaming/

Przetłumaczony tekst będzie trochę kulawy, jednak można wszystko zrozumieć bez większych problemów;

0

Na stronie którą podałem po zalogowaniu mamy cały kod dostępny do zrobienia wideostreamu, tylko jest problem bo to jest sam kod nie można pobrać gotowych plików :(

0

No i znalazłem gotowca :D Teraz męczę się z dspackiem i powinno śmigać

1 użytkowników online, w tym zalogowanych: 0, gości: 1