Altyazıyı Bir Videoya Nasıl Gömersin (Hiçbir Yere Yüklemeden)
Altyazıyı kendi makinende videoya göm: dört yöntemin karşılaştırması, işe yarayan FFmpeg komutları ve yeniden kodlamanın kalite kaybını nasıl önlersin.
Altyazıyı videoya gömmek, metni görüntünün içine çizip videoyu yeniden kodlamak demektir; böylece altyazılar dosyayla birlikte piksel olarak taşınır. Hiç altyazı dosyası kabul etmeyen TikTok, Reels ve Shorts için buna ihtiyacın var; ayrıca altyazılar bir erişilebilirlik seçeneği değil, tasarımın bir parçası olduğunda da gerekir. Bunu yapmak için hiçbir şey yüklemen gerekmez — FFmpeg, HandBrake ve masaüstü altyazı uygulamaları bunu tamamen yerelde yapar, tarayıcı araçlarındaki dosya boyutu tavanı olmadan.
Bu yazı bunu yapmanın dört yolunu, işe yarayan komutları ve kaliteyi gerçekten bozan iki şeyi ele alıyor.
Videoya gömme ne zaman doğru seçimdir
| Videoya gömülü (hardsub) | Altyazı dosyası veya izi (softsub) | |
|---|---|---|
| İzleyici kapatabilir | Hayır | Evet |
| TikTok, Reels, Shorts'ta çalışır | Evet | Hayır, desteklenmez |
| YouTube, Vimeo'da çalışır | Evet | Evet, hem de aranabilir |
| Erişilebilirlik uyumluluğu için sayılır | Genellikle sayılmaz | Evet |
| Arama motorları tarafından dizinlenir | Hayır | Evet |
| Sonradan bir yazım hatasını düzeltmek | Videoyu yeniden render al | Bir metin dosyasını düzenle |
| Tek dosyada birden fazla dil | Hayır, her biri için ayrı render | Evet, her biri için ayrı iz |
| Stil birebir korunur | Evet | Sadece ASS izlerinde |
Çoğu kişi için pratik cevap ikisi birdendir: başka hiçbir şeyin işe yaramadığı dikey sosyal platformlar için videoya göm, bir dosyayı okuyan her yere de bir altyazı dosyası gönder; çünkü dosya aranabilir, değiştirilebilir ve düzeltilebilirdir. Tek bir işten ikisini birden istiyorsan, çok dilli teslim bu iki çıktının aynı zaman çizelgesinden nasıl geldiğini ele alıyor.
Altyazıyı videoya gömmenin dört yolu
| FFmpeg | HandBrake | Tarayıcı araçları | Masaüstü altyazı uygulamaları | |
|---|---|---|---|---|
| Fiyat | Ücretsiz | Ücretsiz | Ücretsiz kademe, sonra abonelik | Tek seferlik veya abonelik |
| Videonu yükler | Hayır | Hayır | Evet, dosyanın tamamını | Hayır |
| Dosya boyutu / süre sınırı | Yok | Yok | Var, genellikle sıkı | Yok |
| Altyazıyı oluşturur | Hayır | Hayır | Evet | Evet |
| Stil kontrolü | ASS veya force_style ile | Sınırlı | Şablonlarla | Canlı önizlemeyle tam |
| Öğrenme eğrisi | Komut satırı | Orta | Yok | Düşük |
İki dürüst not. FFmpeg ve HandBrake bu işte ücretsiz ve mükemmeldir; elinde bitmiş bir altyazı dosyası varsa FFmpeg tek bir komuttur — bir şey satın almanın bir gerekçesi yoktur. İkisinin de yapmadığı şey altyazıyı üretmektir: elinde zaten olan, başka bir yerde zamanlanmış ve düzeltilmiş bir dosyayı videoya gömerler. Tarayıcı araçları altyazıyı üretir, ama yükleme zorunludur; bu da onları gizli malzemeler ve sınırlarından daha uzun her şey için elemeye yeter.
FFmpeg ile videoya gömme
Düz bir SRT için:
ffmpeg -i input.mp4 -vf "subtitles=subs.srt" -c:a copy output.mp4
Stilli bir ASS dosyası için, stilin düzleştirilmek yerine olduğu gibi uygulanması için ass filtresini kullan:
ffmpeg -i input.mp4 -vf "ass=subs.ass" -c:a copy output.mp4
Varsayılanı kabul etmek yerine kaliteyi açıkça kontrol etmek için:
ffmpeg -i input.mp4 -vf "subtitles=subs.srt" \
-c:v libx264 -crf 18 -preset slow -c:a copy output.mp4
Bir SRT'yi önce dönüştürmeden yeniden stillendirmek için:
ffmpeg -i input.mp4 \
-vf "subtitles=subs.srt:force_style='FontName=Arial,FontSize=24,Outline=2'" \
-c:a copy output.mp4
Windows tuzağı. Filtrenin içindeki yol, shell tarafından değil filtrenin kendisi tarafından ayrıştırılır; bu yüzden sürücü harfinin iki noktası ve ters eğik çizgiler kaçış karakteriyle yazılmalıdır. Açıkça var olan bir dosyada komutun dosya-bulunamadı hatasıyla başarısız olmasının en yaygın tek sebebi budur:
ffmpeg -i input.mp4 -vf "subtitles='C\:/Videos/subs.srt'" -c:a copy output.mp4
Mümkün olduğunda altyazı dosyasını çalışma dizininde tut ve sade bir dosya adı geçir — bu, sorunu tamamen ortadan kaldırır.
Kaliteyi gerçekte ne bozar
İki şey; ikisi de videoya gömme işleminin kendisi değil.
Zaten sıkıştırılmış bir dosyayı yeniden kodlamak. Videoya gömme bir yeniden kodlama gerektirir ve bu kayıplıdır. Bunu ana dosyana yapmak gözle görülür hemen hemen hiçbir şeye mal olmaz. Bunu bir platformun zaten sıkıştırdığı bir dosyaya yapmak ise sıkıştırma artefaktlarını sıkıştırmak demektir; bloklanma ve bulanıklık tam da orada ortaya çıkar. Her zaman elindeki en yüksek kaliteli sürümden başla ve altyazıyı zaten bir kez gömülmüş bir dosyaya asla gömme.
Varsayılan kodlayıcı ayarlarını kabul etmek. X264 ile -crf 18, çoğu içerik için görsel olarak neredeyse fark edilmezdir; varsayılan değer olan 23 ise detaylı görüntülerde belirgin şekilde daha yumuşaktır. -preset slow, zaman karşılığında aynı kalitede daha küçük bir dosya kazandırır. -c:a copy ise ses akışına dokunmaz — sadece görüntüyü değiştirirken sesi yeniden kodlamanın bir gerekçesi yoktur.
Render neden önizlemeyle eşleşmiyor
İki sebep var; ikisi de bir render'a zaman harcamadan önce düzeltilebilir.
Fontlar. Render motoru bulabildiği fontla çizer. Seçtiğin font kurulu değilse veya o alfabeyi çizemiyorsa — altyazı için tasarlanmış gösterim fontlarının çoğu yalnızca Latin, Kiril ve Yunan alfabelerini kapsar, başka hiçbir şeyi kapsamaz — yerine bir başka font kullanılır ve Arapça, Tayca, Hangıl veya CJK metni boş kutular olarak çıkabilir. Fontu on iki dili render almadan önce kontrol et, sonra değil.
Tuval boyutu. ASS'teki konumlar ve font boyutları, videonun piksel boyutlarına değil, dosyada tanımlanmış sanal bir tuvale göre orantılıdır. Tuval sabitlenmemişse aynı font boyutu bir 1080p kaynakla bir 4K kaynakta ekranda farklı metinler üretir. Sablate, altyazı tuvalini 1080 yükseklikte sanal bir kareye sabitler ve genişliği, döndürme meta verisi dahil kaynağın gerçek en-boy oranından türetir; böylece bir font boyutu, hangi çözünürlükte çektiğinden bağımsız olarak her zaman aynı şeyi ifade eder — editör önizlemesi de render motorunun kullandığı tam olarak aynı tuvale göre ölçeklenir.
Videoya gömme kalitesinin araçlar arasında bu kadar farklı olmasının sebebi de bu. Çevrimiçi editörlerin çoğu altyazıyı düz bir metin katmanı olarak bindirir; Sablate'teki videoya gömme ise medya oynatıcıların ASS altyazıları için kullandığı motor olan libass ile render edilir, bu yüzden dış hatlar, gölgeler, kelime bazlı karaoke zamanlaması ve alfabeye uygun fontlar yaklaşık bir grafik değil, gerçek altyazı tipografisi olarak çıkar.
Dikey ve kare çıktı
Video Reels, Shorts veya TikTok'a gidiyorsa, en-boy oranını sonradan kırpmak yerine render sırasında dönüştür. Bitmiş bir 16:9 videoya gömme işlemini 9:16'ya kırpmak, altyazıların kenarlarını görüntüyle birlikte keser.
Sablate; 16:9 (1920×1080), 9:16 (1080×1920) veya 1:1 (1080×1080) oranında render alır, hedef kareye kırpar veya kaynağın bulanıklaştırılmış bir kopyasıyla doldurur ve altyazıları son kareye göre yerleştirir. Metni dikey bir karenin alttaki beşte birlik alanının dışında tut — çoğu telefonda o alan platformun kendi arayüzü tarafından kaplanır.
Komut satırı olmadan yapmak
Elinde düzeltilmiş bir altyazı dosyası henüz yoksa, videoya gömme daha uzun bir işin son adımıdır: transkript çıkar, düzelt, stillendir, render al. Sablate bunu baştan sona kendi makinende yapar — yerelde Whisper ile transkripsiyon, timeline üzerinde yeniden zamanlama ve okuma hızı uyarıları olan bir editör, 13 altyazı preset'i ve önizlemeyle eşleşen bir videoya gömme.
Videoya gömme, küçük bir köşe işaretiyle ücretsiz planda kullanılabilir; Pro ise tek seferlik 29 $'lık ödemeyle işareti kaldırır ve .ass, çoklu izli .mkv ile toplu dışa aktarma ekler. Tam ayrıntı için indir veya fiyatlandırma sayfasını oku.
Kısacası
Platform hiçbir altyazı dosyası okumuyorsa veya altyazılar görünümün bir parçasıysa videoya göm; diğer her yerde bir altyazı dosyası gönder, çünkü düzenleyebildiğin metin, düzenleyemediğin piksellere karşı kazanır. Render'ı ana dosyandan al, bir yükleme kopyasından değil. CRF 18 kullan ve sesi kopyala. Kodlamaya zaman harcamadan önce fontu ve tuvali kontrol et, çünkü kusursuz bir altyazı dosyasını yanlış çıkaran iki şey tam olarak bunlardır.