Konwersja pliku wideo (mpg,mpeg,avi,3gp) do flv – ffmpeg

Aby odtwarzać plik wideo w playerze flash’owym osadzonym na stronie naszej aplikacji plik
musi być w formacie FLV (Flash Video). Konwersję można zrobić ‚ręcznie’ lub zautomatyzować używając do tego dziennika crontab’a i unix’owego programu ffmpeg.

Ffmpg jest naprawdę rewelacyjnym programem, obsługuje konwersję wielu formatów audio, video oraz graficznych.

Posiada on sporą liczbę opcji i umożliwia dokonywanie wielu operacji na przetwarzanych
plikach. Pełna lista opcji dostępna jest w dokumentacji. Zobacz także składnię ffmpeg.

ffmpeg -i plik_wejsciowy -s 352×288 -acodec mp3 -r 25 -ar 22050 -ac 2 -ab 48k -b 400k -f flv plik_wyjsciowy.flv

Powyższe polecenie dokona konwersji pliku wejściowego do formatu FLV. Użyte parametry oznaczają:

* -i plik wejściowy
* -s 352x288: ustalenie rozmiaru (szerokość x wysokość) pliku wyjściowego (wartości muszą być parzyste)
* -acodec mp3: wymuszenie użycia kodeku audio (mp3)
* -r 25: ustawienie framerate'u pliku wyjściowego na 25 klatek/sek
* -ar 22050: ustawienie częstotliwości próbkowania dźwięku w Hz (domyślnie 44100hz)
* -ac 2: ustawienie liczby kanałów audio (2 - stereo, 1 - mono)
* -ab 48k: ustawienie bitrate'u dźwięku pliku wyjściowego bits/s  (domyślnie 64kbps)
* -b 400k: ustawienie bitrate'u wyjściowego pliku wideo bits/s (domyślnie 2000kbps)
* -f flv: wymuszenie formatu pliku wyjściowego
* plik_wyjsciowy.flv - plik wyjściowy

Tak przekonwertowany plik wideo powinien zachować jakość bardzo zbliżoną do oryginału. W razie potrzeby można poeksperymentować z wielkością parametrów bitrate’u, framerate’u oraz z kodekami aby otrzymać pożądaną jakość widea wyjściowego.

VIM – podstawowe komendy

Ktoś może pomyśleć – „po co mi znajomość VIMa, przecież jest milion przyjaźniejszych dla użytkownika edytorów”. Zgodzę się, po części – jest wiele UNIX-owych edytorów tekstu posiadających interface dużo przyjaźniejszy jednak żaden z nich nie ma takich dużych możliwości jak stary poczciwy VIM, nie znam innego edytora, który z równie sprawnie i szybko edytuje pliki 200 megowe. Zresztą na niektórych serwerach (wierzcie mi, że są takie) VIM jest jedynym dostępnym edytorem tekstu.

Jako, że kiedyś sam szukałem prostego manuala z podstawowymi komedami VIMa to może komuś się przyda:

poruszanie się po dokumencie
+ – przejście do następnej linii
– – przejście do poprzedniej linii
0 – przejście do początku linii
^ – przejście do pierwszego znaku nie będącego znakiem białym w linii
$ – przejście na koniec linii
n| – przejście do kolumny n linii
} – przejście do następnego paragrafu
{ – przejście do poprzedniego paragrafu
% – przejście do otwarcia / zamknięcia nawiasu (),[],<>,{}
G – przejście na koniec dokumentu
nG – przejście do linii <n>

zapisywanie
:x lub :wq – zapisywanie pliku i wyjście
:q! – wyjście bez zapisania zmian
:w plik – zapisanie w nowym pliku „plik”

wyszukiwanie
/ STRING – szukanie do przodu
? STRING – szukanie do tyłu
n – przejście do następnego znalezionego elementu
SHIFT+n przejście do poprzedniego znalezionego elementu

kasowanie tekstu
x – kasowanie bieżącego znaku
nx – kasowanie znaków
dw – kasowanie bieżącego wyrazu
dd – kasowanie bieżącej linii
ndd – kasowanie <n> linii
D – kasowanie znaków od kursora do końca bieżącej lini
dG – kasowanie wszystkiego od kursora do końca dokumentu

edycja tekstu
o – wstawienie nowej linii poniżej bieżącej
O – wstawienie nowej linii powyżej bieżącej
i – rozpoczęcie edycji przed kursorem
I – rozpoczęcie edycji na początku bieżącej linii
a – rozpoczęcie edycji po kursorze
A – rozpoczęcie edycji na końcu bieżącej linii
cw – zastąpienie wyrazu (bieżący wyraz się kasuje, kursor ustawia się na jego początku)
cc – zastąpienie linii (bieżąca linia się kasuje, kursor ustawia się na jej początku)

kopiowanie i wstawianie
yw – kopiuj do schowka bieżący wyraz
yb – kopiuj do schowka poprzedni wyraz
Y – kopiuj do schowka bieżącą linię
nY – kopiuj następne <n> linii
p – wklej skopiowany tekst za kursorem
P – wklej skopiowany tekst przed kursorem

inne
u – cofnięcie ostatniej zmiany
U – cofnięcie wszystkich zmian w bieżącej linii
. – powtórzenie ostatniej komendy
SHIFT+# – wyszukiwanie wyrażeń pasujących do zaznaczonego
SHIFT+% – przejście do kolejnego nawiasu () lub {}
~ – zmiana litery z małej na dużą i na odwrót

zastępowanie
Można używać wyrażeń regularnych PERL- kompatybilnych

zastąpienie stringu OLD stringiem NEW
:s/OLD/NEW – pierwszego wystąpienia w bieżącej linii
:s/OLD/NEW/g – każdego wystąpienia w linii
:#,#s/OLD/NEW/g – pomiędzy liniami # i #
:%s/OLD/NEW/g – w całym dokumencie
:%s/\([0-9]\+\) OLD/\1 NEW/g – w całym dokumencie z użyciem backreferencji (trzeba poprzez „\” wyescapować znaki specjalne, następnie poprzez „\1” wstawić wyciągnięte dane)

praca z danymi zewnętrznymi
Vim umożliwia wywołanie dowolnej komendy z poziomu edytora, można także odczytywać efekt jej działania

:! komenda – wywołanie ‚komenda’ w shellu i wyświetlenie jej wyniku, komenda może być każde polecenie unixowe
:r ! komenda – wywołanie ‚komenda’ w shellu i wczytanie wyniku jej działania do edytora
:r ! last | grep user – na wywoływanych komendach można robić dowolne operacje przed wczytaniem do edytora
:r textfile – wczytanie źródła pliku ‚textfile’ do edytora
:r ! w3m http://en.wikipedia.org/wiki/Vi -dump – wczytanie do edytora zawartości strony internetowej

Praca z zakładkami
:tabs – wyświetlenie informacjie o aktualnie otwartych zakładkach
:tabnew – otwarcie pustej zakładki
:tabnew FILE – otwarcie pliku FILE w nowej zakładce
:tabf FILE – otwarcie pliku w nowej zakładce
:tabn – przejście do następnej zakładki
gt – przejście do następnej zakładki (działa w trybie NORMAL)
gT – przejście do poprzedniej zakładki (działa w trybie NORMAL)
n gt – przejście do zakładki o numerze n (działa w trybie NORMAL)
n gT – cofnięcie się do zakładki znajdującej się w odległości n od aktualnej (działa w trybie NORMAL)
:tabp – przejście do poprzedniej zakładki
:tabl – przejście do ostatniej zakładki
:tabc – zamknięcie aktualnej zakładki, gdy jest jedna karta, to nie będzie zamknięta
:tabo – zamknięcie wszystkich zakładek oprócz tej która jest aktualnie używana
:tabd KOMENDA – wykonuje komendę na wszystkich otwartych zakładkach

Polecam rewelacyjny VIM Tutorial.

Możliwe problemy i ich rozwiązania

  • Jeżeli przy wklejaniu do konsoli kodu z tabulacjami/spacjami tworzą się niechciane wcięcia należy użyć polecenia „:set paste” następnie wkleić kod i ponownie ustawić „:set nopaste”, więcej o wklejaniu na w tym temacie stackoverflow.

Zobacz też A vim Tutorial and Primer.

Autmatyczny backup

Kopia zapasowa – przydatna rzecz, warto ją mieć, jednak człowiek niezbyt często o tym pamięta gdy wszystko działa poprawnie. W momencie gdy pada system myśl o dacie ostatniego backupa jest pierwszą myślą świtającą w głowie.
Po co się tak stresować, po co polegać na zawodnej ludzkiej pamięci, lepiej napisac skrypt i niech wszystko się samo wykonuje.
Synchronizujemy katalogi zawierające dane do backupa z aktualnym stanem danych zbackupowanych

rsync -avrz $HOME/workspace/* $HOME/backup/source/workspace/
rsync -avrz $HOME/thunderbird/* $HOME/backup/source/mail/
rsync -avrz $HOME/gg/* $HOME/backup/source/gg

Następnie tworzymy archiwum zawierające bieżącą date

currDate=$(date +%Y-%m-%d);
tar -cjf $HOME/backup/archive/backup-$currDate.tar.bz2 $HOME/backup/source/*

Tak przygotowane archiwum zgrywamy w bezpieczne miejsce (np. na inna maszynę), a następnie kasujemy tymczasowe archiwum.

rsync -avrz -e ssh $HOME/backup/archive/ bezpieczny@dysk:/home/users/xxx/backup/
rm $HOME/backup/archive/backup-$currDate.tar.bz2

Następnie należy jeszcze tylko zautomatyzować wywoływanie skryptu odpowiednim wpisem w cronie:

0 15 * * fri $HOME/prog/backup.sh

W tym przypadku skrypt będzie wywoływany co tydzień w piątek o godzinie 15, tak więc od tej pory co tydzień mogę spokojnie opuszczać stanowisko pracy na weekend będąc pewnym, że moje dane są bezpieczne.

****dodane****

Aby backup mógł wykonywać się automatycznie to połączenie z bezpieczny@dysk musi być trusted (łączenie z nim bez hasła). Jest wiele sposobów aby to wykonać np:
Na komputerze, z którego robisz backup wpisz:

ssh-keygen -t dsa

Naciśnij enter kilka razy.

W twoim katalogu domowym zostanie stworzony katalog .ssh zawierające potrzebne pliki. Następnie w konsoli wpisz polecenie

ssh bezpieczny@dysk ‘test -d .ssh || mkdir -m 0700 .ssh ; cat >> .ssh/authorized_keys && chmod 0600 .ssh/*’ < ~/.ssh/id_dsa.pub

Zostaniesz poproszony o wprowadzenie hasła na bezpieczny@dysk, wprowadź je. I to wszystko. Hasło zostanie zapamiętane.

Możesz teraz przetestować, powinieneś łączyć się przez ssh z bezpieczny@dysk bez podawania hasła.

ssh bezpieczny@dysk