15 Sep
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…