The Scalable Video Technology for AV1 Encoder (SVT-AV1 Encoder) is an AV1-compliant encoder library core. The SVT-AV1 development is a work-in-progress targeting performance levels applicable to both VOD and Live encoding / transcoding video applications.
SVT-AV1 Encoder is licensed under the OSI-approved BSD+Patent license. See LICENSE for details.
More details about the SVT-AV1 usage can be found under:
SVT-AV1 Encoder may run on any Windows* or Linux* 64 bit operating systems. The list below represents the operating systems that the encoder application and library were tested and validated on:
- Windows* Operating Systems (64-bit):
- Windows* Server 2016
- Linux* Operating Systems (64-bit):
- Ubuntu* 16.04 Server LTS
- Ubuntu* 18.04 Server LTS
- Unix* Operating Systems (64-bit):
- MacOS
The SVT-AV1 Encoder library supports the x86 architecture
-
CPU Requirements
In order to achieve the performance targeted by the SVT-AV1 Encoder, the specific CPU model listed above would need to be used when running the encoder. Otherwise, the encoder runs on any 5th Generation Intel® Core™ processor, (Intel® Xeon® CPUs, E5-v4 or newer).
-
RAM Requirements
The SVT-AV1 Encoder adapts to the system that is being ran on. The memory requirements depend on the number of cores the system contains, the input frame rate of the input sequence (
-fps
) and the look ahead distance passed to the encoder (-lad
). The SVT-AV1 Encoder application will display an error if the system does not have enough RAM to support the encode prior to the start of the encode. The following table shows the minimum amount of RAM required for some standard resolutions of 10bit video per stream:
Resolution | 8-vCPU Commit Size (GB) | 40-vCPU Commit Size (GB) |
---|---|---|
4k | 14 | 24 |
1080p | 6 | 10 |
720p | 4 | 7 |
480p | 3 | 5 |
-
Build Requirements
-
Build Instructions
- Build the project by following the steps below
- cd into
Build\windows
- run
build.bat <2019|2017|2015>
[This will generate the .sln files and build the project]
- cd into
- Build the project by following the steps below
-
Binaries Location
- Binaries can be found under
<repo dir>/Bin/Release
or<repo dir>/Bin/Debug
, depending on whether Debug or Release were selected in the build mode.
- Binaries can be found under
-
Installation
For the binaries to operate properly on your system, the following conditions have to be met:
- On any of the Windows* Operating Systems listed in the OS requirements section, install Visual Studio* 2015/2017/2019
- Once the installation is complete, copy the binaries to a location making sure that both the sample application
SvtAv1EncApp.exe
and librarySvtAv1Enc.dll
are in the same folder. - Open the command prompt window at the chosen location and run the sample application to encode:
SvtAV1EncApp.exe -i [in.yuv] -w [width] -h [height] -b [out.ivf]
- Sample application supports reading from pipe. E.g.
ffmpeg -i [input.mp4] -nostdin -f rawvideo -pix_fmt yuv420p - | SvtAv1EncApp.exe -i stdin -n [number_of_frames_to_encode] -w [width] -h [height]
-
Build Requirements
- GCC 5.4.0 or later
- CMake 3.5.1 or later
- YASM Assembler version 1.2.0 or later
-
Build Instructions
-
cd Build/linux
-
./build.sh <release | debug>
-
Note about macOS
If you get
errno: 24 Encoding Could not allocate enough memory for channel 1
while encoding, this can mean that the fd limit is too low.
It is necessary to increase the amount of available file descriptors and the instructions to do so can be found here.
-
-
Sample Binaries location
- Binaries can be found under
Bin/Release
and/orBin/Debug
- Binaries can be found under
-
Installation
For the binaries to operate properly on your system, the following conditions have to be met:
- On any of the Linux* Operating Systems listed above, copy the binaries under a location of your choice.
- Change the permissions on the sample application
SvtAV1EncApp
executable by running the command:chmod +x SvtAv1EncApp
- cd into your chosen location
- Run the sample application to encode:
./SvtAv1EncApp -i [in.yuv] -w [width] -h [height] -b [out.ivf]
- Sample application supports reading from pipe. E.g.
ffmpeg -i [input.mp4] -nostdin -f rawvideo -pix_fmt yuv420p - | ./SvtAv1EncApp -i stdin -n [number_of_frames_to_encode] -w [width] -h [height]
- Multi-instance support: The multi-instance functionality is a demo feature implemented in the SVT-AV1 Encoder sample application as an example of one sample application using multiple encoding libraries. Encoding using the multi-instance support is limited to only 6 simultaneous streams. For example two channels encoding on Windows:
SvtAV1EncApp.exe -nch 2 -c firstchannel.cfg secondchannel.cfg
- Features enabled: The library will display an error message any feature combination that is not currently supported.
We welcome community contributions to the SVT-AV1 Encoder. Thank you for your time! By contributing to the project, you agree to the license and copyright terms in the OSI-approved BSD+Patent license and to the release of your contribution under these terms. See LICENSE for details.
-
Follow the coding guidelines
-
Validate that your changes do not break a build
-
Perform smoke tests and ensure they pass
-
Submit a pull request for review to the maintainer
Use the Issues tab on Github. To avoid duplicate issues, please make sure you go through the existing issues before logging a new one.
#svt
on Freenode. Join via Freenode Webchat or use your favorite IRC client. A public log is available.
Performance and raw data files available at http://videocodectracker.dev
The notices and disclaimers can be found here