hasciicam(1) (h)ascii for the masses!


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


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).


-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.
-o --aafile
Defines the file where to save rendered ascii, overwrited every refresh seconds. Default is hasciicam.html when in html mode, hasciicam.txt when in text mode (useless when in live mode).
-f --ftp
Ftp pushes the selected output file to an ftp account specified within an expression like :user%[email protected]:/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.


-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).


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%[email protected]: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


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.


Report bugs to [email protected]. 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.


jaromil [aka Denis Roio] <[email protected]>


Copyright (c) 2001-2006 Denis Roio <[email protected]>
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.


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