W ramach opisu tworzenia screencastów pod Linuksem omówię teraz najważniejszy etap - nagrywanie akcji odbywających się na ekranie.
Plan
Zaczynam od planu - tj. wynotowania, co właściwie chcę zrobić. Co prawda jest możliwe wycięcie niepotrzebnych opóźnień, czy pomyłkowych akcji (będę o tym pisał w kolejnym odcinku), ale łatwo przy tym zaburzyć tempo prezentacji, jest to też po prostu więcej pracy niż zrobienie planu.
Najlepiej mi się sprawdza zwykła kartka papieru zawierająca spis czynności, leżąca na biurku przed ekranem. Notuję na tyle dokładnie, na ile sam potrzebuję. Przykład takiego planu:
- Uruchomić F-Spota
- Pasek czasowy, podgląd paru zdjęć.
- Tagowanie - ciągnięcie tagu na zdjęcie.
- Tagowanie - ciągnięcie zdjęć na tag.
- Tagowanie - nowy tag dla grupy zdjęć.
- Wybór ikony dla tagu.
- pauza
- Import z aparatu.
- Eksport na Flickr.
- Podgląd w przeglądarce.
- pauza
- Eksport do galerii.
- Demonstracja w przeglądarce.
Jak widać podzieliłem plan na trzy niezależne kawałki, między nimi będę sobie robił pauzy.
Narzędzie
Z kilku dostępnych narzędzi do łapania screencastów najbardziej mi się podoba gtk-recordMyDesktop. Na Ubuntu jest dostępny w paczce:
$ sudo apt-get install gtk-recordmydesktop
Ustalenie obszaru nagrywania
Na początek zaznaczam nagrywany obszar ekranu. Staram się zaplanować jak najmniejszy rozmiar (oczywiście taki, w którym się zmieszczą potrzebne okna), najczęściej 800x600 albo 1024x768 - rozmiar plików wideo gwałtownie rośnie z wzrostem rozdzielczości.
Nagrałem kiedyś nieopatrznie spory kawałek w formacie 700x1100. Nic sensownego się z tym nie dało zrobić...
Co prawda gtk-recordMyDesktop
pozwala określić nagrywany obszar aż
na trzy sposoby - przez Wybierz okno i wskazanie nagrywanego
programu, ciągnięcie (niewygodne) po miniaturowym podglądzie w oknie
programu lub ciągnięcie (wygodne) po całym ekranie (prawy klawisz na
czerwonej kropce w panelu górnym i wybór Zaznacz obszar na
ekranie) - ale ... używam czwartej metody. Chcę mieć 800x600 a nie
ręcznie zaznaczone 817x594.
Uruchamiam sobie okno wzorcowe. Okienko, które nie będzie pokazywane w trakcie prezentacji, ale które ma odpowiedni rozmiar i położenie.
Zwykle biorę okno Firefoxa, i modyfikuję mu rozmiar przy pomocy Narzędzia/WebDeveloper/Resize. Jest oczywiście 100 innych sposobów, Firefox po prostu zawsze jest pod ręką.
Wybieram w gtk-recordMyDesktop
Wybierz okno i klikam wzorcowe
okienko. Następnie wzorcowe okno minimalizuję (nie zamykam go, przyda
się, jeśli będę chciał nagrać drugi fragment).
Po wyborze obszaru nagrywania wygląda to mniej więcej tak (fragment ekranu, który będzie nagrywany, jest obrysowany czarną ramką, czerwona kropka w prawym górnym rogu to ikona recordMyDesktop):
Pozostałe przygotowania
Klikam Zapisz jako i ustawiam, gdzie ma zostać zapisany wynik nagrywania.
Tak, trzeba to zrobić przed rozpoczęciem nagrywania. W innym wypadku program zapisze wyniki w
~/out.ogg
, a jeśli taki plik już istniał, w~/out.ogg.1
itd.
Ponieważ dźwięk będę nagrywać później, odznaczam checkbox Jakość dźwięku. Jakość obrazu pozostawiam na maksimum, kompresować film będę na końcu.
Nagranie komentarza wraz z wideo nie jest wcale poręczne, po przycięciu wideo łatwo się rozjeżdża. Wolę opracować wideo do końca i osobno nagrać komentarz, więcej o tym może kiedyś napiszę.
Nagrywanie
Klikam przycisk Nagrywanie w oknie recordMyDesktop
(można też
kliknąć lewym przyciskiem myszy czerwony przycisk w panelu
górnym). Okno recordMyDesktop
znika, ikona na górnym panelu zmienia
się z czerwonej kropki w szary kwadracik, zdarzenia na ekranie
zaczynają być rejestrowane.
Znikanie programu jest celowe (umożliwia nagrywanie całego ekranu) ale początkowo dość konfudujące. Doradzam kilkakrotne przećwiczenie mechaniki programu przed nagrywaniem prawdziwego filmu.
Zerkając na plan, realizuję go.
Po zakończeniu każdej fazy, klikam prawym przyciskiem myszy w ikonę nagrywania (na górnym panelu). Ikona zmienia się z kwadracika na symbol pauzy, nagrywanie jest wstrzymane. Koryguję układ okien, przypominam sobie dalszy plan, biorę oddech i klikając ponownie prawym klawiszem myszy wznawiam nagrywanie.
Krótkich pauz raczej nie robię, tak czy siak takie momenty wymagają przycinania wideo, więc równie dobrze może się nagrać parę niepotrzebnych sekund.
Na koniec klikam lewym przyciskiem myszy w ikonę nagrywania. Powoduje
to wyskoczenie okna kodowania nagrania, po chwili proces się kończy
i ponownie pojawia się okno gtk-recordMyDesktop
. Filmik został
zapisany w miejscu skonfigurowanym przed nagrywaniem (albo w ~/out.ogg
,
~/out.ogg.1
, ...).
Jeśli omyłkowo kliknę lewym zamiast prawym i skończę nagrywanie przedwcześnie, nie przejmuję się. Przywołuję okno wzorcowe, powtórnie ustalam ten sam obszar nagrywania i nagrywam ciąg dalszy. Wynik będzie w dwóch plikach (
out.ogg
iout.ogg.1
lub podobnie).
Stany działania nagrywarki
Podsumowując: gtk-recordMyDesktop
może być w trzech stanach:
-
przed/po (czerwona kropka na górnym panelu, widoczne okno konfiguracji) - lewy przycisk myszy na kropce w panelu zaczyna nagrywać a prawy pokazuje menu
-
nagrywam (szary kwadrat na panelu) - lewy przycisk kończy nagranie i zapisuje plik wynikowy, prawy pauzuje
-
pauza (znak pauzy na panelu) - lewy przycisk kończy nagranie i zapisuje plik wynikowy, prawy wznawia nagrywanie
Weryfikacja stanu nagrania
Uruchamiam
$ vlc ~/out.ogg
(czy gdzie tam kazałem zapisywać) i sprawdzam, czy nagrałem to co
chciałem. Jeśli widzę jakieś stare nagranie, sprawdzam ~/out.ogg.1
itd.
Zapis nagrania
Format Theora jest politycznie poprawny, ale słabo obsługiwany. Dlatego konwertuję na AVI:
$ mencoder -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800 \
-oac mp3lame \
out.ogg -o out.avi
mp3lame
jest tu tak naprawdę zbędne, nie nagrywałem głosu, ale też w
niczym nie szkodzi (a powyższa forma przyda się w razie konwersji
nagrania z dźwiękiem).
Wynikowy plik out.avi
sprawdzam raz jeszcze w vlc
i kopiuję do
folderu roboczego.
Koniec nagrywania.