FFmpeg, the popular multimedia library, released new 8.1.1 version few days ago.
This is a maintenance release that includes mostly bug-fixes, stability improvements, as well as few minor new features.
FFmpeg 8.1.1 updated the ALS decoder for MPEG‑4 ALS audio streams with patch to preserve the full floating‑point value so the decoded audio is accurate and truly lossless.
It ensures nbits is always valid, preventing mis-decoding and potential crashes, and, ensures read_diff_float_data() errors is properly returned by read_frame_data() instead of being ignored, making the decoder safer and more reliable. As well, it fixed the logic for mantissa unpacking in compressed Part A path.
The release added the missing parts of OTTs band phase reconstruction and residual band computation to the USAC/xHE‑AAC decoder, and, fixed an out-of-bounds memoery access for this decoder.
To prevent crashes, corrupted outputs, and/or security issues, it added a safety check to ensure nb_samples is valid in the DFPWM decoder, added a missing return after an error log in the RALF (RealAudio Lossless Format) audio decoder, and, fixed a use‑after‑free bug in the RASC decoder’s decode_move() function.
It as well cleared invalid/stale pointers from the H.264 reference lists, fixed a bug where the H.264/H.265 SEI parser used provider_code before initializing it, and, improved the input‑buffer size validation in TDSC decoder which also improve the stability.
Other codec changes include fix for signed integer overflow in the Nintendo 64 ADPCM decoder, safety bug fix in the ZMBV (Zip Motion Block Video) decodeer to prevent memory corruption, missing padding bytes added to the WMA (Windows Media Audio) encoder’s extradata to fix compatibility issues, and fix for a memory leak in the VP9 codec‑bitstream (CBS) parser.
Besides fixes for the encoders and decoders, the new 8.1.1 also has many improvements to the libavformat library for container, demuxer, and muxer handling.
It added a maximum size limit to MOV/MP4 demuxer when parsing the lhvc box inside mov_read_lhvc(), added checks to ensure the extradata is valid before accessing it with mov_read_dops() function. And, the demuxer now rejects dimg box references that contain zero entries.
It as well added LIST chunk size and INFO list size validation before parsing for AVI demuxer, fixed potential out‑of‑bounds read in the RTSP demuxer, and, added sanity check to the RTP decoder for QDM2 audio to ensure that the block_size value extracted from incoming RTP packets is valid, sanity check to the JPEG‑over‑RTP decoder to ensure that the quantization table length (qtable_len) is valid, validation check to the MPEG‑4 RTP decoder to ensure that AU Header Sections (Access Unit headers) are not zero‑length.
For libavfilter, it added a minimum input‑height check to the kerndeint video filter, fixed logic bug caused by incorrect operator precedence in the v360 filter, and incorrect handling of sscanf() return values inside the af_pan filter.
There are as well dozens of other changes. See the Changelog file in source tarball for details.
Get FFmpeg 8.1.1
The source for the new release is available to download in its website via the link below:
Besides building from the source or waiting for your distribution updates, Ubuntu user may try this unofficial PPA in Ubuntu 22.04, Ubuntu 24.04, or Ubuntu 26.04.
To do so, open terminal and run commands below one by one:
sudo add-apt-repository ppa:ubuntuhandbook1/ffmpeg8 sudo apt update sudo apt install ffmpeg
Note that the PPA package may break dependencies, as many graphic apps depend on FFmpeg. You may install ppa-purge and use it to purge the PPA to restore system default FFmpeg library.
sudo apt install ppa-purge sudo ppa-purge ppa:ubuntuhandbook1/ffmpeg8
