FFmpeg

Ostatnio bawię się narzędziem o nazwie FFmpeg. To bardzo ciekawe narzędzie pozwala na konwertowanie i manipulowanie obrazem video z lini poleceń. Dzięki temu można zaimplementować w aplikacji webowej możliwości podobne do oferowanych przez youtube.com czy vimeo.com.

Poniżej podaję kilka przykładów przydatnych operacji na plikach video.

Konwertowanie pliku video z jednego formatu do innego (konwertowanie na FLV)

To jest akurat bardzo przydatna operacja ponieważ pozwala nam np. zbudować witrynę, na którą użytkownicy mogą wgrywać pliki video w zasadzie w dowolnym formacie i konwertować je w locie na pliki FLV, które z kolei możemy osadzać na stronach www, tak aby były łatwo dostępne do obejrzenia dla innych internautów.

ffmpeg -i video.avi -ar 22050 -ab 32 -f flv -s 320x240 video.flv

-i plik wejściowy
-ar częstotliwość próbkowania dźwięku (Hz)
-ab bit rate dźwięku (kbit/s)
-f format pliku wyjściowego
-s wymiary (rozdzielczość) pliku wyjściowego

Nanoszenie napisu na obraz video

Też przydatna rzecz – możemy na pliku video zostawić np. adres naszej strony www.

ffmpeg -i video.avi -vhook '/usr/local/lib/vhook/drawtext.so -f arial.ttf -x 380 -y 10 -s 24 -t www.webowe.pl' -sameq video.avi

-i plik wejściowy
-vhook ścieżka do rozszerzenia pozwalającego nanosić tekst na video
-f
ścieżka do pliku z fontem, którym napiszemy nasz tekst
-x
współrzędna X początku napisu
-y
współrzędna Y początku napisu
-s
wielkość czcionki (w pikselach)
-t
napis
-sameq
zachowaj tą samą jakość w pliku wynikowym

Nanoszenie grafiki na obraz video

Też przydatna rzecz – możemy na pliku video zostawić np. adres naszej strony www.

Trzeba przygotować obraz GIF w rozmiarze takim jak rozmiar filmu. W jego lewym górnym rogu możemy umieścić np. logo naszej internetowej stacji telewizyjnej ;-), reszta obrazu zostaje przezroczysta.

ffmpeg -i video.avi -vhook '/usr/local/lib/vhook/watermark.so -f logo.gif -m1 -t 000000' -sameq out.avi

-i plik wejściowy
-vhook ścieżka do rozszerzenia pozwalającego nanosić tekst na video
-f ścieżka do obrazu z logo
-m
tryb – patrz dokumentacja: http://ffmpeg.mplayerhq.hu/hooks.html#SEC7
-t
treshold – patrz dokumentacja: http://ffmpeg.mplayerhq.hu/hooks.html#SEC7

-sameq zachowaj tą samą jakość w pliku wynikowym

Tutaj pozwalam sobie odesłać czytelnika do dokumentacji ponieważ przyznaję się bez bicia, że sam nie do końca rozumiem o co chodzi…

Generowanie thumbnaila

ffmpeg -an -i video.avi -ss 10 -t 0.0001 -f image2 "thumbnail.jpg"

-an pomiń audio
-i plik wejściowy
-ss start (w sekundach)
-t czas zrzutu (byle jaka mała wartość w sekundach)
-f format pliku wyjściowego

Inna metoda, którą znalazłem gdzieś w necie:

ffmpeg -i video.avi -ss 9.7 -an -r 1 -vframes 1 -s 320x240 -y -f image2 "thumbnail.jpg"

I to by było na razie na tyle. Może w przyszłości napiszę coś jeszcze w tym temacie…