Blog jak widać już nie jest aktualizowany. I raczej nie będzie. Wisi sobie ot tak, ze względów historycznych :)

Linux, ffmpeg i przechwytywanie obrazu z wbudowanej kamery laptopa

Krzysztof Rygielski | 2011-01-23 14:00 | Kategorie: Linux

Kiedy kupiłem mojego obecnego laptopa (już 3 lata temu... ale staroć) nie miałem pojęcia jak w ogóle używać wbudowanej kamerki internetowej. Obok czytnika linii papilarnych było to urządzenie, którego nie mogłem zmusić do współpracy. Spory czas późnie (i kilka upgrade'ów później :P) zauważyłem, że Skype łapie obraz z kamery bez najmniejszego problemu. Zatem wszystko działało jak należy, ja tylko nie wiedziałem jak się zabrać do tego "od ręki". Ostatnio zainteresowałem się tematem i jak zawsze, wujek google przyszedł mi z pomocą :-)

Wpis Jasona na www.ilovemyjournal.com oraz jeden komentarz pod nim dały mi wskazówki jak osiągnąć to, co chcę. Całość przechwytywania video jest dziecinnie prosta. Wystarczy nam do tego ffmpeg, dość powszechne konsolowe narzędzie do obróbki video. Polecenie, którego używam wygląda mniej więcej tak:

$ ffmpeg -f video4linux2 -s 640x480 -b 700k -r 29.97 -i /dev/video0 -f avi output.avi

Krótki opis tego co wyżej:

  • -f - opcja formatu. Przy pierwszym wystąpieniu oznacza format wejścia. W tym przypadku video4linux2, bo przechwytujemy obraz z kamery za pośrednictwem sterowników linuxa. Za drugim razem to nazwa formatu wyjściowego. W przykładzie jest avi, ale można użyć dowolnego znanego jak flv, mpeg, itd.
  • -s - rozmiar. Czyli wymiary w pikselach naszego zapisanego nagrania. Istnieją predefiniowane formaty, np. vga, który odpowiada akurat rozdzielczości 640x480.
  • -b - bitrate, czyli bity na sekundę. Jego wielkość ma wpływ na jakość wynikowego obrazu, ale od pewnej wartości i tak przestaje to mieć znaczenie. W końcu standardowe webcamy to nie narzędzia do nagrywania profesjonalnego video wysokiej jakości :-)
  • -r - ilość klatek na sekundę. Domyślnie jest niby ustawiana wartość 25, ale u mnie bez przekazania tego parametru ffmpeg się wywracał.
  • -i - urządzenie wejściowe, czyli w tym wypadku ścieżka do pliku urządzenia znakowego, odpowiadającego naszej kamerce.

Szczegóły można wyczytać z manuala do ffpmeg.

O ile na razie udaje mi się bez problemu przechwytywać video, to nadal nie udało mi się zmusić ffmpega do jednoczesnego nagrywania dźwięku. Wiem, że jest to możliwe, ale jeszcze nie rozgryzłem jak to zrobić na mojej maszynce :-)