Random ideas about Free Software Video transcoding

Bassam Kurdali at 2015-01-06T18:05:28Z

So, after doing the User Liberation video for the Free Software Foundation campaign, I did a longish postmortem that you can read here. There's a little section in it about (video) compression that got me thinking: There's roughly two types of transcoding you can easily do in free software, from a user perspective:

  • Command line stanzas, either using ffmpeg directly, or something like mencoder or gstreamer
  • A user centric tool like Transmageddon or handbrake, that offers necessarily limited options and media type choices, based on presets for specific devices or outputs
  • (I said roughly) built in (also usually preset based) encoding options in bigger programs like kdenlive, Pitivi, Blender, that usually expose a few under-the-hood knobs.

Ignoring bugs, this works OKish - but it is non-ideal for my specific use-case, lets say: animator / filmmaker who needs to do 'professional' mastering, produce multiple output types and sizes/ target media, and is not an expert on arcane options in video codecs.

  • Command line gives you the ability to massively shoot yourself in the foot. we mainly end up cribbing ffmpeg stanzas off each other or the 'net - and these tend to break from time to time, as either the requirements change or ffmpeg does. In general, this tends to give videos that play on your own machine fine, but might break on different OS's / devices.
  • Tools like transmageddon or handbrake may or may not have options you need, and feel fairly rigid: if you mess with the preset (Assuming you can) you might break the output. I still get non-working on all platforms video (especially using h264) but less so, and I can't work with my 'real' masters: image sequences and audio tracks - I have to start from a video, encoded losslessly - this means I have to do a pre-encoding to a lossless format before I can actually encode the video.
  • Output from Blender is often quite limited, Pitivi is better, but I do get into the 'not enough feedback' issue: I don't really know what a knob does unless I output the video, and even then, sometimes it is a mystery what it did.

So what might be cool ideas / experiments?

  • GUI tool for professionals: assume one needs to produce the video but doesn't really understand too much about codec options
  • Multiple targets per video: add multiple output formats/ devices/ resolutions to each 'master', which implies:
  • Ability to scale and crop per-target
  • Work with multiple input streams, including image sequences, audio and subtitle tracks
  • Constraints not just presets (per target) This one is a bit weirder, but what if you didn't just lock down all options, but limited them depending on the target device - for each target, expose only those knobs that would vary quality but not create an unplayable file. Optionally, one could add filesize/ bandwidth/ CPU horsepower to the constraints as well as the target device/OS
  • Live preview: encoding is usually happening at a reasonable frame rate, anywhere from 1 to 20 frames per second. It should be possible to display (selectable with a timeline scrubber) a frame of the video and live change the result of tweaking the available knobs (in the ranges specified by the constraints
  • Easily save settings for an encode as a new batch for future videos

Christopher Allan Webber , Benjamin Cook , olm-e , mray and 1 others like this.

Christopher Allan Webber , JanKusanagi shared this.

Show all 6 replies

From your description the first thing I thought about was DVD::Rip. But it's not any more friendly to use than just ffmpeg from the command line.

Cyber Killer at 2015-01-07T04:32:07Z

Yes - actually from a pure technical standpoint, the libraries and tools used for video encoding are great - it is more about interface and allowing control without expecting the user to know what each underlying setting does.

Three are tools that do this for consumers, and are very limited (as they should be) but there's not really a good one for filmmakers/animators yet. Handbrake is quite good, but it is strange that it only does h264 output... am I wrong about that?

Bassam Kurdali at 2015-01-07T20:45:20Z

HandBrake version 0.10.0 added support for VP8, but only when put into a Matroska container so it's not really "WebM" compliant but could be made so by re-muxing it after encoding. (I use command line tools like FFmpeg for all of my audio and video encoding needs because I find the GUI ones way too limiting. And I go compile the latest versions of libraries FFmpeg will use such as libvpx so as to get all of the latest wonders that's being adding. But yes, I know that not everyone wants to do that.) ;)

Jason Self at 2015-01-07T20:52:35Z

Handbrake is really handy (hehe) when you want to share with people on 'other platforms' and want to know that your video will actually work for them. I'm guessing it isn't too hard to add profiles to it, so it might be a good swiss army knife too...

Bassam Kurdali at 2015-02-19T20:36:02Z