FOSSPicks

FFmpeg 6

There can't be many Linux users who don't have FFmpeg installed, even if they're not aware of it. FFmpeg has become the backbone of media manipulation and can seemingly handle everything. It's used to transcode optical discs, stream videos, remove advertising, extract audio, encode audio and video, and to silently bridge the ever increasing gap between the formats provided by streaming services and those we find convenient on our computers. And as anyone who has typed ffmpeg on the command line can attest, all this incredible flexibility does result in complexity. FFmpeg has more build options and command-line arguments than the Linux kernel, but this is what enables FFmpeg to work with so many media codecs, and to solve so many problems with convoluted media containers, their codecs, and file naming conventions.

This is why the release of version 6 is such a big deal. It will have a significant impact on your system even if you don't realize it. This is also the first release in the new annual release cadence. 5.0 was released a year earlier, and 6.0 is the first major update under the new regime (5.1 was an LTS release), with 220,000 lines of code touched. Many of those touched lines help with performance, with significant work done to make FFmpeg multithreaded. This enables it to run across as many processing units as you can spare, but there's lots more work to do. The plan for the future is that every component in the transcoding pipeline will run within its own secure thread, and the work will continue through the next release cycle. To further help with performance, there's also AV1 hardware decoding for Intel, AMD, and NVIDIA hardware; new and much faster FFT functions for audio analysis and conversion; and even optimizations for RISC-V. There's also support for HDR images, desktop duplication, and many new decoders, all with seemingly random acronyms, including Bonk, APAC, VQC, ADPCM, and WADY. To most of us, it's all equally baffling, but there's no doubt FFmpeg is one of the most important open source projects we depend upon, and each release should be celebrated.

Project Website

https://ffmpeg.org

A 2023 presentation on FFmpeg at FOSDEM admitted that not enough people talk about the project, despite "nearly everything you see online" being based on its technology.

Process analysis

lurk

Using the strace command can be like using ntop (see earlier) in that it empowers ordinary users to see extraordinary things and usually jump to the wrong conclusions. By default, strace is run against the name of a command for which it will list whatever system calls it executes and the libraries those calls come from. It's a lot like debugging your own code within an IDE, except you have very little context for those system calls, and even small executables can make hundreds of calls as they pass through every library they link to. However, we're not looking at strace specifically, but instead a similar tool called lurk.

The lurk command hopes to be a better-looking and more focussed alternative to strace. It only offers a subset of functions, and those have been hand-picked by the developer to be accessible and useful for the majority of uses. But the output also looks better, with good use of color, and JSON-compatible output that can be further processed with tools such as jq. Like strace, the command can be simply run against the name of the executable you want to look at, such as lurk ls, and it can attach itself to a process that's already running. The only filtering allowed is with the --expr trace argument, which is the same as the strace equivalent, allowing you to limit output to specific system calls and those that access files, processes, and the network, among many other options. Regular expressions can be used to further fine-tune your searching, such as with lurk --expr trace=\!/g ls to filter trace output from the ls command to system calls that don't contain the letter g. The documentation contains many more examples like these, and while it never makes lurk easy to use, it makes it bearable when you know there's no other kind of tool for the job.

Project Website

https://github.com/JakWai01/lurk

If you find yourself commonly using strace with the --expr trace argument, you might want to take a look at lurk. It does the same thing, but looks better.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Gaming for Godot

    Creating a game requires a wide set of skills to combine graphics, animations, sound, double-clicks, and meticulous coding. The free and open source Godot game engine provides you with all the tools you need to get started.

  • Unreal Engine 3 Free (or Not) for Game Developers

    So unreal the name, so real the news: Epic Games is providing its Unreal Engine 3 free to developers. It isn't open source, but game developers can implement it for noncommercial games and applications.

  • Lutris

    Gaming on Linux has traditionally involved a complex installation and configuration procedure, until now. Lutris lets you enjoy games from different worlds quickly in a unified interface.

  • dgamelaunch

    If you are into retrogaming, dgamelaunch lets you set up a server to play Roguelike games and compete with friends, all while preserving a piece of gaming history.

  • FOSSPicks

    There's a collective groan in Graham's household whenever he gets a new device and finds a terminal prompt. The latest victim to his nmap skills is an LG OLED television!

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More

News