Samokształcenie z wykorzystaniem Youtube, FFmpeg i Aegisub.
“Edukacja domowa daje Ci swobodę zejścia z autostrady nauki i wybrania bardziej malowniczej trasy wzdłuż polnej drogi”.
– Tamara L. Chilver
Chciałbym przedstawić w tym wpisie sposób na naukę przez sporządzanie notatek na tle strumienia wideo. Z uwagi na stabilną uniwersalność pliki mp4 z kodowane w standardzie H.264/AVC odtworzy większość starszych urządzeń. Oczywiście moglibyśmy wykorzystać OneNote, ale niepewność, co do kompatybilności i unifikacji typografii na różnych urządzeniach skłania mnie do zastosowania opisanych niżej narzędzi.
Jednocześnie sam proces przygotowania takich filmów jest formą uczenia. Ten banał uważam za warty podkreślenia: nic lepiej nie nakarmi naszej pamięci od własnych obserwacji i osobistych notatek, zwłaszcza ujętych w formule wideo. Ze szkolnego doświadczenia pamiętamy doskonale, jak sprawnie zapadała nam w pamięci wiedza spisana na ściągach.
Mamy do wyboru rozmaite edytory wideo, które lepiej lub gorzej przydadzą się do sporządzania materiałów edukacyjnych. Wszystkie jednak finalnie produkują plik wyjściowy w procesie transkodowania, a to z kolei wymaga mocnego sprzętu i w zależności od wydajności karty graficznej zajmuje od około kilku do kilkudziesięciu minut.
Tymczasem jeśli nie zamierzamy produkować dopieszczonych filmów na użytek publiczny i wystarczy nam sporządzanie notatek na bieżącym tle strumienia wizualnego, w sukurs przychodzą nam Aegisub do nanoszenia napisów oraz FFmpeg do wyróżniania rozdziałów.
FFmpeg to wszechstronna platforma do kompleksowej obróbki wideo. Jak większość dobrodziejstw pochodzących z Linuksa jest po prostu świetna, choć nie pozbawiona wad. Program stworzył Fabrice Bellard w 2000 roku, a obecnie jest rozwijany przez FFmpeg team.
Od zawsze szukałem rozwiązania umożliwiającego osiągnięcie maksimum przyswajalności potrzebnych treści. Zauważyłem, że najprzyjemniejsza nauka to taka z wykorzystaniem materiałów wideo. Najwięcej potrzebnych treści jest na Youtube, lecz zachłanna, cwaniarska i upokarzająca polityka giganta z Mountain View zmusza nas do tracenia czasu na reklamy. Na szczęście jest takie coś i to zmienia reguły gry.
Oprócz wspomnianych zalet, FFmpeg ma sporo innych, jak współpraca z większością znanych formatów, czy multum możliwości. Jednocześnie dostrzegam potrzebę stworzenia spójnego interfejsu graficznego, który umożliwiłby choćby zawansowane operacje graficzne. Trudno mi sobie wyobrazić praktyczne śledzenie postaci przy pomocy interfejsu tekstowego.
materiały wideo
Przygotujmy sobie potrzebne pliki wideo. Najbardziej uniwersalne są pliki mp4 zakodowane przy pomocy H264/AVC. Prawdopodobnie bez problemu odtworzymy je w telewizorze z pendriva. Oczywiście wiąże się to z koniecznością ich ściągnięcia. Największy wybór jest na Youtube, jednak wówczas potrzebujemy stosownych wytrychów. Myślę, że warto wybulić trochę kasy i mieć spokój. Zawsze można też nagrywać ekran, ale stosuję to, gdy nie potrafię inaczej.
Aegisub + tutoriale
Po pobraniu Aegisub, trzeba się go nauczyć. Wiem, że interfejs jest trochę przytłaczający, ale sam nie opanowałem go do końca, a jedynie w potrzebnym stopniu. Jednakże jako, że jest bardzo użyteczny, z racji częstego używania, przyswajam go coraz bardziej. Tutorial jest po angielsku, więc nieznających go odsyłam do akapitu poniżej.
Youtube Dual Subtitles
To darmowe rozszerzenie tłumaczy napisy w przeglądarkach MS Edge i Chrome.
FFmpeg + tutoriale
Po pobraniu, trzeba go zainstalować, a to już nie jest takie proste. Oto kilka przydatnych linków wprowadzających do tematu FFmpeg:
- Oficjalna dokumentacja, niestety zaprezentowana na jednej stronie bez podziału na sekcje, przez co ze względu na swą obszerność potrafi zawiesić przeglądarkę.
- Wiki
- Najnowsze kompendium. Ponad 1000 stron wiedzy.
- Poradnik dla początkujących zawierający przystępne wprowadzenie wraz z procedurą instalacji i dodania programu do zmiennych środowiskowych.
- Przykłady zastosowania.
- 160 filmów prezentujących możliwości FFmpeg.
Nie będę się zbyt rozpisywał nad programem. Wszystko, co potrzeba jest w podlinkowanym tutorialu. W razie problemów polecam też Copilot w MS Edge. Z mojej strony dodam jednak, że przydała by się możliwość swobodnego zawijania tekstu enterem, jak w edytorach tekstu.
Na koniec przy pomocy FFmpeg wyróżniamy w naszym wideo rozdziały. I to jest właśnie najfajniejszy etap. Żaden inny program, może z wyjątkiem Da Vinci Resolve, czy opartych na FFmpeg linuksowych aplikacji tego nie potrafi, ale także nie wszystkie odtwarzacze poradzą sobie z wyszczególnieniem utworzonych rozdziałów. Najlepiej predystynowany jest do tego VLC. Oto tajna komenda w wierszu poleceń programu FFmpeg:
D:\>ffmpeg -i input.mp4 -i chapfile.txt -map_chapters 1 -c copy output.mp4
ffmpeg | polecenie uruchamiające program |
-i | opcja informująca o tym, że input.mp4 jest plikiem wejściowym |
input.mp4 | plik wejściowy przeznaczony do obróbki |
-i | kolejna informacja o tym, że chapfile.txt jest plikiem wejściowym |
chapfile.txt | plik tekstowy z informacjami o przyjętych jednostkach czasowych, czasach początków i końców rozdziałów oraz ich nazwach |
-map_chapters | opcja mapująca rozdziały w pliku wejściowym chapfile.txt |
1 | informacja mówiąca, że mapowanie pliku input.mp4 (pierwszy plik wejściowy z nr 0) zawarte zostało w drugim pliku wejściowym (chapfile.txt z nr 1) |
-c | opcja umożliwiająca modyfikowanie strumieni |
copy | parametr opcji -c określający, że chcemy skopiować (zamiast zbędnego transkodowania) strumienie w pliku wejściowym input.mp4 |
output.mp4 | plik wyjściowy, który powstanie po zakończeniu operacji |
Jak sami zauważycie opcja kopiowania strumieni -c copy wyraźnie przyspiesza całą operację. Nie ma bowiem potrzeby ich ponownego transkodowania, o ile nie zależy nam na zmianie ilości klatek, bitratu, rozdzielczości, czy innych parametrów. Tego unikalnego atutu nie mogłem znaleźć w żadnym innym edytorze. Pod input.mp4, chapfile.txt i output.mp4 podstawiamy nazwy stosownych plików.
Jeśli zainstalowaliście FFmpeg zgodnie z tym poradnikiem, będziecie mogli uruchomić program z dowolnego katalogu, oczywiście z linii poleceń.
Opcja -map_chapters jak najbardziej działa w przeciwieństwie do sugerowanej w oficjalnej dokumentacji opcji -map_metadata.
Podobnie ma się sprawa z tworzeniem rozdziałów. VLC nie widzi markerów utworzonych zarówno w Adobe Premiere Pro, jak i CyberLink PowerDirector, a z prezentacją rozdziałów wyróżnionych przy pomocy FFmpeg radzi sobie bez problemu.
Przed wyróżnianiem rozdziałów musimy jeszcze sporządzić plik tekstowy (chapfile.txt) następującej treści:
;FFMETADATA1
[CHAPTER]
TIMEBASE=1/1000
START=0
END=112212
title=Tytuł pierwszego rozdziału widoczny w menu VLC.
[CHAPTER]
TIMEBASE=1/1000
START=112212
END=234267
title=Tytuł drugiego rozdziału widoczny w menu VLC.
[CHAPTER]
TIMEBASE=1/1000
START=234267
END=282949
title=Tytuł trzeciego rozdziału widoczny w menu VLC.
W linijkach START i END podajemy początek i koniec rozdziału w milisekundach. Informację dla FFmpeg o tym, że są to milisekundy zawieramy w linii TIMEBASE. Jeżeli zechcemy podać czas w sekundach, wówczas TIMEBASE=1/1. Milisekundy, jak podaje oficjalna dokumentacja to jednostki domyślne, więc jeśli pominiemy linijkę TIMEBASE, nic złego się nie stanie.
Nie będę zamieszczał przykładowych plików wideo, aby nie psuć Wam frajdy z eksperymentowania. Na dowód, że opisana metoda działa spójrzcie na ten poniższy zrzut.

Zwracam uwagę, że niebieski tekst pod rozwiniętym menu w lewym górnym rogu okna VLC nie jest wtopiony w strumień wideo. O tym jak to zrobić bez problemu w VLC mowa w podlinkowanym wcześniej tutorialu o Aegisub autorstwa TJ FREE, któremu (odchodząc od tematu) za jego szkolenia należą się wyrazy uznania i podziękowania. Dzięki takim, jako On dostajemy to, co chcemy za free i krok po kroku przekonujemy się, że Linuks to jedna wielka… darmowa i kompetentna alternatywa dla wiodących OS. Podobnie, jak w przypadku FFmpeg, przed poznaniem którego nie zdawałem sobie sprawy, że można edytować wideo bez potrzeby transkodowania, a teraz bez problemu na słabym sprzęcie w krótkim czasie otrzymuję potrzebny plik wyjściowy w dowolnym formacie.
Zwróćcie uwagę na szybkość i praktyczność procesu uczenia. Przy pomocy Aegisub notujemy uwagi i opisujemy spostrzeżenia niejako podkreślając kluczowe momenty na materiale wideo. Pracując z FFmepegiem szybko wyróżniamy potrzebne fragmenty. Później ich recepcja przy pomocy VLC to czysta przyjemność.
Jednocześnie przy całej estymie darzonej ku Linuksowi, FFmpeg i Aegis nie są świętym graalem. Pomimo tych niewątpliwych mankamentów atuty obydwu przy bliższym poznaniu zwyczajnie powalają. Wspomniane wady można wyeliminować, a graficzny interfejs dla FFmpeg byłby dobrodziejstwem nie do przecenienia.
Your blog is a constant source of inspiration for me. Your passion for your subject matter is palpable, and it’s clear that you pour your heart and soul into every post. Keep up the incredible work!
Doceniam twoje teksty i prawie wszystkie chłonę migiem, dziękuję za link z komentarza, on jest rankingowym dźwigiem.
Witam.
To miłe. Staram sie, aby teksty miały sens, natomiast to tylko początek.
Nie chcę popaść w megalomanię, ale mam kupę fajnych pomysłów i mało czasu po pracy.
Pisząc teksty sam utrwalam wiedzę i o to chodzi mi najbardziej.
Jednocześnie ucząc się, dostrzegam błędy, które sukcesywnie poprawiam.
Pozdrawiam i dziękuję serdecznie
Marcin