Player umożliwiający przewijanie przed zbuforowaniem filmu


(Michalvvisniewski) #1

Jak w tytule poszukuję Playera umożliwiącego przewijanie filmu odtwarzanego przez url zanim się zbuforuje bo wszystkie które przetestowałem umożliwiają przewijanie dopiero po zbuforowaniu.


(Veers) #2

Videowróżbita DeLux (będzie dostępny wraz z Internetem w wersji 7 - póki co trzeba się męczyć tradycyjnie).


(scripter1) #3

Nie da się przewijać niezbuforowanych danych tak jak nie da się zobaczyć co jest za zamkniętymi nieprzezroczystymi drzwiami dopóki się ich nie otworzy.

 

Dane wideo/audio w strumieniu podobnie jak w pliku są zakodowane i aby można było oglądać/przewijać strumień dane te muszą zostać rozkodowane a żeby rozkodować jakieś dane muszą one zostać najpierw zbuforowane lokalnie w określonej ilości tak aby były spójne i aby można było na nich wykonac operacje.

 

To jest uniwersalna zasada rządząca elektroniką i komputerami - wszelkie dane muszą być w tej czy innej formie zbuforowane aby można było wykonywać na nich operacje.


(Bogdan_G) #4

Prawda wymyka się spod kontroli, a złapać za ogon, to dzieją się cuda.

Da się! Fizycznie, gdyby się nie dało, to dlaczego film 1h i 20 minut mogę pobrać w niecałą minutę? YT ma najszybsze serwery.

Właściwie po paru sekundach odtwarzania filmu, mimo, że pasek buforowania przesunął się o milimetr, to klikam w połowie. Oglądam w połowie. Albo klikam pod koniec. To po chwili ładowania w tym, miejscu, oglądam końcówkę.

Rozumiem wielowątkowe pobieranie. Mam też neta 100Mb/s.

Mam poustawiane w laptopie i pc, wyłączenie limitu łącza.

Tak samo mogę zaraz klikać w połowie filmu, zanim się załadują na sibnet, wrzuta, vk. Chociaż mają wolniejsze serwery (strona wbijam.pl) to po przeładowaniu, zaczyna mi się odtwarzać od połowy filmu. http://www.iv.pl/images/07342195554678678687.jpg

 

Jak widać, od tego miejsca zaczyna się ze dwa milimetry pasek buforowania.

Gdy film zaczyna się już odtwarzać, to można go oglądać w połowie, przykładowo. Przeładuje się i bingo!

 

Scripter1 - a no, daj film dwugodzinny, to ja w sprzeczności z zasadami działania elektroniki*, wkleję screeny ze środka tego filmu, z pod końca i w żądanym miejscu, dla sprawdzenia… w minutę. OK?

 

Ciekawe wymagania. Wprawdzie SMPlayer ma wyszukiwanie w YT. W wyszukiwarce YT tego playera, wkleić URL z YT i wyszukać. Wyświetli się i po wybraniu Odtwarzaj, zacznie odtwarzać. Też można wtedy z prawokliku wybrać zapisz wideo.

Taki godzinny film player pobierze w zależności od prędkości łącza. U mnie to ze 30 sekund. A pobrany film uruchomiony w playerze, można oglądać jednakowo szybko pod koniec, czy w połowie. Jeszcze dodatek smplayer view do Firefoxa, to od razu filmy wyświetla w oknie playera.


(Veers) #5

@Bogdan_G: te właśnie “parę sekund odtwarzania filmu” to właśnie buforowanie. Media strumieniowe działają tak, jak to pięknie opisał Scripter1. Im szybsze łącze - tym oczywiście szybsze buforowanie, co może powodować że wydaje ci się że go nie ma.  Wyjaśnię więc to bardziej obrazowo: jeśli usuniesz nagłówek pliku to choćby nie wiem jakiego softu użyjesz - nie odczytasz pliku ani w połowie, ani na końcu, ani w żadnym innym miejscu które przyjdzie ci na myśl. Strumień danych to nie kaseta wideo, którą przewijasz sobie flamastrem i zaczynasz odtwarzać od miejsca które akurat wyląduje przed głowicą.


(Bogdan_G) #6

Nie w sensie przewijania, tylko kliknięcia w pasek buforowania, gdzie się chce, - przeładuje się film i go oglądam, bo mnie ciekawi np, pod koniec filmu. Normalnie widać postęp ładowania buforu, oraz postęp odtwarzania klatek video. A jak zechcę kliknąć, co za pół godziny jest na filmie, to po przeładowaniu filmu rusza pasek buforowania od tego pół godziny i rusza pasek odtwarzania wideo.

A po co mam usuwać nagłówek pliku video? Gdy chcę film podejrzeć, to to robię. Dotąd myślałem, że to banał.

Sic.

 

Jeśli w ciągu 20 s podglądnę, film półtoragodzinny w kilku miejscach i pod koniec, to znaczy, że on już fizycznie jest, że jakiś akcelerator może go podzielić na powiedzmy 40 wątki i piorunem pobrać.

Raczej chodzi o kolejkowanie obrazów flashowych, czy html5 w systemie.

Wielu ma powiedzmy internet 6Mb/s i chwali oglądanie filmów na YT. Wcale te ponad szesnaści razy szybsze moje łącze nie działa tak, że szesnaście razy szybciej buforuje się film.


(scripter1) #7

Mylisz się, cały czas masz tu do czynienia z buforowaniem.

To że da się przeskoczyć w dalsze miejsce filmu które nie zostało zbuforowane jest jedynie zasługą tego że odtwarzacz inteligentnie przerwał buforowanie od początku a zaczął buforowanie od miejsca kliknięcia.

Efekt jest taki że nie masz zbuforowanego całego filmu tylko jego fragment.

Tak czy inaczej nadal jest tu buforowanie.

Praw fizyki nie da się przeskoczyć ani ominąć - dlatego nazywa się je prawami.

 

 

Generalnie masz rację ale profesjonaliści w centrach odzysku danych dysponują specjalistycznymi programami które poprzez analizę struktury pliku są w stanie odtworzyć z grubsza usunięty nagłówek w takim zakresie aby dało się plik w normalnym programie obejrzeć, tylko że taka operacja może nawet na bardzo mocnym specjalistycznym sprzęcie trwać godziny lub nawet dni.

 

Ale nie zmienia to w kwestii strumieni że buforowanie jest niezbędne aby zapisać gdzieś tymczasowo dane składające się na ramkę filmu z jej nagłówkiem do momentu gdy te dane będą kompletne bo inaczej nie da się ich poprawnie zdekodować i odtworzyć.


(tomms) #8

To nie tak działa. Jeśli chcesz mieć możliwość przewijania filmu to:

  1. Player musi umieć przesłać do serwera informację od której sekundy/minuty serwer ma wysyłać strumień

  2. Serwer musi rozumieć format pliku źródłowego aby przesyłać do klienta tylko to co klient chce

 

Odnośnie punktu pierwszego to obecnie chyba wszystkie playery mają taką możliwość. Zobacz np http://flowplayer.org/

 

Odnośnie punktu drugiego to do serwera www musisz zainstalować odpowiedni moduł. Jeśli założymy że obraz masz zakodowany przy pomocy h264 w kontenerze mp4 to dla serwera lighttpd masz plugin http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Lighttpd-Version2 (darmowy do użytku niekomercyjnego). Podobne rozwiązanie jest także dla Apacha.

 

I teraz jak to działa, np chcesz odtwarzać film który trwa dwie godziny:

  1. Włączasz player

  2. Zaczyna sie odtwarzać film

  3. Przesuwasz suwak naprzykład do połowy filmu

  4. Player przesyła do serwera informację o pobieraniu filmu ale z dodatkowym parametrem np:

    http://domena.pl/film.mp4?start=3600

  1. Serwer widzi o który film chodzi i od której sekundy zacząć (parametr start albo inny zdefiniowany)

  2. Dzięki dodatkowemu modułowi serwer umie przewinąć się do odpowiedniej p-klatki

  3. Serwer najpierw wyśle odpowiednie nagłówki (szerokosc, wysokosc klatki i inne) i zaraz zacznie

transmisje od środka filmu

  1. Jeśli serwer nie będzie miał odpowiedniego modułu to poprostu zignoruje parametr ‘start’ i zacznie

transmisje od początku filmu.

 

Ale najważniejsza funkcja takiego modułu to to że serwer robi tzw streaming. Bez dodatkowego modułu

miałbyś download progresywny czyli film by się ściągał z całą mocą łącza (upload serwera/download klienta).

Dzięki streamingowi klient nie wysyci łącza więcej niż potrzeba do oglądania filmu.

 

A buforowanie stosuje się dlatego że film nie ma stałego bitratu, raz sceny są statyczne i mniej danych potrzeba do wysłania

a raz są scecy dynamiczne i jest więcej informacji. I aby nie było ‘skakania’ obrazu po stronie klienta to stosuje się

właśnie buforowanie. W praktyce wystarczy buforować około 10 sekund do przodu.


(Bogdan_G) #9

Macie racje, co się tyczy odtwarzania, przewijania, buforowania.

Tylko… w ciągu 10s podglądnę długi film ze trzy razy i pod koniec. W smplaerze zdaje się, że nawet szybciej ciut. Na to zwracam uwagę, bo na pytanie autora tematu, to wiadomo, że przewijać można tylko do końca postępu buforowania. A jak w playerze przewinie dalej i dalej, to po prostu film się przeładuje i jest dalej.

Jednakże autor może przeskoczyć do momentów, które dzieją się dalej i dalej. Mnie to nie sprawia problemów.