Building FFmpeg for Windows on Linux – Introduction



Building FFmpeg for Windows on Linux – Introduction

At work, we deal with a lot of video production.  Those videos need to constantly be reviewed and approved by various legal staff.  To support this workflow, we decided to implement a video reviewing and management application.  The web application was the easy part.  Our technology stack was based around a lot of Adobe products, so we decided on Flash Media Server for our streaming infrastructure.  The difficult part was getting the video files in a format to stream using our streaming technology.  Encoding solutions that could scale easily were expensive.  So after evaluating several options, we decided to write our own solution to handle video encoding.

At first we started using an automated binary build of FFmpeg from http://ffmpeg.arrozcru.org/ and just wrapped some C# code around it (thanks to a suggestion from my brother-in-law).  This worked fine in the beginning, but as our format and encoding option needs changed, we could no longer rely on the generic automated builds.  We needed to be able to build our own binary of FFmpeg with specific libraries included.  Additionally, at the time of this writing, that site no longer hosts the automated builds.

This ended up being a far more complicated task than I imagined.  There was some documentation in various places, but nothing that specifically walked through the process step-by-step for someone unfamiliar with the process.  Once I was finally able to successfully compile and build FFmpeg, I decided I needed to document the entire procedure.  This series of blog posts will attempt to document and identify the entire process I went through to accomplish this.  Some steps may seem obvious, but I will include information for those that may have no knowledge of compiling and building software such as FFmpeg.

This process is written based on the following specifications:

  • Dell Latitude E6500 Intel C ore 2 Duo P8700 2.54 GHz 4.00 GB RAM
  • Windows 7 Professional 64-bit (using a 32-bit OS should be fine, but you will need to recompile the cross toolchain)
  • Oracle VM VirtualBox Version 3.2.10 r66523 (http://www.virtualbox.org/)
  • Ubuntu 10.10 64-bit (http://www.ubuntu.com/)

Stay tuned for the first set of details on setting up the virtual environment using VirtualBox and Ubuntu.