Energy Consumption and Carbon Emissions of Modern
Software Video Encoders
Energy Consumption and Carbon Emissions of Modern Software Video Encoders
In this project, we provide a comparative study between five leading video coding standards, namely H.264/AVC, H.265/HEVC, H.266/VVC, VP9, and AV1 through their open-source and fast software encoders x264, x265, VVenC, libvpx-vp9, and SVT-AV1, respectively, in terms of energy consumption, CO2 emissions and coding efficiency. This study provides a better understanding of the trade-off between energy consumption, bitrate, and quality of different encoders and determines which is the most suitable for developing a green and sustainable video streaming solution.
Evaluation System
The evaluation of video coding standards goes through four steps

1. Original dataset

JVET-CTC dataset

2. Video encoding

JVET-CTC dataset was encoded with:
Codec: H.264/AVC, H.265/HEVC, H.266/VVC, VP9, and AV1
Bitrate: four values
Encoding preset: four presets

3. Evaluation metrics

Encoding time, energy consumption, CO2 emissions, CPU and memory usage percentage, quality using PSNR, SSIM and VMAF metrics

4. Results and analysis

In-depth analysis of the pros and cons of five open-source video encoders

Encoder settings
Used hardware : The encoding process was performed on a highly efficient workstation type, specifically Intel(R) Xeon(R) W-2125 with an 4 Core CPU running at 4.00 GHz with four DDR4 RAM modules, each one with a size of 16 GB on Ubuntu 20.04.5 LTS operating system (OS). The processor supports a wide range of SIMD, including SSE4.2, AVX, AVX2, and AVX-512. All five encoders rely heavily on assembly and intrinsic to take advantage of low-level CPU and SIMD instructions (SSE, AVX, AVX-512), which help speed up the encoding process. Specifically, we used the default configuration of x264, x265, libvpx-vp9, and SVT-AV1 encoders provided with the FFmpeg library version 5.2. The proper SSE/AVX optimizations are enabled at run time according to the instructions supported by the CPU. For VVenC, we also compiled the encoder with the default configuration provided by the project Github through CMake.
Python code is available on GitHub, accessible here.
Selected parameters and settings for the considered five video encoders:
Standard SW encoder Command line
H.264/AVC x264
v0.164.3101
ffmpeg -y -f rawvideo -pix_fmt {yuv420p, yuv420p10le} -s:v {W×H} -r {fps} -i input.yuv -c:v libx264 -pix_fmt {yuv420p, yuv420p10le} -preset {veryslow, medium, veryfast, ultrafast} -frames:v {#frames} -crf {QP} -x264-params "keyint={GOP size}:min-keyint={GOP size}" output.mp4
H.265/HEVC x265
v3.5-2
ffmpeg -y -f rawvideo -pix_fmt {yuv420p, yuv420p10le} -s:v {W×H} -r {fps} -i input.yuv -c:v libx265 -pix_fmt {yuv420p, yuv420p10le} -preset {veryslow, medium, veryfast, ultrafast} -frames:v {#frames} -crf {QP} -x265-params "keyint={GOP size}:min-keyint={GOP size}" output.mp4
VP9 libvpx-vp9
v1.12.0
1) ffmpeg -y -f rawvideo -pix_fmt {yuv420p, yuv420p10le} -s:v {W×H} -r {fps} -i input.yuv -frames:v {#frames} -c:v libvpx-vp9 -pix_fmt {yuv420p, yuv420p10le} -speed {0, 3, 6} -b:v 0 -crf {QP} -g {GOP size} output.mp4
2) ffmpeg -y -f rawvideo -pix_fmt {yuv420p, yuv420p10le} -s:v {W×H} -r {fps} -i input.yuv -speed 8 -frames:v {#frames} -c:v libvpx-vp9 -pix_fmt {yuv420p, yuv420p10le} -quality realtime -b:v 0 -crf {QP} -g {GOP size} output.mp4
AV1 SVT-AV1
v1.7.0
ffmpeg -y -f rawvideo -pix_fmt {yuv420p, yuv420p10le} -s:v {W×H} -r {fps} -i input.yuv -frames:v {#frames} -c:v libsvtav1 -pix_fmt {yuv420p, yuv420p10le} -preset {3, 6, 10, 12} -crf {QP} -g {GOP size} output.mp4
H.266/VVC VVenC
v1.9.0
vvencFFapp -c randomaccess_{slow, medium, fast, faster}.cfg -c sequence.cfg
downlod dataset
The whole encoded dataset can be shared upon request. Please, send an email to taieb.chachou[at]gmail.com with Cc sfezza[at]ensttic.dz and whamidouche[at]gmail.com.
Citation
Please use the following citation when referencing this work:

@article{chachou2023energyenc,
title={Energy Consumption and Carbon Emissions of Modern Software Video Encoders},
author={Chachou, Taieb and Hamidouche, Wassim and Fezza, Sid Ahmed and Belalem, Ghalem},
journal={IEEE Consumer Electronics Magazine},
year={2023},
publisher={IEEE}
}
Results & analysis

Faster preset

Slower preset

All preset

Show results by :

Show results by :

Show results by :

Show results by :

Show results by :

Show results by :

Show results by :

Show results by :

Show results by :