Monday, November 2, 2020

FFmpeg Commands -- Blog Content Summary

Over the past couple years this blog contains a variety of content that interests me.  While not intended, a considerable amount of this blog revolves around using FFmpeg.  I feel drawn to this particular utility for a number of reasons I guess:

  • it is primarily a command-line interface; offering a great deal of flexibility
  • while powerful and popular, I find it lacks sufficient examples and documentation in demonstrating its use, a significant learning curve for the new user
  • I have a history of interest in image processing and computer vision which aligns with, or compliments, these interests
  • I have an interest in polishing and refining personal media content and this tool hits all the buttons to do so
I thought I'd touch on some of the areas of content, specifically to see what areas I've covered and plan areas that may be worth focusing on.  I have a starting-point for a more comprehensive tutorial on FFmpeg that I am preparing for a future presentation, perhaps YouTube or a Meet-Up.  Stay tuned.

Setup/Configuration/Installation

My daily drivers tend to be Linux-based workstations and laptops, so my setup/configuration instructions tend to follow:

Convert Images to Video

Nearly everyone on planet Earth now carries around a high-definition camera in their pocket.  We snap hundreds, if not thousands, of photos over the course of the year.  It's pretty common to want to take a series of images and transform it into a slide-show to amazing and impress your friends and family.  Here are but a few resources to do just that.

Clipping Time Segments from Video

First order video processing is trimming out uninteresting time segments.  Take a raw video, clip out interesting bits and concatenate them together will set you on course for a better video presentation.

Concatenating Videos

Cropping Video

Whether its clipping out a noisy background or simply directing the viewers attention, often you want to crop out the point-of-interest from a wide-angle shot.

Padding/Extending Video

Sometimes, just the opposite is needed, taking a video of arbitrary size and making it bigger to accommodate an additional visual (e.g. overlay, video, graph,...)

Zooming In/Out of Video

A static shot can still draw the viewers attention by zooming in/out to draw the viewers focus to a narrower or broader aspect.

Applying Overlay to Video

Like frosting on a cake, adding overlays upon a video makes a good product even better (image, text or subvideo).

Fading In/Out of Video

We've all seen it, a scene transition from one location or another, typically demonstrated by fading out of the first scene (e.g. fade-to-black) and fading into the next (e.g fade-from-black).

Video Blending

Sometimes we wish the resultant video to be comprised of multiple semi-transparent sources, sometimes referred to as cross-fading.  Dynamically applying a weighting factor from multiple sources can give you some pretty dramatic effects.

Video Scene Transitions

I've authored a series of posts which provide a variety of scene transitions, introducing a new cut scene by moving in the destination scene in some manner (e.g. wipes, curtain-call,...)

Video Blurring

Whether it be a license plate, a disruptive background, or subjects who rather not be in your video, there is often a need for applying a blur to a video or video areas.

Video Stablilization

Shaky hand?  No tripod?  This video filter can remove the side-effects of a shaky videographer.

Creating Cartoon from Video

Can you take a real video and convert it into something more cartoon-like?  We spent some time doing just that.
ZeroMq (e.g. 0mq, zmq) is integrated into FFmpeg and can be used to dynamically modify video filters on the fly.
I particularly find that make and video processing make a good pairing, especially when the video processing utility is command-line based.  These two utilities play very well together.