Przejdź do treści
TubePress — bezpłatny, samodzielnie hostowany & aktywnie utrzymywany
Media i transkodowanie

Pamięć i dostarczanie mediów

Pamięć lokalna, zewnętrzne serwery pamięci (S3, FTP, WebDAV) i bezpieczny serwer proxy mediów.

TubePress przechowuje każdy przesłany film, jego przetworzone wersje i zasoby podglądu na dysku i może transparentnie przenosić je na jeden lub więcej zewnętrznych serwerów pamięci masowej. Ta strona wyjaśnia, gdzie są przechowywane pliki, jak system media storages dystrybuuje je między backendy oraz jak media docierają do widzów bez ujawniania surowych plików.

Magazyn jest konfigurowany w /admin/settings?tab=storage. Możesz działać wyłącznie na lokalnym dysku lub dodać backendy FTP, kompatybilne z S3 i WebDAV, a TubePress będzie je wypełniać kolejno.

Jak TubePress przechowuje media

Przesłane pliki są przechowywane w public/uploads/. Każdy film ma swój własny folder — video_folder wideo — który zawiera oryginalne źródło wraz z każdą wersją wygenerowaną przez transkoder oraz małymi zasobami wymaganymi przez odtwarzacz:

public/uploads/
  videos/
    a1b2c3d4.../        one folder per video (video_folder)
      video.mp4         original upload (source)
      video_1080p.mp4   processed source rendition
      video_720p.mp4    transcoded rendition
      video_480p.mp4    transcoded rendition
      timeline.vtt      scrub-preview sprite map
      preview.mp4       hover-preview clip
  thumbnails/           poster images
  watermark/            watermark PNG
  intros/               pre-roll / post-roll clips
  branding/             logo, favicon, background

Transkoder odkrywa źródło, skanując w poszukiwaniu najwyższego pliku video_<height>p.mp4, a w razie potrzeby korzysta z surowego video.mp4, .webm lub .ogg. Niższe wersje są zapisywane w tym samym folderze, więc pojedynczy katalog zawiera wszystko, czego potrzebuje film. Zobacz Transkodowanie, aby dowiedzieć się, jak generowane są te wersje.

Lokalne jest obszarem roboczym, gdy ustawiono CDN. Przy zewnętrznym domyślnym magazynie każde przesłanie jest przetwarzane lokalnie, a następnie usuwane z serwera aplikacji po bezpiecznym przeniesieniu na backend — lokalny katalog videos/ przechowuje wyłącznie elementy, które są jeszcze przesyłane lub transkodowane.

Zewnętrzne serwery pamięci masowej

System media storages umożliwia rejestrację dowolnej liczby backendów. Nowe filmy zawsze trafiają do domyślnego magazynu; gdy magazyn przekroczy próg dyskowy, TubePress automatycznie przełącza nowe przesyłania na następny dostępny. Istniejące filmy są obsługiwane z miejsca, do którego zostały zapisane, ponieważ każdy film rejestruje własne storage_id.

Obsługiwane są cztery typy backendów — i nic więcej:

TypZastosowaniePola połączenia
LocalPojedynczy serwer lub pierwsze krokiBrak — obsługiwane z public/uploads
FTPTani VPS do przechowywania lub seedboxHost, port (21), użytkownik, hasło, zdalna ścieżka, SSL/TLS, pasywny
S3AWS S3, DigitalOcean Spaces, Backblaze, MinIOKlucz dostępu, sekret, bucket, region, endpoint, prefiks
WebDAVNextcloud i inne hosty WebDAVURL WebDAV, użytkownik, hasło

Każdy zdalny magazyn ma również kilka ustawień operacyjnych:

Media URL
Publiczny adres HTTP, z którego odwiedzający ładują pliki — nie adres kontrolny FTP/S3.
Status
Aktywny (odbiera nowe filmy), Tylko do odczytu (obsługuje tylko istniejące pliki) lub Wyłączony (offline).
Max disk usage
50–99% (domyślnie 90). Po osiągnięciu nowe przesyłania automatycznie przełączają się na następny magazyn.
Secure URLs
Podpisuje linki do mediów wygasającym tokenem — patrz Bezpieczne dostarczanie mediów poniżej.

Dodawanie backendu pamięci masowej

  1. Otwórz edytor magazynu. Przejdź do /admin/settings?tab=storage i kliknij Add Storage.
  2. Wybierz typ i nadaj nazwę. Wybierz Local, FTP, S3 lub WebDAV. Formularz przełącza się, aby pokazać tylko pola potrzebne dla danego typu.
  3. Wprowadź URL mediów i dane uwierzytelniające. Ustaw publiczny Media URL, a następnie host/klucze/ścieżkę dla backendu. Pozostaw hasło puste podczas edycji, aby zachować zapisane.
  4. Ustaw opcje operacyjne. Wybierz status, próg maksymalnego użycia dysku i czy podpisywać URL-e.
  5. Przetestuj i zapisz. Zapisanie najpierw uruchamia test połączenia (i sprawdzenie skryptu monitorującego, jeśli go podałeś). Napraw wszelkie nieudane sprawdzenia, a następnie zapisz. Opcjonalnie oznacz go jako domyślny, aby nowe przesyłania trafiały tam.
URL mediów a adres kontrolny. URL mediów to adres, z którego przeglądarki pobierają pliki (np. https://cdn.example.com). Nie jest to endpoint FTP/S3 — pomylenie tych dwóch jest najczęstszą przyczyną uszkodzonego odtwarzania po przełączeniu.

Monitor magazynu

Dla zdalnych backendów TubePress może śledzić przestrzeń dyskową i stan za pomocą małego skryptu PHP, który instalujesz na serwerze pamięci masowej. W panelu Disk Monitoring edytora magazynu kliknij Download monitor script (obsługiwane z /api/storage-monitor-download), prześlij go na zdalny serwer, a następnie wklej jego publiczny URL z powrotem w polu Monitor script URL.

Po połączeniu edytor pokazuje bieżące użycie dysku i czas ostatniego sprawdzenia, a próg automatycznego przełączania używa tych odczytów, aby wiedzieć, kiedy backend jest pełny. Skrypt jest zabezpieczony kluczem, więc tylko twój CMS może go odpytywać.

Warto zrobić na każdym serwerze CDN. Bez monitora TubePress nie może odczytać zdalnego użycia dysku, więc automatyczne przełączanie przy max-usage może działać tylko na magazynach, które może mierzyć.

Bezpieczne dostarczanie mediów

Gdy Secure URLs są włączone dla magazynu, TubePress nigdy nie udostępnia bezpośredniej ścieżki do pliku. Zamiast tego podpisuje krótki, ograniczony czasowo link kierowany przez /media/:

/media/{token}/{expires}/{path}
token
16-znakowy HMAC-SHA256 ścieżki i daty wygaśnięcia, podpisany prywatnym sekretem tego magazynu.
expires
Znacznik czasu Unix; po jego upływie link zwraca 403. Domyślny czas życia to sześć godzin.
path
Żądany plik w uploads/videos/….

Token jest ponownie obliczany i sprawdzany po stronie serwera przy każdym żądaniu. Dla lokalnego magazynu TubePress strumieniuje plik z obsługą zakresów HTTP (dzięki czemu przewijanie działa); dla zdalnego magazynu weryfikuje token, a następnie wydaje przekierowanie 302 do pliku na CDN. Surowe wideo jest również ograniczane przepustowością na poziomie serwera WWW: edytor magazynu generuje gotowy do wklejenia fragment nginx, który ogranicza strumieniowanie po pierwszych kilku megabajtach, jednocześnie umożliwiając pracownikom transkodowania pobieranie z pełną prędkością za pomocą klucza.

Tokeny są powiązane ze ścieżką, datą wygaśnięcia i sekretem. Rotacja sekretu magazynu unieważnia wszystkie aktywne linki, a wygasłe linki przestają działać samoistnie. Połącz bezpieczne URL-e z fragmentem ograniczającym przepustowość, aby uzyskać znaczącą barierę przed scrapingiem. Zobacz Bezpieczeństwo.

CDN & Cloudflare

TubePress jest zaprojektowany do wygodnej pracy za Cloudflare. Dwie rzeczy mają znaczenie:

  • Przesyłanie porcjowane omija limit 100 MB. Wyniki transkodowania są przesyłane z powrotem do CMS w kawałkach przez /api/transcode-upload-chunk, więc poszczególne żądania pozostają poniżej limitu 100 MB warstwy darmowej Cloudflare, niezależnie od rozmiaru wersji.
  • Zasoby z długim cache i unieważnianiem cache. Zasoby statyczne są obsługiwane z długimi, niezmiennymi nagłówkami cache i unieważniane zapytaniem wersji przy każdym wydaniu, więc proxy może agresywnie buforować bez serwowania nieaktualnych plików.

Fragment nginx dla każdego magazynu dodaje rozsądne nagłówki expires dla wideo i opcjonalną wewnętrzną lokalizację /media/ używaną przez bezpieczne lokalne dostarczanie, więc możesz go wkleić bezpośrednio do konfiguracji strony.

Następne kroki

Nadal masz problem?

Otwórz zgłoszenie z poziomu panelu, a nasz zespół Ci pomoże.

Wypróbuj demo na żywo → Pobierz TubePress →