Jak wypalić napisy w wideo (bez wysyłania go nigdzie)
Wypalanie napisów w wideo na własnym komputerze: cztery metody porównane, sprawdzone komendy FFmpeg i jak uniknąć spadku jakości przy ponownym kodowaniu.
Wypalanie napisów w wideo znaczy rysowanie tekstu prosto w obrazie i kodowanie na nowo, więc napisy podróżują z plikiem jako piksele. Potrzebujesz tego dla TikToka, Reels i Shorts, które w ogóle nie przyjmują plików z napisami, i zawsze wtedy, gdy napisy są częścią projektu, a nie tylko opcją dostępności. Nie musisz niczego wysyłać, żeby to zrobić — FFmpeg, HandBrake i desktopowe aplikacje do napisów robią to lokalnie, bez limitu rozmiaru pliku, jaki mają narzędzia w przeglądarce.
Poniżej cztery sposoby, jak to zrobić, sprawdzone komendy i dwie rzeczy, które faktycznie szkodzą jakości.
Kiedy wypalanie jest dobrym wyborem
| Wypalone (hardsub) | Plik lub ścieżka z napisami (softsub) | |
|---|---|---|
| Widz może to wyłączyć | Nie | Tak |
| Działa na TikToku, Reels, Shorts | Tak | Nie, brak wsparcia |
| Działa na YouTube, Vimeo | Tak | Tak, i można w tym szukać |
| Liczy się do zgodności z dostępnością | Zwykle nie | Tak |
| Indeksowane przez wyszukiwarki | Nie | Tak |
| Poprawa literówki później | Ponowny render wideo | Edycja pliku tekstowego |
| Wiele języków w jednym pliku | Nie, jeden render na język | Tak, jedna ścieżka na język |
| Stylizacja zachowana dokładnie | Tak | Tylko w ścieżkach ASS |
Praktyczna odpowiedź dla większości osób to obie metody naraz: wypalaj dla wertykalnych platform społecznościowych, gdzie nic innego nie działa, i wysyłaj plik z napisami wszędzie, gdzie taki plik jest odczytywany, bo plik można przeszukać, przełączyć i poprawić. Jeśli chcesz obu wyników z jednego zadania, dostawa w wielu językach opisuje, jak oba wyniki powstają z tej samej osi czasu.
Cztery sposoby wypalania napisów
| FFmpeg | HandBrake | Narzędzia w przeglądarce | Desktopowe aplikacje do napisów | |
|---|---|---|---|---|
| Cena | Darmowe | Darmowe | Darmowy poziom, potem subskrypcja | Jednorazowo albo subskrypcja |
| Wysyła twoje wideo | Nie | Nie | Tak, cały plik | Nie |
| Limit rozmiaru / długości pliku | Brak | Brak | Tak, zwykle ścisły | Brak |
| Tworzy napisy | Nie | Nie | Tak | Tak |
| Kontrola stylizacji | Przez ASS albo force_style | Ograniczona | Szablony | Pełna, z podglądem na żywo |
| Krzywa uczenia | Linia komend | Umiarkowana | Brak | Niska |
Dwie szczere uwagi. FFmpeg i HandBrake są w tym darmowe i świetne, a jeśli masz już gotowy plik z napisami, FFmpeg to jedna komenda — nie ma powodu, żeby za coś płacić. Czego żadne z nich nie robi, to tworzenie napisów: wypalają plik, który już masz, zaczasowany i poprawiony gdzie indziej. Narzędzia w przeglądarce faktycznie je tworzą, ale wysyłka pliku nie jest opcjonalna, co wyklucza je dla materiału poufnego i dla wszystkiego dłuższego niż ich limit.
Wypalanie napisów w FFmpeg
Dla zwykłego SRT:
ffmpeg -i input.mp4 -vf "subtitles=subs.srt" -c:a copy output.mp4
Dla stylizowanego pliku ASS użyj filtra ass, żeby stylizacja została zachowana, a nie spłaszczona:
ffmpeg -i input.mp4 -vf "ass=subs.ass" -c:a copy output.mp4
Aby jawnie kontrolować jakość, zamiast przyjmować wartość domyślną:
ffmpeg -i input.mp4 -vf "subtitles=subs.srt" \
-c:v libx264 -crf 18 -preset slow -c:a copy output.mp4
Aby zmienić styl SRT bez konwertowania go najpierw:
ffmpeg -i input.mp4 \
-vf "subtitles=subs.srt:force_style='FontName=Arial,FontSize=24,Outline=2'" \
-c:a copy output.mp4
Pułapka Windows. Ścieżkę wewnątrz filtra parsuje filtr, nie shell, więc dwukropek litery dysku i backslashe trzeba escapować. To najczęstsza przyczyna błędu „plik nie znaleziony” dla komendy, mimo że plik ewidentnie istnieje:
ffmpeg -i input.mp4 -vf "subtitles='C\:/Videos/subs.srt'" -c:a copy output.mp4
Trzymaj plik z napisami w katalogu roboczym i zawsze, kiedy możesz, podawaj samą nazwę pliku — to całkowicie omija ten problem.
Co faktycznie kosztuje cię jakość
Dwie rzeczy, i żadna z nich to samo wypalanie.
Ponowne kodowanie już skompresowanego pliku. Wypalanie wymaga ponownego kodowania, a to jest stratne. Zrobienie tego na materiale kosztuje praktycznie nic widocznego. Zrobienie tego na pliku, który platforma już skompresowała, oznacza kompresowanie artefaktów kompresji, i właśnie tam pojawia się blokowość i rozmazanie. Zawsze zaczynaj od wersji o najwyższej jakości, jaką masz, i nigdy nie wypalaj napisów w pliku, który już raz był wypalony.
Przyjmowanie domyślnych ustawień kodera. -crf 18 z x264 jest wizualnie prawie niezauważalne dla większości materiału; domyślna wartość 23 jest zauważalnie mniej wyraźna na szczegółowym materiale. -preset slow daje mniejszy plik przy tej samej jakości w zamian za czas. A -c:a copy zostawia strumień audio nietknięty — nie ma powodu kodować dźwięku na nowo, kiedy zmieniasz tylko obraz.
Czemu render nie zgadza się z podglądem
Dwie przyczyny, obie do naprawienia, zanim wydasz czas na kodowanie.
Fonty. Renderer rysuje fontem, jaki jest w stanie znaleźć. Jeśli wybrany font nie jest zainstalowany albo nie umie narysować danego pisma — większość ozdobnych fontów do napisów obejmuje łacinkę, cyrylicę i grekę, i nic poza tym — użyty zostaje zastępnik, a arabski, tajski, hangul albo CJK mogą wyjść jako puste prostokąty. Sprawdź font, zanim wyrenderujesz dwanaście języków, nie po.
Rozmiar płótna. Pozycje i rozmiary fontów w ASS są względne wobec wirtualnego płótna zadeklarowanego w pliku, nie wobec wymiarów wideo w pikselach. Ten sam rozmiar fontu daje inny tekst na ekranie na źródle 1080p i 4K, o ile płótno nie jest ustalone na sztywno. Sablate ustala płótno napisów na wirtualną ramkę o wysokości 1080 i wylicza szerokość z rzeczywistych proporcji źródła, wliczając metadane obrotu, więc rozmiar fontu znaczy to samo niezależnie od tego, w jakiej rozdzielczości nagrywałeś — a podgląd w edytorze skaluje się względem dokładnie tego samego płótna, którego używa renderer.
To także powód, czemu jakość wypalania tak bardzo różni się między narzędziami. Wiele edytorów online składa napisy jako płaską nakładkę tekstową; wypalanie w Sablate renderuje libass, ten sam mechanizm, którego odtwarzacze multimedialne używają do napisów ASS, więc obrysy, cienie, czasowanie karaoke słowo po słowie i fonty poprawne dla danego pisma wychodzą jako prawdziwa typografia napisów, a nie przybliżona grafika.
Wideo wertykalne i kwadratowe
Jeśli wideo trafia na Reels, Shorts albo TikTok, konwertuj proporcje obrazu podczas renderu, a nie przycinaj go po fakcie. Przycięcie gotowego wypalenia 16:9 do 9:16 odcina boki napisów razem z obrazem.
Sablate renderuje w 16:9 (1920×1080), 9:16 (1080×1920) albo 1:1 (1080×1080), przycinając do docelowej kadry albo dopełniając ją rozmytą kopią źródła, i rozplanowuje napisy pod finalną kadrę. Trzymaj tekst poza dolną jedną piątą kadry wertykalnej — ten obszar na większości telefonów zakrywa interfejs samej platformy.
Jak to zrobić bez linii komend
Jeśli nie masz jeszcze poprawionego pliku z napisami, wypalanie jest ostatnim krokiem dłuższego zadania: transkrybuj, popraw, stylizuj, renderuj. Sablate robi to od początku do końca na twoim komputerze — lokalną transkrypcję Whisperem, edytor z retimowaniem na osi czasu i ostrzeżeniami o prędkości czytania, 13 presetów napisów i wypalanie, które zgadza się z podglądem.
Wypalanie jest dostępne w planie Darmowym, z małym oznaczeniem w rogu; Pro usuwa to oznaczenie i dodaje eksport .ass, wielościeżkowego .mkv oraz wsadowy, za jedną płatność $29. Pobierz albo przeczytaj stronę cennika, by zobaczyć pełny podział.
W skrócie
Wypalaj, kiedy platforma nie czyta żadnego pliku z napisami albo kiedy napisy są częścią wyglądu — a wszędzie indziej wysyłaj plik z napisami, bo tekst, który można edytować, bije piksele, których nie można. Renderuj z materiału, nie z kopii przygotowanej do wysyłki. Użyj CRF 18 i kopiuj audio. I sprawdź font oraz płótno, zanim wydasz czas na kodowanie, bo to właśnie te dwie rzeczy sprawiają, że idealny plik z napisami wychodzi źle.