Archive for April, 2006

VLC’s Awesome RC Interface

Wednesday, April 19th, 2006

I have just discovered the supremely cool RC interface of vlc. Start up vlc from the console with vlc -I rc in order to get it rolling. It creates a tcp or UNIX socket-based remote control interface that you can write a TON of information to. Here’s an excerpt from the longhelp that you can get in-interface:

+----[ Remote control commands ]
|
| add XYZ  . . . . . . . . . . add XYZ to playlist
| playlist . . .  show items currently in playlist
| play . . . . . . . . . . . . . . . . play stream
| stop . . . . . . . . . . . . . . . . stop stream
| next . . . . . . . . . . . .  next playlist item
| prev . . . . . . . . . .  previous playlist item
| goto . . . . . . . . . . . .  goto item at index
| clear . . . . . . . . . . .   clear the playlist
| status . . . . . . . . . current playlist status
| title [X]  . . . . set/get title in current item
| title_n  . . . . . .  next title in current item
| title_p  . . . .  previous title in current item
| chapter [X]  . . set/get chapter in current item
| chapter_n  . . . .  next chapter in current item
| chapter_p  . .  previous chapter in current item
|
| seek X . seek in seconds, for instance `seek 12'
| pause  . . . . . . . . . . . . . .  toggle pause
| fastforward  . . . . . .  .  set to maximum rate
| rewind  . . . . . . . . . .  set to minimum rate
| faster . . . . . . . .  faster playing of stream
| slower . . . . . . . .  slower playing of stream
| normal . . . . . . . .  normal playing of stream
| f [on|off] . . . . . . . . . . toggle fullscreen
| info . . .  information about the current stream
|
| volume [X] . . . . . . . .  set/get audio volume
| volup [X]  . . . . .  raise audio volume X steps
| voldown [X]  . . . .  lower audio volume X steps
| adev [X] . . . . . . . . .  set/get audio device
| achan [X]. . . . . . . .  set/get audio channels
| menu [on|off|up|down|left|right|select] use menu
|
| marq-marquee STRING  . . overlay STRING in video
| marq-x X . . . . . . . . . . . .offset from left
| marq-y Y . . . . . . . . . . . . offset from top
| marq-position #. . .  .relative position control
| marq-color # . . . . . . . . . . font color, RGB
| marq-opacity # . . . . . . . . . . . . . opacity
| marq-timeout T. . . . . . . . . . timeout, in ms
| marq-size # . . . . . . . . font size, in pixels
|
| time-format STRING . . . overlay STRING in video
| time-x X . . . . . . . . . . . .offset from left
| time-y Y . . . . . . . . . . . . offset from top
| time-position #. . . . . . . . relative position
| time-color # . . . . . . . . . . font color, RGB
| time-opacity # . . . . . . . . . . . . . opacity
| time-size # . . . . . . . . font size, in pixels
|
| logo-file STRING . . . the overlay file path/name
| logo-x X . . . . . . . . . . . .offset from left
| logo-y Y . . . . . . . . . . . . offset from top
| logo-position #. . . . . . . . relative position
| logo-transparency #. . . . . . . . .transparency
|
| mosaic-alpha # . . . . . . . . . . . . . . alpha
| mosaic-height #. . . . . . . . . . . . . .height
| mosaic-width # . . . . . . . . . . . . . . width
| mosaic-xoffset # . . . .top left corner position
| mosaic-yoffset # . . . .top left corner position
| mosaic-align 0..2,4..6,8..10. . .mosaic alignment
| mosaic-vborder # . . . . . . . . vertical border
| mosaic-hborder # . . . . . . . horizontal border
| mosaic-position {0=auto,1=fixed} . . . .position
| mosaic-rows #. . . . . . . . . . .number of rows
| mosaic-cols #. . . . . . . . . . .number of cols
| mosaic-keep-aspect-ratio {0,1} . . .aspect ratio
|
| help . . . . . . . . . . . . . this help message
| longhelp . . . . . . . . . a longer help message
| logout . . . . .  exit (if in socket connection)
| quit . . . . . . . . . . . . . . . . .  quit vlc
|
+----[ end of help ]

With this interface, it apparently lets you do all sorts of snazzy stuff like text/logo overlays, playlist modification, playlist traversal, mosaic, and volume control. I’m really, really impressed. Why bother with scripted and programatically controlled invocations of multiple vlc processes when you can have a TCP interface to control a single process?

Either by accident or design, the playlist automatically loops when it reaches the end, which is the opposite of all other “modes” of VLC that i’ve found, such as the default interface and web interfaces (haven’t tried ncurses, but that would require tcl expect knowledge to script, heh). In combination with the ability to modify on the fly, this is exactly the behavior that anyone might need to implement infinitely looping video (such as, say, for digital advertising, or POS, or set top boxes), WITH live updates available to playlists, basically for free.

In my opinion, this is exactly the kind of platform technology that digital signage companies should be building upon and contributing to. Any of you armchair techies out there can make a good business by building video solutions on top of this capability right now. If I weren’t gainfully employed i’d be all over this right now.

Microphone.get() not producing a dialog box?

Tuesday, April 18th, 2006

Flash gotcha down? Spending hours wondering why Microphone.get() doesn’t produce a dialog box?

Here’s a choice piece of information in the Microphone section of the Flash Media Server client guide:

Flash Player displays a Privacy dialog box that lets the user choose whether to allow or deny access to the microphone. Make sure your Stage size is at least 215 x 138 pixels; this is the minimum size Flash requires to display the dialog box.

What it fails to mention is that if Flash doesn’t display the dialog box, it won’t record audio. I did RTFM when it came to the developer’s guide, but this tidbit is hidden in the client reference. I usually don’t read references front-to-back, but maybe I should.

Tournament of Bacon Wiki

Wednesday, April 12th, 2006

Due to some actual interest in holding a Tournament of Bacon, i’ve created and seeded a wiki at http://tournamentofbacon.pbwiki.com where I can compile research and logistics information.

This could be either 4 guys eating bacon and drinking beer on a weekend afternoon, or it could be something much bigger. Who knows? All I know is that I love bacon, and I think it would be a noble cause to try and discover the best bacon of the variety of brands and labels available in the Bay Area these days.

New Yahoo Group for Freetag

Monday, April 3rd, 2006

I don’t have time to administer mailman (it’s apparently been down for months), so I’ve created a new Yahoo! Group to handle announcements and discussion of Freetag. Please feel free to resubscribe, and sorry for the inconvenience.

http://groups.yahoo.com/group/freetag/