Zapisywanie obrazu z kamery internetowej do pliku (gstreamer)
23.11.2013 10:27
Być może znajdzie się ktoś, kto będzie chciał szybko i sprawnie, bez żadnego dodatkowego softu (prócz gstreamera) zapisać obraz z kamerki internetowej do pliku, w formie nieskompresowanej, lub powiedzmy avi, w formacie h264. Poniżej przykład, jak tego dokonać.
Bez kompresji:
sudo gst-launch -v v4l2src device=/dev/video0 ! queue ! videoscale method=1 ! "video/x-raw-yuv,width=640,height=480" ! queue ! videorate ! "video/x-raw-yuv,framerate=(fraction)15/1" ! queue ! avimux ! filesink location=plik.avi
h264:
sudo gst-launch -v v4l2src device=/dev/video0 ! queue ! videoscale method=1 ! "video/x-raw-yuv,width=640,height=480" ! videorate ! "video/x-raw-yuv,framerate=(fraction)15/1" ! x264enc bitrate=256 ! avimux ! filesink location=plik.avi
avimux jest tak zwanym muxerem, który pakuje zawartość "strumienia" , a x264enc jest kodekiem, któremu można przypisać kilka ciekawych ustawień, takich jak bitrate. Możemy również eksperymentować z rozdzielczością zapisywanego obrazu, manipulując caps'em "video/x-raw-yuv,width=640,height=480".
W kolejnych wpisach między innymi znajdą się informacje, jak tworzyć pipeliny z poziomu kodu źródłowego (w C), jak przesyłać obraz i dźwięk poprzez sieć (strumieniowanie RTP, RTSP i tym podobne) i wiele, wiele innych..
Udanych zabaw z kamerką i nie tylko !