tl; serwerowe generowane arkusze sprite DR, pobrane zgodnie z potrzebami.
Możemy zgadywać, że obrazy są generowane po stronie serwera. YouTube robi o wiele bardziej intensywne przetwarzanie na każdym filmie niż wyciągnięcie kilku miniatur. Ponadto szybki Google sugeruje, że ta funkcja działa już od kilku lat - prawdopodobnie dłużej niż wymagana moc HTML5/JS/przeglądarki, aby wykonać tę stronę po stronie klienta.
Wpadłem Download Tools > Resources
w mojej przeglądarce i wypróbowałem newly-posted video z mojego kanału. Co ciekawe, nie było jeszcze podglądu (wideo było tylko około 20 minut, gdy sprawdziłem). Oznacza to, że obrazy są prawdopodobnie generowane po stronie serwera i po prostu nie zostały zakończone.
Sprawdzanie an older video i przejrzenie Resources > Images
nie ujawniło nic interesującego. Więc przełączyłem się na Timelines
i uderzyłem w rekord, a następnie zacząłem mementować na osi czasu i obserwować ruch sieciowy. Jak przeniosłem myszy *.jpg
pliki rozpoczął załadunek i zawierały 25 miniaturek z danego odcinka wideo:
Zauważyłem również, że początkowy plik M0.jpg
jest taki sam rozmiar obrazu, ale zawiera około 100 miniatury z całego filmu, a nie 25 miniatur z jednego segmentu. Przykład:
Testowanie ponownie z nowym filmem, wygląda jak 100-image M0.jpg
zostanie pobrany pierwszy i zapewnia podstawowe dolne-res mniej ziarnistych miniaturki. Następnie, po najechaniu kursorem myszy na różne sekcje wideo, pliki o wyższej rozdzielczości M0.jpg
, M1.jpg
itd. Zostaną pobrane w razie potrzeby.
Co ciekawe, nie zmienia się to w przypadku longer videos, co wyjaśnia, dlaczego miniatury mogą czasem ssać. Jeśli Twoje połączenie lub YouTube jest zbyt wolne, aby uzyskać miniatury o wyższej rozdzielczości, utkniesz przy użyciu tylko 100 miniaturowych miniatur o naprawdę długim filmie. Nie wiesz, jak to działa w przypadku krótszych filmów.Interesujące może być również zobaczenie, z jakiej dystrybucji czerpią miniaturki (czy jest to liniowy co 1/100 wideo lub coś innego).
Ostrożnie, zauważyłem, że jeśli używasz adresu URL z kodem czasowym, nie dostaniesz pełnego arkusza 100-obrazowego M0.jpg
, ale zupełnie inny rozmiar M#.jpg
zawierający około 25 miniatur o niskiej rozdzielczości z kodu czasowego do końca filmu.
Chyba oni zakładając, że kiedy ludzie odwołują się do konkretnego kodu czasowego, użytkownicy nie mogą przeskoczyć do wcześniejszego punktu w filmie. Jest to również mniej ziarnistości niż ~ 75 obrazów, które uzyskałbyś, wysyłając normalny obraz 100: M0.jpg
. Z drugiej strony, jest to również około 30% rozmiaru, więc może prędkość była tak ważna.
chodzi o generowanie miniaturek, ffmpeg
jest dobrym sposobem, aby przejść:
Aby wykonać wiele zrzutów ekranu i umieścić je w jednym pliku obrazu (tworzenie płytek), można użyć filtra dachówka wideo ffmpeg, podobnie jak to:
ffmpeg -ss 00:00:10 -i movie.avi -frames 1 -vf "select=not(mod(n\,1000)),scale=320:240,tile=2x3" out.png
to będzie dążyć do 10 sekund filmu, wybrać każdy 1000-ramkę, skalować do 320x240 pikseli i tworzenia płytek 2x3 w out.png wyjście obrazu, który będzie wyglądać następująco:
Jest tysiąc różny sposób mogą Państwo osiągnąć to, wybrać jedną, a następnie ponownie zadać pytanie. –
Mogę tylko począć 2. (te, które opisałem). Nie jestem pewien, czy to drugie jest wykonalne, ponieważ nie mogę wymyślić sposobu na jego wdrożenie. Wolałbym to od tego pierwszego, jeśli to możliwe, z oczywistych powodów. – LukeP
@AdamBuchananSmith Jeśli chodzi o próby wdrożenia tego ostatniego. Mam kilka (rodzaj niejasnych) pomysłów, pozwól mi dodać je do pytania. – LukeP