Configure lag-in-frames in FFmpeg libaom-av1
Adjusting the lag-in-frames parameter in the FFmpeg
libaom-av1 encoder is essential for optimizing video
compression efficiency and controlling encoding latency. This guide
explains how to configure this parameter using FFmpeg command-line
options, details its impact on video quality, and provides practical
command examples for both high-quality and low-latency encoding
scenarios.
Understanding lag-in-frames
The lag-in-frames parameter (often referred to as
lookahead) determines how many frames the encoder buffers and analyzes
before compressing them. Giving the encoder a “window” into future
frames allows it to make optimal decisions regarding: * Frame
type selection: Efficiently placing keyframes and golden
frames. * Rate control: Allocating bitrate to complex
scenes while saving bits during static scenes. * Temporal noise
filtering: Improving visual quality by analyzing motion across
multiple frames.
By default, libaom-av1 sets this value to
25 (or up to 35 depending on the wrapper
version). Increasing this value improves compression efficiency at the
cost of higher memory usage and encoding latency. Decreasing it reduces
latency, which is crucial for live-streaming applications.
FFmpeg Command Syntax
You can configure this parameter in FFmpeg using the
-lag-in-frames private option directly, or pass it via the
generic -aom-params flag.
Method 1: Using the direct option (Recommended)
ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M -lag-in-frames 25 output.mkvMethod 2: Using aom-params
ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M -aom-params lag-in-frames=25 output.mkvConfiguration Guidelines
Depending on your target use case, you should adjust the
lag-in-frames value accordingly:
1. Best Quality (VOD / Archiving)
For offline file encoding where latency does not matter, use a higher
value to maximize compression efficiency. * Recommended
Value: 25 to 35 (Values above 35
generally yield diminishing returns).
ffmpeg -i input.mp4 -c:v libaom-av1 -crf 28 -b:v 0 -lag-in-frames 35 output.mkv2. Low Latency (Live Streaming / Real-time)
For interactive live streams, video conferencing, or real-time
broadcasts, you must minimize latency. Setting the value to
0 disables the lookahead buffer entirely. *
Recommended Value: 0 (or a very low number
like 1 to 5 if minimal buffering is
acceptable).
ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -b:v 0 -lag-in-frames 0 -usage realtime output.mkv(Note: When setting lag-in-frames to 0, it is also
recommended to set -usage realtime or
-cpu-used to higher values like 5-8 to ensure the encoder
can process frames in real-time).