sanslogic | Images | fswebcam | hacktv | HAB | SSDV | Mastodon25-Jun-2024


fswebcam is a neat and simple webcam app. It captures images from a V4L1/V4L2 compatible device or file, averages them to reduce noise and draws a caption using the GD Graphics Library which also handles compressing the image to PNG or JPEG. The resulting image is saved to a file or sent to stdio where it can be piped to something like ncftpput or scp.


Latest version is fswebcam-20200725 tar.gz tar.xz

A public git repository is available here:

What's New

  - Return a non-zero if the capture fails.
  - Add option to change camera timeout from default of 10 seconds.
    (James McCormac)
  - Add new Bayer palettes. (Eugen Hristev)
  - Add WebP output support.
  - Add option to dump raw frames to stdout. (Philipp Simon Schmidt)
  - Add option to limit number of times to loop.
  - Fix libgd 2.3.0+ issue where the font test always fails. (Ashley Dixon)

  - New method of iterating over all V4L2 controls for a device. (Tom B├╝rgel)
  - Fix: double free when both mmap and read fail. (Shayan Elhami)
  - Remove duplicate 'frame' in help text. (Grozdan)

  - Fixed crash when using --no-timestamp option.
  - Cleaned up a few small compiler warnings.
  - Fix pointer type in src_v4l2_set_fps() (hauptmech)

  - Enable libgd fontconfig support if avaiable. Default font is now "sans:10".
  - Add S561 compressed palette support.
  - Fix small memory leak in the logging system.
  - Add option to swap colour channels in the image.

  - Add basic Y16 support. (16-bit greyscale, gets shifted down to 8-bit)
  - A few fixes for the V4L1 source and other areas. (Pete Zaitcev)
  - Format conversions have been separated out from fswebcam.c.

  - Fix typo and add missing code for parsing --fps option. (Luca Niccoli)


  - LDFLAGS should come after object files. (Thomas Spahni)
  - Don't display banner if the font fails to load. (Luca Niccoli)
  - Fix typos.
  - Added SGBRG8 and SGRBG8 palette types (for V4L2 sources only).
  - Added --fps option.

  - Fix memset() error in src_v4l1.c introduced in yesterdays release.
    (Thomas Spahni)

  - Stop configure warning about datarootdir being ignored.
  - Updated the videodev.h and videodev2.h header files.
  - Corrected a number of memory leaks and a potential buffer overflow.
    (Thomas Spahni)
  - Escape minus signs in the man page. (Luca Niccoli)
  - Removed debian/ subdirectory. (Luca Niccoli)
  - Removed spec and ebuild files.
  - Free mmap()'s on error.
  - Stop skipping frames on error.

  - Fixed R<>B channel swap when using [M]JPEG or PNG.

  - Added syslog support via log command.
  - Added pidfile command for saving the process ID (PID) to file.
  - The output command has been replaced by the log command.
  - Added framedump command for dumping the raw captured data to file.
  - Added exec command for running external programs after capture.
  - Removed unnecessary malloc.h includes, replaced with the more portable
    stdlib.h where not already included. (Alexander Logvinov)
  - Fixed small bug in and simplified the configure script.
  - Fixed a bug where fswebcam wouldn't close a device if its file descriptor
    was equal to zero. Affected RAW and V4L2 sources. (Dmitry Saychenko)
  - The localtime command has been replaced by the new gmt command.
    The local timezone is now used as the default.
  - Added offset command to offset capture times in loop mode.
  - Added file-based configuration support.
  - Updated argument parser.
  - Renamed RGB24 and RGB32 to BGR24 and BGR32, and added the real
    RGB24 and RGB32 formats.
  - Added signal handler for gracefully exiting loop mode, reloading
    file-based configuration or for immediately capturing an image.
  - Don't force an interlaced mode when using V4L2 source.
  - Fixed RAW source to fail when no more data can be read from source.
  - Added RAW source to the man page.

  - Even more configure fixes.
  - Added NV12MB palette type (for raw source only).
  - Added raw source support.
  - V4L1/V4L2 header files included with source.
  - More V4L2 configure fixes. (Gary E. Miller)
  - Improved V4L2 detection in configure script.
  - Warn if there have been unsaved changes made to the image.
  - Fixed a number of small message formatting errors.
  - Fixed man page formatting.
  - Be more verbose when adjusting to a new resolution. (Alexandre Bourget)
  - Added MJPEG palette type.
  - Many other small fixes and changes.
  - Insert DHT segment if missing from MJPEG frames. (Scott J. Bertin)
  - Properly sets up resolution for V4L1 sources.
  - New autoconf based configuration system.
  - Added read support to V4L1 and V4L2 sources (if mmap is unavailable),
    and an option to force read.
  - Loop and background modes, allowing the program to run as a daemon.
  - New job queue allows multiple images to be output from a single run,
    each with different attributes.
  - Filenames are now processed by strftime().
  - Inputs can now be specified by name.
  - Tweaked the deinterlacer a bit more.
  - Timeout when devices take too long delivering a frame.
  - Added support for YUYV and UYVY colour formats.
  - Added support for the "Bayer Encoding" colour format. (V4L2 only)
  - New source system added, allowing for more source types. Including:

    v4l2 - Captures images using the V4L2 API.
    v4l1 - The old V4L1 capture code has been moved here.
    file - Reads a JPEG or PNG image from disk.
    test - Draws colour bars.

  - Release mmap before device is closed.
  - Changed some char's to int8_t's for platforms where char may be unsigned.


motionA software motion detector. It grabs images from video4linux devices and/or from webcams.
xawtvA small suite of video4linux related software, with video recording capabilities and serveral useful command line tools - including a simple webcam tool.
CheeseA GUI GStreamer-based webcam app.

-Philip Heron <>