Control SVT-AV1 Tile Configuration in FFmpeg

This article explains how to configure and control video tiles in the SVT-AV1 encoder when using FFmpeg. You will learn how to use the specific FFmpeg parameters required to set tile rows and columns, how the log2 scaling system works, and how to balance encoding speed against compression efficiency with practical command-line examples.

Understanding AV1 Tiles

In the AV1 codec, a frame can be split into a grid of independent rectangular regions called “tiles.” Because each tile can be encoded and decoded independently, configuring tiles allows your system to utilize multiple CPU threads more effectively. This significantly increases both encoding and decoding speeds, especially for high-resolution video like 4K.

However, because prediction cannot occur across tile boundaries, increasing the number of tiles can slightly reduce overall compression efficiency, leading to a marginally larger file size at a given quality level.

SVT-AV1 Tile Parameters in FFmpeg

To configure tiles in FFmpeg using the SVT-AV1 encoder (libsvtav1), you must pass the configuration options through the -svtav1-params flag.

SVT-AV1 uses a base-2 logarithmic scale (\(\log_2\)) for its tile parameters:

Because these parameters use \(\log_2\) values, the actual number of tile rows or columns is calculated as \(2^N\), where \(N\) is the value you provide.

Log2 Reference Table

Parameter Value (\(N\)) Resulting Rows or Columns (\(2^N\))
0 \(2^0 = 1\) (Default)
1 \(2^1 = 2\)
2 \(2^2 = 4\)
3 \(2^3 = 8\)
4 \(2^4 = 16\)

For example, setting tile-columns=2 and tile-rows=1 will split the video frame into a grid of 4 columns and 2 rows, resulting in 8 total tiles.

FFmpeg Command Examples

To apply these parameters, list them inside the -svtav1-params option, separated by a colon (:).

Example 1: 4 Columns and 1 Row (4 Tiles Total)

This configuration is a common choice for 1080p video, as it provides a good balance of multi-threading capabilities without sacrificing too much compression efficiency.

ffmpeg -i input.mp4 -c:v libsvtav1 -crf 30 -svtav1-params tile-columns=2:tile-rows=0 -c:a copy output.mkv

Example 2: 4 Columns and 2 Rows (8 Tiles Total)

This configuration is highly recommended for 4K video, enabling high-performance parallel processing on modern multi-core processors.

ffmpeg -i input.mp4 -c:v libsvtav1 -crf 26 -svtav1-params tile-columns=2:tile-rows=1 -c:a copy output.mkv

While you can technically set as many tiles as the standard allows, utilizing too many tiles on low-resolution videos will degrade quality. The following guidelines offer a starting point for optimal performance: