İçeriğe atla
TubePress — ücretsiz, kendi sunucunda & aktif olarak geliştirilen
Medya ve transkodlama

Transkodlama

TubePress'in yüklenen dosyaları dağıtık FFmpeg işçileriyle web'e hazır kalite sürümlerine nasıl dönüştürdüğü.

Transcoding, yüklenen tek bir dosyayı birden fazla web uyumlu MP4 versiyonuna dönüştürür; böylece izleyiciler ne yüklendiğinden bağımsız olarak bir kalite menüsü, hızlı başlayan oynatma ve tutarlı bir codec elde eder. Ayrıca isteğe bağlı ekstra özellikler — filigranlar ve giriş/çıkış klipleri — de dahil edilir ve oynatıcının kullandığı kaydırma önizleme sprite'ları oluşturulur.

Buradaki her şey /admin/settings?tab=transcode altında yapılandırılır ve Formats, Queue, Servers, Watermark, Intros ile Timeline alt sekmelerine bölünmüştür. Transcoding, CMS sunucusunun kendisinde çalışabilir veya özel çalışanlara dağıtılabilir.

Neden Transcode Edilir

Ham bir yükleme herhangi bir çözünürlük, codec veya kapsayıcı olabilir. Transcoding, bunu +faststart ile MP4/H.264 versiyonlarına standartlaştırır; böylece dosya tamamen indirilmeden önce oynatma başlar ve oynatıcının bir kalite seçici sunabilmesi ile daha küçük ekranlara daha küçük dosyalar iletebilmesi için birden fazla boyut (örneğin 720p ve 480p) üretir. Aynı geçiş, filigranlar ve ön/son kliplerin uygulandığı aşamadır; çünkü bunların her versiyona kodlanması gerekir.

Transcoding İşlem Hattı

Bir video işlenmeye hazır olduğunda, TubePress her çıktı için transcode_jobs tablosuna bir iş ekler ve bunları sırayla işler:

  1. Kuyruğa Ekleme. Tam çözünürlüklü kaynak seviyesi ve kaynak yüksekliğinin altındaki her aktif format için bir iş oluşturulur; önizlemeler etkinse bir timeline işi de eklenir.
  2. Teslim Alma. Bir çalışan — bu sunucu veya uzak bir sunucu — kaynak seviyesinden başlayarak bir sonraki bekleyen işi üstlenir.
  3. İndirme. Uzak bir çalışan, kaynağı HTTP üzerinden çeker (imzalı medya bağlantılarını atlayan, doğrudan anahtar kimlik doğrulamalı bir URL aracılığıyla).
  4. Transcode. FFmpeg, rendition'ı kodlar; yapılandırıldığı şekilde kırpma, filigran ve giriş kliplerini uygular ve ilerleme yüzdesini raporlar.
  5. Yükleme & Geri Çağırma. Sonuç parçalar halinde geri yüklenir ve bir geri çağırma işin tamamlandığını işaretler.

Videonun durumu bunu takip eder: işler devam ederken processing durumunda bekler, kaynak seviyesi tamamlanır tamamlanmaz published olur ve yalnızca kaynak seviyesi hiçbir zaman üretilemezse error olur. Daha düşük versiyonlar yayından sonra dolmaya devam eder.

Embed videoları hiçbir zaman transcoding yapılmaz. Yalnızca yüklenen veya URL tabanlı dosyalar işlem hattına girer; embed kodu olan bir video doğrudan kaynağından sunulur.

Versiyonlar & Formatlar

Çıktı formatları Formats sekmesinde tamamen düzenlenebilir ve video_formats tablosunda depolanır. Her format bir ada, bir dosya sonekine (örneğin _720p.mp4), bir hedef çözünürlüğe, ham FFmpeg seçeneklerine, bir en boy oranını koru bayrağına ve bir aktif geçişe sahiptir. Yerleşik varsayılanlar şunlardır:

FormatÇözünürlük
720p1280 × 720
480p854 × 480
360p640 × 360

İki kural kaliteyi korur. TubePress hiçbir zaman büyütme yapmaz: kaynak yüksekliğinde veya üzerindeki herhangi bir format atlanır. Orijinal en üst kalite her zaman korunur — bir filigran veya kırpma uygulanıyorsa tam çözünürlüklü bir kaynak versiyonuna (kuyrukta yıldızla gösterilir) yeniden kodlanır, aksi takdirde kaynak dosya olduğu gibi sunulur. Bir Trim start seçeneği (0–300 saniye), her videonun ilk saniyelerini kaldırabilir; filigran gibi, kaynak dahil her formata uygulanır.

İş Kuyruğu

Queue sekmesi (/admin/settings?tab=transcode&sub=queue), işleri videoya göre gruplar ve Tümü / Bekliyor / İşleniyor / Tamamlandı / Başarısız olarak filtrelemenize olanak tanır. Her video, iş durumuna göre renklendirilmiş rung başına bir rozet gösterir — yıldızlı kaynak seviyesi, ardından her çözünürlük, ardından TIMELINE:

pending
Kuyruğa alındı, boş bir çalışan bekleniyor.
processing
Aktif; canlı aşama (indirme, transcoding veya yükleme) ve yüzde ile birlikte.
completed
Versiyon üretildi ve depolandı.
failed
Şimdilik yeniden deneme hakkı tükendi; otomatik kurtarma hâlâ geçerli (aşağıya bakın).

Video başına bir konsol (terminal simgesi), canlı iş listesini, her seviyeyi işleyen çalışanı, geçen süreyi ve hata mesajlarını akışa alır. Bir Retry failed jobs butonu, tek tıklamayla şu anda başarısız olan her şeyi yeniden kuyruğa alır.

Uzak Transcode Sunucuları

Transcoding CPU-yoğundur, bu nedenle web sunucusundan taşıyabilirsiniz. Servers sekmesinde, This Server yerel olarak aynı anda kaç FFmpeg işinin çalışacağını (1–4 veya yalnızca uzak çalışanları kullanmak için 0) ayarlar ve FFmpeg yolunu geçersiz kılmanıza olanak tanır. Aşağısında uzak çalışanlar kaydedilir; işler en az yüklü olana otomatik olarak dağıtılır ve her biri bir maksimum eşzamanlı iş sınırı taşır (iyi bir kural, iki CPU çekirdeği başına bir iştir).

  1. Sunucuyu ekleyin. Add Server'a tıklayın, bir ad ve http://YOUR-IP:8090 gibi bir URL verin ve kaydedin. Bir API anahtarı ile başlatma komutu hemen gösterilir.
  2. FFmpeg + PHP yükleyin. Çalışan makinede sudo apt install ffmpeg php-cli php-curl komutunu çalıştırın.
  3. Çalışanı dağıtın. transcode-worker.php'yi (/api/transcode-worker-download'dan veya geçici bir wget bağlantısından) indirin, yükleyin ve portu sudo ufw allow 8090/tcp ile açın.
  4. Başlatın. Çalışanı anahtarınızla çalıştırın:
php transcode-worker.php --port=8090 --key=YOUR_API_KEY
  1. Doğrulayın. Check'e tıklayın; sağlıklı bir çalışan, tespit edilen encoder ve canlı CPU/GPU kullanımıyla Online raporlar.

GPU hızlandırma (NVIDIA, AMD, Intel veya Apple) otomatik olarak tespit edilir ve kullanılır. Çalışan kaynağı çeker, transcoding yapar, ilerlemeyi raporlar ve sonuçları CMS'ye parçalar halinde geri yükler — parçalı yükleme, her isteği Cloudflare'nin 100 MB sınırının altında tutan şeydir. Katılımsız barındırma için kurulum kılavuzu, çalışanın önyüklemede yeniden başlatılması için bir systemd birimi içerir.

Çalışanı üretimde koruyun. Çalışan, portunda düz HTTP konuşur. Önüne HTTPS ile nginx koyun ve portu CMS sunucunuzla kısıtlayın.

İzleme ve Yeniden Denemeler

Sistem, bir videonun hiçbir zaman sessizce bırakılmaması için tasarlanmıştır. Başarısız bir kodlama, artan bir geri alma süresiyle otomatik olarak yeniden denenir — yaklaşık yarım dakikadan birkaç saate kadar — çünkü çoğu başarısızlık geçicidir (yavaş veya tutarsız bir CDN). Bunun ötesinde, saatlik bir kurtarma görevi, hâlâ başarısız olarak işaretlenen tüm işleri yeniden kuyruğa alır; böylece versiyon gelene kadar denemeye devam eder. Hiçbir manuel tıklama gerekmez, ancak zorlamak isteyenler için Retry failed jobs butonu mevcuttur.

Kaynak seviyesinin kendisi kalıcı olarak başarısız olursa, bağımlı alt format işleri iptal edilir (kaynaksız ilerleyemezler) ve video error olarak işaretlenir; kurtarma yine de onu geri getirmeye çalışacaktır. Kaynak seviyesi nihayet tamamlandığında, video otomatik olarak yayınlanır.

Gereksinimler

FFmpeg, transcoding'in çalıştığı her yerde mevcut olmalıdır:

  • Yerel işleme: CMS sunucusuna FFmpeg yükleyin (sudo apt install ffmpeg). Transcode sayfası, mevcut olduğunda tespit edilen sürümü gösterir.
  • Uzak işleme: her çalışanın FFmpeg ile birlikte php-cli ve php-curl, en az 2 CPU çekirdeği ve 2 GB RAM ve açık bir çalışan portu gerekir.
FFmpeg yoksa, transcoding de yoktur. FFmpeg yerel olarak eksikse ve hiçbir uzak sunucu çevrimiçi değilse, transcoding geçişi etkinleştirilemez — önce FFmpeg yükleyin veya bir çalışan ekleyin.

Sonraki Adımlar

Hâlâ takıldınız mı?

Kontrol panelinizden bir destek talebi açın, ekibimiz size yardımcı olacaktır.

Canlı demoyu deneyin → TubePress'i indirin →