hasciicam(1)

NAME
hasciicam - (h)ascii for the masses!

SYNOPSIS
hasciicam [ -hvq ] [ -m mode ] [ -d device ] [ -i input ] [ -o output ] [ -f :user%pass@host:/dir ] [ rendering-options ]

DESCRIPTION
hasciicam makes it possible to have live asciivideo on the web. It takes video from a capture device (like tv cards or quickcams) and renders it into ascii, formatting the output into an html page with a refresh tag or in a live ascii window or in a simple text file as well, giving the possiblity to publish on the web a live asciivideo feed browsable without any need for browser's plugins.

hasciicam grabs frames using Video4Linux api, renders them into ascii using AA-lib engine and is capable of armoring them with auto-refreshing HTML code. It's being used also jpeglib for optionally refresh a small jpeg image, so that it can work also as a simple webcam (or showing both, jpeg and asciivideo).

OPTIONS

-h --help
    Display a help text and quit.

-v --version
    Display version and quit.

-q --quiet
    Be quiet and don't show hardware detection.

-m --mode
    Selects the mode in wich hasciicam will run:
    live will use the console (or eventually open one under X display) to show full speed ascii video.
    html will write html formatted ascii video every refresh seconds into file aafile.
    text will write plain text ascii video every refresh seconds into file aafile.
    Default mode is live. Mode selection is XOR'ed.

-d --device
    Use specified capture device. Default is /dev/video.

-i --input
    Selects the device's input channel to be used for grabbing frames. Default is 1.

-s --size
    Contextual size expression WxH. In html mode it is interpreted as output character size. In live and text mode it is interpreted as capture pixel size.

--pixel-size
    Capture pixel size expression WxH. If unsupported, the closest supported capture size is negotiated. Not allowed in html mode.

--char-size
    Output character size expression WxH. Hasciicam derives a capture pixel target from this value.

--sdl-renderer
    Selects the SDL renderer backend for live SDL output: accelerated, software, or auto. Default is accelerated.

--sdl-vsync
    Controls SDL presentation sync for live SDL output: on, off, or auto. Default is on.

--fullscreen
    Starts live SDL output in desktop fullscreen mode. Press f to toggle fullscreen while running, or Escape to leave fullscreen.

--mirror
    Flips the camera image while sampling source pixels. Accepted values are x, -x, y, and -y. Horizontal mirror x is enabled by default so live preview behaves like a mirror. Use --mirror -x to disable horizontal mirroring, and --mirror y to add vertical mirroring.

--config
    Loads startup configuration from the given TOML file. If omitted, HasciiCam checks for hasciicam.toml in the current working directory and loads it when present.

--font
    Selects the bundled AA-lib bitmap font by short name, or prints available fonts with --font list. Example names include vga16, vga8, and courier.

-o --aafile
    Defines the file where to save rendered ascii, overwrited every refresh seconds. Default is hasciicam.html when in html mode, hasciicam.asc when in text mode (useless when in live mode).

--frames
    Stops after N rendered frames. Useful for deterministic smoke tests.

-f --ftp
    Ftp pushes the selected output file to an ftp account specified within an expression like :user%pass@dyne.org:/home/user/www. If the password is not specified (omit %pass) hasciicam asks for it on stdin (hidden while typing). If the directory is not specified it is assumed to be the first ftp directory where user logs in. Remote file is refreshed depending on refresh rate and connection bandwidth, a scolopendro temporary file is created to keep clients on the other side refreshing smooth.

-D --daemon
    Forks to background and runs in daemon mode.

RENDERING-OPTIONS

-S --font-size
    Selects a font size from 1 to 4 used in html rendering. default is 1 (only useful when in html mode).

-a --font-face
    Selects a font face to be used in html rendering, it should be fixed size for better results. default is courier (only useful when in html mode).

-r --refresh
    Specifies the refresh interval in seconds between each grabbed frame. Default is 2 (useless when in live mode).

-b --aabright
    Specifies brightness level for the aa_render, from 0 to 100. Default is 60.

-c --aacontrast
    Specifies contrast level for the aa_render, from 0 to 100. Default is 4.

-g --aagamma
    Specifies gamma correction level for the aa_render, from 0 to 100. Default is 3.

-I --invert
    Invert and render the resulting negative ascii.

-B --background
    Specifies the background color to be used in the form of a hex RGB triplet (without the leading #). Default is 000000 for black (only useful when in html mode).

-F --foreground
    Specifies the foreground color to be used in the form of a hex RGB triplet (without the leading #). Default is 00FF00 for green (only useful when in html mode).

EXAMPLES
hasciicam -m html -o watchme.html
puts your html formatted ascii into watchme.html - then just open it with your favourite browser.
hasciicam -m text -o ~/.plan
puts your ascii into your local .plan (fingercam) hasciicam -m html -S 2 -o index.html -f :jaromil%sasuchen@dyne.org:korova
generates an hascii video with font size +1 and uploads the frames in ftp passive mode on the dyne.org server, with user jaromil password sasuchen, inside the korova directory

ENVIRONMENT
HasciiCam also accepts launch configuration from lowercase environment variables that match canonical config keys. Startup TOML is loaded before environment variables, and command-line options have highest precedence.

    Examples:
    mode=html
    output_file=frame.html
    font_size=2
    sdl_renderer=software
    sdl_vsync=off

    Canonical keys:
    quiet mode device input pixel_size char_size output_file aa_driver daemon
    font_size font_face refresh aa_bright aa_contrast aa_gamma invert
    background foreground font uid gid frames sdl_renderer sdl_vsync fullscreen mirror

CONFIG FILES
HasciiCam loads hasciicam.toml from the current working directory at startup when it exists. Use --config path/to/file.toml to load a specific TOML file instead.

    Example TOML:
    mode = "text"
    output_file = "hasciicam.asc"
    device = "/dev/video0"
    char_size = "80x25"
    sdl_renderer = "software"
    sdl_vsync = "off"

NOTES
When using a usb webcam, a supported size needs to be specified. The minimum or maximum detected size should work, also a size of 160x120 mostly gives good results, with unsupported sizes you will get unexpected results.

BUGS
Report bugs to hasciicam@dyne.org. Please include a complete, self-contained example that will allow the bug to be reproduced, information about which version of hasciicam you are using, which operative system and the complete device detection output.

AUTHOR
jaromil [aka Denis Roio] <jaromil@dyne.org>

COPYING
Copyright (c) 2001-2006 Denis Roio <jaromil@dyne.org>
Permission is granted to copy, distribute and/or modify this manual under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation. Permission is granted to make and distribute verbatim copies of this manual page provided the above copyright notice and this permission notice are preserved on all copies.

AVAILABILITY
The most recent version of hasciicam sourcecode and up to date documentation is always available for download from http://ascii.dyne.org.

SEE ALSO
info aalib