Why I love FFMPEG: Intro.
As any other developer involved in Flash Video applications developing, I’m very happy with VP6, the new Flash Video codec. VP6 is a state of the art codec, capable to encode video very efficiently for a wide range of target bandwidths.
The old Spark codec (basically a H.263 codec) isn’t very efficient below 300-400Kbit/s. VP6, istead, has a much better capability to retain information from previous frame with much less bytes. With very low bitrate, the new codec is still capable to retrieve informations from previous frames efficiently.
But, unfortunately, bandwidth efficiency is not always the first and the most important required feature. Often, in projects involving video encoding, we need other key features like flexibility, encoding speed, interoperability. The Flash8’s standard VP6 encoder is more than sufficient to generate Vp6 FLV for a web site but for more complex applications we need more, much more.
It is for all these reasons that I’m still using, with success, spark coded FLVs encoded by FFMPEG. FFMPEG gives us what we need, unfortunately enough with the exception of a VP6 output.
Since my first encounter with FFMPEG, I have always use it for FLV encoding in the old Spark format, because FFMPEG, after a short ‘training’ it is a very valuable piece of software.
It produces really a good quality output. Infact, it uses one of the best H.263 encoding routine. It is possible to encode a very wide range of source formats (Avi, divx, mpeg, 3gpp, Flv) choosing resolution, fps, keyframe interval and average bitrate. It’s also possible to choose max and min bitrate, max and min macroblock quantization (max and min frame quality), motion estimation strategies, single and double pass encoding. It is usable in server side environment, or in desktop application. It’s blinkly fast and did I mention that it is open-source and therefore free ? What do we want more ? The only defect is the forementioned lack of VP6 encoding. But, in a lot of applications it’s much more important the automatization, the speed and the cost of the encoding than the absolute quality. I can mention the new Google video beta service where a wide range of source video formats are compressed server side in an unique format (FLV) using FFMPEG. In my last projects, for example, was imperative to encode video programmatically. It’s true that its possible to buy a On2’s library to encode VP6 but: it is expensive (2500$ per server in the case of a server side encoding solution or 4000$ + revenue for stand alone applications), it is slow and it isn’t able to recompress FlashCom (FMS) encoded FLVs.
In a few next Blog entries I’ll talk to you about some key-features and case histories involving this great software. I’ll talk about best practice settings, FLV recompression, 3gpp to FLV conversion and about FFMPEG’s amazing encoding speed.
It’s all for now, stay tuned!