Niemal każdy doświadczony administrator potrafi korzystać z narzędzi skryptowych, gdyż bardzo ułatwiają mu pracę, umożliwiając automatyzację powtarzanych czynności. Umiejętność korzystania ze skryptów powłoki sprawia, że coś, co normalnie wymaga pracowitego szukania i kopiowania plików, z powodzeniem można zautomatyzować. Oto przykład zastosowania: prosta konwersja wielu plików wideo.
Z redakcji otrzymałem nagranie wideo (1080p) tak, jak wyszło z kamery. Specjaliści twierdzili, że aby to obejrzeć muszę mieć odpowiednie oprogramowanie, a konwersję należy wykonać w Adobe Premiere. Czas renderowania i prostej konwersji do formatu PAL DVD oszacowano na nieco mniej niż 1 godzinę na gigabajt filmu, czyli co najmniej 30 godzin – a ja po pierwsze nie miałem tego czasu, po drugie nie potrzebowałem w ogóle rozdzielczości 1080p, do obejrzenia materiału wystarczy PAL DVD. Ewentualny montaż na potrzeby YouTube’a również mogę przeprowadzić w niższej rozdzielczości. Nie uśmiechało mi się jednak importowanie każdego pliku z osobna do kdenlive (o tym programie będzie osobna notka).

Pora usprawnić prace
Rozpoznałem strukturę katalogów, była prosta – trzy zrzuty z trzech kart pamięci oznaczonych a, b, c, wewnątrz każdego katalogu były podkatalogi, w których interesował mnie tylko jeden plik z rozszerzeniem MP4. Wystarczyło przekodować go do mniejszej rozdzielczości za pomocą narzędzia ffmpeg i dodać w nazwie słowo pal, by oznaczyć powstały plik.

Użyłem zatem prostego skryptu, który nazwałem enkoduj i wrzuciłem do /usr/bin

#!/bin/bash
for i in *; do /usr/bin/ffmpeg -i $i -target pal-dvd pal$i ; done

Następnie w katalogu nadrzędnym uruchomiłem go poleceniem:

for j in *; do cd $j; /usr/bin/enkoduj $j; cd ..; done

Ponieważ mam czterowątkowy dwurdzeniowy procesor, a ffmpeg w najprostszej konfiguracji korzysta tylko z jednego wątku, uruchomiłem trzy zadania jednocześnie, w trzech katalogach wewnątrz a,b i c.
Transkodowanie wszystkich plików z formatu HD 1080p do PAL DVD trwało krócej niż 3 godziny, przy czym w tym samym czasie mogłem zrobić jeszcze inne rzeczy, na przykład napisanie jednego z tekstów do raportu specjalnego Bezpieczeństwo (będzie w grudniu) czy przygotowanie niniejszego wpisu. A procesor to nic nadzwyczajnego, przeciętniaczek Core i3 M380 w typowym Probooku, który można było kupić w każdym większym sklepie. Zastanawiałem się nad użyciem komendy nice, by uruchomić zadania z niższym priorytetem, ale okazało się, że trzy równoległe zadania zostawiają jeszcze 1/4 mocy procesora, co nadal wystarczy do pracy.

Gdyby ktoś chciał uruchomić wszystkie obliczenia z podkatalogów równolegle, to w drugim skrypcie można użyć komendy & by zlecić wykonanie enkodowania w tle. Ma to sens w przypadku sześcio- lub ośmiordzeniowych procesorów AMD lub Xeon.

Jeśli ktoś chce uruchomić podobną procedurę na komputerze z systemem Microsoft Windows, polecam zbudowane binarki programu ffmpeg (http://ffmpeg.zeranoe.com/builds/), do podobnego oskryptowania można użyć PowerShella. Jest zupełnie inny niż bash, ale działa bardzo dobrze i warto z niego korzystać.