Recent Changes - Search:


edit SideBar


z!'s video server

This is not a cookbook for creating a server. You'll have to figure out how to configure X/etc yourself unless the config matches exactly. The same for installing the packages & other software. Deal.

The January 2009 version of the video server consists of:
a Dell GX260? desktop system (512MB ram, a 160GB disk (100G assigned to unix), a 200GB disk, and two VGA cards), various pieces of open source software (see below), and some custom scripts to control the whole thing. The control system is relatively primitive, compared to commercial offerings, however it does suffice to simply play video on a schedule

The operating system is {{FreeBSD?}} version 7.0-rel. Scripts are written in tcl.

Server hardware

This is the dmesg output, not including build-in or uninteresting devices:

CPU: Intel(R) Pentium(R) 4 CPU 2.40GHz (2391.15-MHz 686-class CPU)
real memory  = 536285184 (511 MB)
avail memory = 506675200 (483 MB)
ACPI APIC Table: <DELL   GX260  >

nvidia0: <GeForce4 Ti 4200> on vgapci0
nvidia1: <GeForce4 MX 4000> on vgapci1
fwohci0: <Texas Instruments TSB12LV23> 
firewire0: <IEEE1394(FireWire) bus> on fwohci0
em0: <Intel(R) PRO/1000 Network Connection Version - 6.7.3>  
atapci0: <Intel ICH4 UDMA100 controller> 
ad0: 152627MB <Seagate ST3160021A 8.01> at ata0-master UDMA100
acd0: CDROM <GCR-8481B/1.06> at ata1-master UDMA33
ad3: 194481MB <Maxtor 6L200P0 BAJ41G20> at ata1-slave UDMA100
bktr0: <BrookTree 848A> irq 17 at device 8.0 on pci2
bktr0: Intel Smart Video III/VideoLogic Captivator PCI, <no> tuner.
==not currently used

Most of the movies were stored on an external firewire disk (Seagate Freeagent 500GB), formatted as NTFS (ingest was done on a windoze machine).

Video cards
The server needs at least two video cards that are well supported in Even though the motherboard has on-board video, the BIOS will disable that when it finds any other video boards on the system bus. The current server uses nVidia cards with the nVidia proprietary driver. Of the two cards, the Ti4200 was used as the main X display (:0.0) and the MX4000? was used solely for the TV-out (:0.1 s-video). It should be possible to put both displays on the 4200, however I wasn't able to find the special breakout box to connect it. Read the doc on the cards, the exact player software, and the card's drivers to determine whether that card is suitable.

Sound output
The Dell's sound output was OK, however the on-board sound of some systems is dreadful. Consider adding a decent sound card. This does not have to be fancy at all, since it's only going to get PCM sound from the player software. You will almost certainly want to use the mixer to set the output levels to 80 or 100, and depending on actual level, might need a line amp.

Additional libraries and software

With a few exceptions, all third party software is open source and was installed from BSD packages. Packages implicitly installed (by other package installers) are not listed.

chbg-1.5_7 Change Background Picture with time period -- used for stills display and blanking the output

fusefs-kmod-0.3.9.p1_2 Kernel module for fuse
fusefs-libs-2.7.0_1 FUSE allows filesystem implementation in userspace
fusefs-ntfs-1.1004 Mount NTFS partitions (read/write) and disk images -- needed to read external NTFS disk

gtk-2.12.1_1 Gimp Toolkit for X11 GUI (current stable version) -- needed by ?? (mplayer?)

gmake-3.81_2 GNU version of 'make' utility -- needed to build some software

jove-4.16_1 Jonathan's Own Version of Emacs -- small emacs-like editor (useful if you don't like vi)

mpg123-0.59r_17 Command-line player for mpeg layer 1, 2 and 3 audio -- play audio files during slides

qiv-2.0_2 Small, fast GDK/Imlib image viewer == not actually used

tcl-8.4.16,1 Tool Command Language
tclX-8.4_1 Extended TCL
tcllib-1.10_1 A collection of utility modules for Tcl
tk-8.4.16,2 Graphical toolkit for TCL
tktable-2.9 A table/matrix widget extension to Tk -- tcl/tk language & necessary extensions

xfce-3.8.18_6 CDE like desktop with GTK -- lightweight X desktop/window manager

xmms-1.2.10_10 X Multimedia System -- An audio player with Winamp GUI == not actually used

Software installed from source:
MPlayer?-1.0rc2 -- used to play video (the BSD package generally lags a bit behind the released version)
NVIDIA-FreeBSD?-x86-96.43.07 -- nvidia-proprietary driver for video board, needed to enable svga output
synctimer1.1 -- timer ser\\ices for tcl nvidia-settings-1.0 -- used to modify video board settings
tklib-0.4.1 -- additional tk extensions


Additional settings in loader.conf

Control software

The actual control system consists of two programs, a GUI/scheduler and a daemon (total about 2600 lines of tcl). The GUI not only displays the playlist and status but actually performs the time-based operations. It issues simple commands to the daemon, which executes them. The daemon spawns the appropriate player software for the current content and keeps track of it's status. They communicate via a TCP socket.

This is an area ripe for development. Improvements could include:

  • using a real database for the playlist
  • separating out the scheduler from the UI
  • better control of the players, etc
  • mpg123- consider using a tcl library interface instead of exec-ing the program
  • Need to add better audio playback/stills integration.
  • Need better method for creating slides & keys
  • display on the fly
  • deal with mplayer's startup delay or replace (direct tcl interface to lib, tcl interface to xine, or gstreamer, or mlt, or...)
  • things tend to run a few seconds long, need to account for this (mplayer)
  • add second audio output for ingest monitoring
  • may want to rescale playlist display window
  • write -all- output to log files
  • why no sdl? (x server config?)
  • add digital mixer control- from gui, from playlist? (ability to fade in/out of music playback)

If you want a copy of the control software, contact z!.

<< | HomePage | >>
For questions about this wiki, contact

Edit - History - Print - Recent Changes - Search
Page last modified on February 19, 2009, at 01:10 AM