Witam,
poszukuję format plików video które z łatwością można dzielić na części.
Takie części które można bezpośrednio przesyłać do klienta (odbiorcy) tak żeby można było je "na żywo" oglądać - odtwarzać ("live streaming video").
Gdy plik AVI pokroję np. na paczki 32KiloBajtowe i prześlę do klienta nie będę wstanie tej części otworzyć i odtworzyć gdyż taka jest jego budowa.
Znalazłem format pliku MJPEG, gdzie każdy frame (każda ramka) jest oddzielnie kompresowana i zapisywana że tak powiem jedna po drugiej co ułatwia dzielenie pliku bezpośrednio od razu wysyłając te paczki (części do klienta), a o to tutaj chodzi żeby był to ten live streaming - na żywo. Jednak jak czytałem pojawia się tu jedna wada jeden problem, każda firma oprogramowania kompresuje te części (w teoretycznie tym samym formacie) - na swój własny sposób oraz mniej więcej
w założeniach mogę maksymalnie wysyłać filmy w rozdzielczość stosowanej w starych kamerkach IP np. 320x240px a patrząc że tu mam przesyłać całe filmy to jest to raczej nie fajne ograniczenie...
Maksymalna ilość danych jakie jestem wstanie na jedną sekundę przesłać to 30KB-60KB ze względu na ograniczenie tutejszych łącz internetowych.
Czy ktoś poradziłby jakiś inny format video, który się tutaj sprawdzi?
Pozdrawiam
Jak będą wyglądać odtwarzacze? To jest istotniejsze, bo jeżeli klienci będą łączyć się za pomocą weba i odtwarzać w playerach opartych o flasha to można pokombinować z FLV.
Witam,
ma to być live streaming video po sieci p2p także klient będzie serwerem, a w innym przypadku serwer klientem, ma być to aplikacja napisana w Javie
@Czakol, ale nie o to pytałem. Format pliku będzie miał drugorzędne znaczenie jeżeli klienci będą mieli różne playery. Po prostu nie będziesz mógł zapanować nad tym jak są odtwarzane filmy i nie będziesz wstanie limitować formatu danych.
Koziołek napisał(a)
@Czakol, ale nie o to pytałem. Format pliku będzie miał drugorzędne znaczenie jeżeli klienci będą mieli różne playery. Po prostu nie będziesz mógł zapanować nad tym jak są odtwarzane filmy i nie będziesz wstanie limitować formatu danych.
Nie będą mieć różnych playerów bo jak napisałem sam piszę całą aplikację że tak powiem ja decyduje jak film będzie odtwarzany i jaki jeden format pliku będzie obsługiwany. Właśnie poszukuje sposobu odtwarzania (np. jakaś wtyczka/biblioteka) i format pliku ten który ta dana wtyczka obsłuży i ten który w łatwy sposób będzie można dzielić na części tak żeby było poprawnie odtwarzane.
//Dla naświetlenia sprawy wymyślony przykład:
serwer i klient napisany będzie w Javie będzie odtwarzał filmy w formacie MJPEG wtyczką / bibliotekę Java Media Framework JMF//
Pomyśl o użyciu streamingu z JavaFX i wtedy masz (prawie)dowolny format danych. Nie jest to możne najbardziej przyjazne API, ale spełnia swoją rolę.
Jeżeli nie chcesz używać JavaFX to JMPEG zostaje. Tylko wtedy musisz dokładnie zadbać o ujednolicenie wszystkich kodeków itp. po stronie klienta.
Koziołek napisał(a)
Pomyśl o użyciu streamingu z JavaFX i wtedy masz (prawie)dowolny format danych. Nie jest to możne najbardziej przyjazne API, ale spełnia swoją rolę.
Jeżeli nie chcesz używać JavaFX to JMPEG zostaje. Tylko wtedy musisz dokładnie zadbać o ujednolicenie wszystkich kodeków itp. po stronie klienta.
Właśnie rozważam sprawę z kodekami, tak szukam przeglądam te formaty, prawdopodobnie przejdzie sprawa z kodekami (jednak tu ma w przyszłym tygodniu zadecydować profesor) jednak może jest format który można łatwo samemu rozkodować. Wczytywać paczkę klatek co jakiś znak, odtworzyć (wyrysować) na panelu, następnie pobrać kolejną część i tak do końca pliku video?
W założeniach ma to być odtwarzane na komputerach PC między użytkownikami (gdzie w założeniach jest że: "jeśli chcesz obejrzeć film zainstaluj kodeki") aczkolwiek w tedy powstaje problem o którym wspomniałeś wyżej nie te kodeki, i już po zabawie. Znalazłem na tą chwilę jedynie porta ffmpeg z C do javy nie wiem czy by się tu sprawdził, ale wygląda że ma w sobie wbudowaną obsługę "kodeków" i w tedy skupiłbym się na jednym wybranym formacie i sprawa byłaby załatwiona u każdego by to poprawnie działało. Mogę "zmusić" użytkownika do jednego wybranego formatu video gdyż obsługa wszystkich prawdopodobnie jest nie możliwa.
Biorę pod uwagę także kompresję filmów gdyż w założeniach by otworzyć film video zwykły 700MB (avi) 85minutowy potrzebuję przesyłać około 150KB/s, a mam możliwość maksymalnie przesyłać 60KB/s, prawdopodobnie ten sam film w formacie MJPEG będzie zajmować ponad 700MB i sprawa się jeszcze bardziej komplikuje.