Real-time MPEG-2 encoding with ffmpeg

I’ve done some significant experimentation with different options for encoding MPEG-2 video from a live video source with ffmpeg.  The objective was to create video that was approximately 3 Mbps at a “decent” resolution; this video would be manually edited and then converted to Web quality.  By “decent”, I mean a high enough resolution so that the video can survive the transcode to Web resolutions without too many re-encoding artifacts.   When encoding a live source, performance is critical; if ffmpeg can’t keep up with the live frames being captured, you may as well not even try to encode the video; your live capture buffers will quickly fill up and bring down your encoding system.  Obviously, you can’t use any sort of two-pass encoding, either.

Continue reading “Real-time MPEG-2 encoding with ffmpeg”

Blackberry mail mystery: gray text in HTML newsletter

The Blackberry mail reader (at least some of the older models like the 8000 series (Pearl, Curve, etc.) seem to have some problems with HTML messages that have tables with backgrounds.  Through some careful investigation, I’ve isolated the problem.

Continue reading “Blackberry mail mystery: gray text in HTML newsletter”

Benchmarking linux systems with Phoronix

I recently found a really nice benchmarking suite for linux called Phoronix Test Suite.  It has a wide range of tests designed to exercise your CPU, memory, and disk I/O with both synthetic and application benchmarks.  It was perfect for a project I’m working on — we’re testing and building video encoding systems.  Phoronix contains specific tests for audio and video encoding performance.

Continue reading “Benchmarking linux systems with Phoronix”

ffmpeg: the mother of all command-lines

We’ve been doing some experimentation with ffmpeg to encode video for live streaming and for recording to files for on-demand playback.  While I’ve been impressed by the capabilities of ffmpeg, I’ve found that its command-line processing is quite daunting.  Here I provide a set of command-line options along with commentary on what is going on.

Continue reading “ffmpeg: the mother of all command-lines”

Cache control and redirection with mod_expires and mod_rewrite

mod_expires and mod_rewrite are two indispensable tools in any Apache administrator’s arsenal.  But there is at least one situation where they don’t play too nicely with each other: when you have a global cache policy in place, but you define a conditional redirect that you don’t want to be cacheable.

Continue reading “Cache control and redirection with mod_expires and mod_rewrite”

Logitech Harmony and the Apple TV

When I first added our Apple TV to our Logitech Harmony remote, I included our LCD TV in the device list for the Apple TV activity.  Most of the time, we use the Apple TV for music, not for video, and we often use the Remote application on ipod and iphone.  So we don’t really need the TV on — but sometimes we do.  How could we get “TV On” and “TV Off” buttons added to the soft buttons on the remote?

Continue reading “Logitech Harmony and the Apple TV”

xen and the art of kickstart maintenance

We’ve been strong proponents of using CentOS kickstart to manage our production server environments.  We like to use highly customized kickstart CDs that have just the packages we want, plus a hefty postinstall script that sets up all sorts of things for our environment.  We also like to use sandboxed environments for our developers.  Wouldn’t it be nice to build a xen virtual machine from the kickstart?  I’ll tell you how we did it.

Continue reading “xen and the art of kickstart maintenance”