On Wed, Jul 1, 2009 at 1:24 AM, Charles Wyble<charles@thewybles.com> wrote:
Would love to see replies and/or summary on list if possible. It's a somewhat complex problem, and there are many solutions out there. Having feedback on what was used and any feedback on it would be great!
For the benefit of all, I'll jot a list of the "parts" that comprise the NANOG video rig. In actuality, there are three, sometimes four "rigs" (input->encoder->server/relay->viewer/listener chains) operating at NANOG in parallel. Primary Video Encoder -highish-end multi-core p4 desktop system -wirecast (http://www.telestream.net/wire-cast/overview.htm) for genlock- and sync-less video input mixing -prep'd and networked presenter laptop for feeding "VNC-like" screen-scrapes directly to the encoder system, the preferred method for acquiring slideware "video" (check the wirecast docs for the "presenter network transport" stuff) -s-vid/composite, direct-show interface compatible video ADC's (analog to digital converters--"capture cards," etc. direct-show is a "standard" way for userland apps to interface to video framebuffer sources, inputs, etc) -two ntsc cameras (using s-video baseband signals, over baluns for coax to UTP conversion) -two pan-tilt-zoom serially controlled "mounts" for said cameras (though the ones nanog uses today are integrated camera/ptz+planar actuators) -audio source from "house PA" system passed through small mixer for gain staging/gain control/rough tone control -standard 'sound card' for audio ADC (usually mono, 48khz sample rate) -serial ptz controller itself, with multiple "memory" positions (i.e push-button preset pan/tilt/zoom settings are issued to the cameras by the MERIT/NANOG video rig operator to follow Q/A sessions, speakers on stage/mics, etc) -svga to ntsc/s-vid scan converter -vga buffer/isolator with integrated amplifier and splitter (send video to both projectors, drive/equalize long-ish VGA analog cabling, isolate outputs from each other, and feed the input of the vga->ntsc scan converter) -more vga/utp baluns, etc -rs232/utp baluns/buffered isolators for ptz camera controls/ancillary device control Once inputs arrive at the encoder system, the operator selects transitions (fade/dissolve/blend/etc) and real-time mixes the presenter camera, the Q/A mic camera, drives and selects the PTZ to follow the speaking/questioning, and chooses when and how to overlay/superimpose/picture-in-picture the VGA scan converted signal vs. the "presenter network" source. The wirecast application does both the mixing, as well as encoding of "raw" YUV video into a mpeg4 h.264 output stream. We usually configure the wirecast "transport" output as a pair of RTP streams, one carrying audio, the other video. These RTP streams 'land' on a RTP->RTSP controlled gateway (i.e. what we call "quicktime" stream on the nanog webpage). Alongside this mp4/rtp stream, we'll typically configure a windows media 9 a/v stream, using MMS and ASF wrappers/transports. A windows media relay server at MERIT or I2 (I forget which) provides viewers a place to connect to the "windows media" stream. Secondary Video Encoder -average p4 laptop -usb interface ntsc s-vid ADC/capture device, supported via directshow software library -wirecast or real producer pro, somtimes windows media encoder -given single input from presenter camera, typically, and audio feed from hotel/building PA system -records to local disk (external USB attached disk, etc) -intended for "backup" archival meeting video in the the case of the primary system failing, crashing, etc. Primary Audio-Only Encoder -average $anything laptop -usb or built in ADC for PA audio input -Winamp + DSP plugin using win32 LAME library for mpeg1 layer 3 audio encoding -DSP plugin sends shoutcast stream to icecast/shoutcast relay server $somewhere (iirc, Tim Pozar is involved with this platform, he may be able to provide more details). -Usually target a mono, 22.05Khz, 24 kbit/sec stream profile. The goal is to make the audio program, at least, accessible to V.whatever users on POTS. Occasional "HD lite" Video Encoder -average p4/p3 laptop -firewire input card/port -Canon HV20/30 HDV camera (using on-camera audio input from house PA system, to preserve a/v sync) -DVTS or VLC acting as "firewire" mpeg2 transport stream relay, sending the raw ~25 mbit HDV mpeg2 stream over IP/UDP to an off-network transcoder system -VLC running on a linux 2.6.x 8-core system (of which ~half end up idle), transcoding mpeg2 a/v into a h.264 video/mp4 AAC stream, ~1 mbit/sec -Stream is relayed to viewers via external VLC acting as a tcp "tee" - i.e. raw mp2 transport stream over http/tcp (very much a "yea, it works, not a specification" way to simply toss raw mp2ts bitstream over the internets) This results in a 1440x1088 (non-square pixels, 16:9 display aspect ratio, however) video stream at 30 progressive frames/sec, usually with ~64kbits allocated to mpeg4 AAC monaural audio, 48 khz sample rate. Conference talking-head video fits well into a h.264 stream in this case due to the use of a "long Group of Pictures" in the VLC/h264 encoder configuration. We typically set the GOP anywhere from 90 to 100 frames, meaning that we can allocate lots more bits to the Keyframe (making it 'less blocky), then using the remaining bits of the GOP to signal predicted (ie. delta) frames. This is perhaps the most tricky of the four encoder rigs to "get right" given the degrees of freedom that VLC provides for h.264 encoding. However, feedback has been positive even with it's limited appearance (and lack of slide input, Q/A mic coverage, etc). HTH, -Tk