AV1 Community
- SVT-AV1-PSY v2.1.0-Agithub.com Release v2.1.0-A · gianni-rosato/svt-av1-psy
Hi there! We're back with our micro-release format to announce some exciting changes in SVT-AV1-PSY v2.1.0-A! 🎉 PSY Updates Features New parameter --max-32-tx-size, which restricts block transform...
Introducing SVT-AV1-PSY v2.1.0-A
Features
- New parameter
--max-32-tx-size
, which restricts block transform sizes to a maximum of 32x32 pixels. This can be useful in very specific scenarios for improving overall efficiency - Added support for HDR10+ JSON files via a new
--hdr10plus-json
parameter (thanks @quietvoid!). In order to build a binary with support for HDR10+, see our PSY Development page. - New parameter
--adaptive-film-grain
, which helps remedy perceptually harmful grain patterns caused by extracting grain from blocks that are too large for a given video resolution. This parameter is enabled by default
Quality & Performance
- Disabled SSIM-cost transform decisions while keeping SSIM-cost mode decisions, generally improving Tune 3's efficiency & consistency
- Additional NEON optimizations for ARM platforms, providing a speed increase
Documentation
- All of the features present in this release have been documented, so associated documentation has been updated accordingly
- Build documentation updated to reflect the HDR10+ build option
Bug Fixes
- Disabled quantization matrices for presets 5 and higher due to a visual consistency bug (#56)
Full Changelog: https://github.com/gianni-rosato/svt-av1-psy/commits/v2.1.0-A
- New parameter
- Observing SVT-AV1 v2.1.0's improvements: A New Deep Dive | Codec Wikiwiki.x266.mov Observing SVT-AV1 v2.1.0's improvements: A New Deep Dive | Codec Wiki
SVT-AV1 2.1.0 just released, how does it compare to the previous version?
SVT-AV1 2.1.0 just released, how does it compare to SVT-AV1 2.0.0? Well-known encoder Trix attempts to answer this question with metrics, graphs, and detailed analysis.
- SVT-AV1 2.1.0 Releasedgitlab.com v2.1.0 · Alliance for Open Media / SVT-AV1 · GitLab
[2.1.0] - 2024-05-17 API updates One config parameter added within the padding size. Config param structure...
[2.1.0] - 2024-05-17
API updates
- One config parameter added within the padding size. Config param structure size remains unchanged
- Presets 6 and 12 are now pointing to presets 7 and 13 respectively due to the lack of spacing between the presets
- Further preset shuffling is being discussed in #2152
Encoder
- Added variance boost support to improve visual quality for the tune vq mode
- Improve the tradeoffs for the random access mode across presets:
- Speedup of 12-40% presets M0, M3, M5 and M6 while maintaining similar quality levels
- Improved the compression efficiency of presets M11-M13 by 1-2% (!2213)
- Added ARM optimizations for functions with c_only equivalent
Cleanup Build and bug fixes and documentation
- Use nasm as a default assembler and yasm as a fallback
- Fix performance regression for systems with multiple processor groups
- Enable building SvtAv1ApiTests and SvtAv1E2ETests for arm
- Added variance boost documentation
- Added a mailmap file to map duplicate git generated emails to the appropriate author
- SVT-AV1-PSY v2.0.0-Agithub.com Release v2.0.0-A · gianni-rosato/svt-av1-psy
Hi there! We're back with a new micro-release format to announce some exciting changes in SVT-AV1-PSY v2.0.0-A! 🎉 PSY Updates Features The CRF range, previously capped at 63, has been extended to ...
Hi there! We're back with a new micro-release format to announce some exciting changes in SVT-AV1-PSY v2.0.0-A! 🎉
PSY Updates
Features
- The CRF range, previously capped at 63, has been extended to a maximum value of 70. It can also be incremented in quarter increments of 0.25
- New option:
--enable-dlf 2
for a slower, more accurate deblocking loop filter - New option:
--qp-scale-compress-strength
(0 to 3) which sets a strength for the QP scale algorithm to compress values across all temporal layers. Higher values result in more consistent video quality - New option:
--frame-luma-bias
(0 to 100) enables experimental frame-level luma bias to improve quality in dark scenes by adjusting frame-level QP based on average luminance across each frame
Quality & Performance
- A temporal layer qindex offset has been added to Tune 3 for more consistent quality across frames when encoding
- Minor speed bump to Preset 8
- Dynamic delta_q_res switching implemented to help reduce signaling overhead, which should improve quality especially at CRF ≥40
- Other general improvements to Tune 3
Documentation
- PNG images have been replaced with smaller lossless WebP images, resulting in faster loading & repository cloning times.
- More consistent & thorough PSY Development page, including build instructions
Bug Fixes
- Help menu formatting adjusted for less frequent underlining
--progress 2
no longer reports the same information as--progress 3
Other
- Introducing PSY Micro-releases! Each micro-release will be marked with a letter, bringing a bundle of new features & improvements. The release letter will reset back to the initial
A
each time our mainline version is updated. More info can be found in this project's README & the PSY Development page
Thanks for using SVT-AV1-PSY! ♥️
Full Changelog: https://github.com/gianni-rosato/svt-av1-psy/commits/v2.0.0-A
- SVT-AV1-PSY v2.0.0 Released in Tandem with Mainlinegithub.com Release v2.0.0 · gianni-rosato/svt-av1-psy
Hello, everyone! We've been hard at work improving SVT-AV1 with our additions to the encoder improving visual fidelity. Little by little, we are working on trying to bring many of them to mainline!...
From the GitHub releases:
> Hello, everyone! We've been hard at work enhancing SVT-AV1 with our additions to the encoder improving visual fidelity. Little by little, we are working on trying to bring many of them to mainline! For the time being, I want to note that major SVT-AV1-PSY releases & mainline releases are not the same, and the codebases differ due to our changes; the version numbers may be identical, but the versions themselves are not, which is disclosed within the encoder's version information. With that, we're excited to announce SVT-AV1-PSY v2.0.0! 🎉
PSY Updates
Variance boost
- Moved varboost delta-q adjusting code to happen before TPL, giving TPL the opportunity to work with more accurate superblock delta-q priors, and produce better final rdmult lambda values
- Fixed rare cases of pulsing at high CRFs (>=40) and strengths (3-4)
- 2% avg. bitrate reduction for comparable image quality
- Added an alternative boosting curve (
--enable-alt-curve
), with different variance/strength tradeoffs - Refactored boost code so it internally works with native q-step ratios
- Removed legacy variance boosting method based on 64x64 values
- Parameter
--new-variance-octile
->--variance-octile
- Parameter
Excitingly, a var-boost mainline merge has been marked with the highest priority issue label by the mainline development team, so we may see this in mainline SVT-AV1 soon! Congrats @juliobbv! 🎉
Other
- Presets got faster, so in addition to Preset -2, we have an even slower Preset -3
--sharpness
now accepts negative values- The SVT-AV1-PSY encoder now supports Dolby Vision encoding via Dolby Vision RPUs. To build with Dolby Vision support, install libdovi & pass
--enable-libdovi
to./build.sh
on macOS/Linux (orenable-libdovi
to./build.bat
on Windows).
Mainline Updates
Major API updates
- Changed the API signaling the End Of Stream (EOS) with the last frame vs with an empty frame
OPT_LD_LATENCY2
making the change above is kept in the code to help devs with integration- The support of this API change has been merged to ffmpeg with a 2.0 version check
- Removed the 3-pass VBR mode which changed the calling mechanism of multi-pass VBR
- Moved to a new versioning scheme where the project major version will be updated every time API/ABI is changed
Encoder
- Improve the tradeoffs for the random access mode across presets:
- Speedup presets MR by ~100% and improved quality along with tradeoff improvements across the higher quality presets (!2179,#2158)
- Improved the compression efficiency of presets M9-M13 by 1-4% (!2179)
- Simplified VBR multi-pass to use 2 passes to allow integration with ffmpeg
- Continued adding ARM optimizations for functions with
c_only
equivalent - Replaced the 3-pass VBR with a 2-pass VBR to ease the multi-pass integration with ffmpeg
- Memory savings of 20-35% for LP 8 mode in preset M6 and below and 1-5% in other modes / presets
- Film grain table support via
--fgs-table
(already in SVT-AV1-PSY) (link) - Disable film grain denoise by default (already in SVT-AV1-PSY) (link)
Cleanup, bug fixes & documentation
- Various cleanups and functional bug fixes
- Update the documentation to reflect the rate control
Thanks for using SVT-AV1-PSY! ♥️
Full Changelog: https://github.com/gianni-rosato/svt-av1-psy/commits/v2.0.0
- Moved varboost delta-q adjusting code to happen before TPL, giving TPL the opportunity to work with more accurate superblock delta-q priors, and produce better final rdmult lambda values
- SVT-AV1 v2.0.0 released · GitLabgitlab.com v2.0.0 · Alliance for Open Media / SVT-AV1 · GitLab
[2.0.0] - 2024-03-13 Major API updates Changed the API signaling the End Of Stream (EOS) with...
[2.0.0] - 2024-03-13
Major API updates
- Changed the API signaling the End Of Stream (EOS) with the last frame vs with an empty frame
- OPT\_LD\_LATENCY2 making the change above is kept in the code to help devs with integration
- The support of this API change has been merged to ffmpeg with a 2.0 version check
- Removed the 3-pass VBR mode which changed the calling mechanism of multi-pass VBR
- Moved to a new versioning scheme where the project major version will be updated every time API/ABI is changed
Encoder
- Improve the tradeoffs for the random access mode across presets:
- Speedup presets MR by \~100% and improved quality along with tradeoff improvements across the higher quality presets (!2179,\#2158)
- Improved the compression efficiency of presets M9-M13 by 1-4% (!2179)
- Simplified VBR multi-pass to use 2 passes to allow integration with ffmpeg
- Continued adding ARM optimizations for functions with c\_only equivalent
- Replaced the 3-pass VBR with a 2-pass VBR to ease the multi-pass integration with ffmpeg
- Memory savings of 20-35% for LP 8 mode in preset M6 and below and 1-5% in other modes / presets
Cleanup and bug fixes and documentation
- Various cleanups and functional bug fixes
- Update the documentation to reflect the rate control changes
- Upcoming Android update will give AV1 videos a big boost on budget deviceswww.androidauthority.com Upcoming Android update will give AV1 videos a big boost on budget devices
Android currently ships with the libgav1 AV1 decoder, but a future update will switch that to libdav1d, which offers much better performance.
It's official that Android will be rolling out dav1d to replace libgav1 as a system wide codec on Android 14 devices, though there is potential for it to be supported as far back as Android 10. Finally, libgav1 is no more!
- How to determine the level of film grain synth on a video?
Does anyone know how to determine the level of grain synth used in an encoded video? I have .webms that I've encoded with ffmpeg and svt-av1 but I don't have that grain synth information anymore.
In fact it would be nice if I could just see any other information about an encoded video (rate factor, preset used, etc). These details don't appear when using
mediainfo
so I presume they are lost and unknowable. But grain synth occurs at decode time, so that should still be something I can figure out, right? - SVT-AV1-PSY Commit d47edb84github.com GitHub - gianni-rosato/svt-av1-psy: The Scalable Video Technology for AV1 (SVT-AV1 Encoder and Decoder) with perceptual enhancements for psychovisually optimal AV1 encoding
The Scalable Video Technology for AV1 (SVT-AV1 Encoder and Decoder) with perceptual enhancements for psychovisually optimal AV1 encoding - gianni-rosato/svt-av1-psy
Some big changes have been introduced in SVT-AV1-PSY, courtesy of Clybius, the author of aom-av1-lavish! Here is the changelog:
Feature Additions
- Tune 3 A new tune based on Tune 2 (SSIM) called SSIM with Subjective Quality Tuning. Generally harms metric performance in exchange for better visual fidelity.
--sharpness
A parameter for modifying loopfilter deblock sharpness and rate distortion to improve visual fidelity. The default is 0 (no sharpness).
Modified Defaults
- Default 10-bit color depth. Might still produce 8-bit video when given an 8-bit input.
- Disable film grain denoising by default, as it often harms visual fidelity.
- Default to Tune 2 instead of Tune 1, as it reliably outperforms Tune 1 on most metrics.
- Enable quantization matrices by default.
- Set minimum QM level to 0 by default.
That's all, folks! Keep an eye on the
master
branch for more changes in the future! - Vulkan Video Finally Introduces AV1 Video Decoding Extension
Introduced in April 2021 was the initial Vulkan Video support for a new video encode/decode API built around Vulkan. That initial Vulkan Video support was catered to H.264 and H.265 while finally with today's Vulkan 1.3.277 release there is a new extension introduced for AV1 video decoding.
- Aviator 0.5.0github.com Release Aviator 0.5.0 · gianni-rosato/aviator
Today, we have a very exciting development - Aviator has switched to an in-house custom fork of SVT-AV1 dubbed SVT-AV1-PSY! Featuring development efforts from BlueSwordM (author of the previous c...
Today, we have a very exciting development - Aviator, the Linux GUI for AV1 encoding, has switched to an in-house custom fork of SVT-AV1 dubbed SVT-AV1-PSY!
Featuring development efforts from BlueSwordM (author of the previous custom fork), myself (Gianni), and others, this change will enable us to have much more control over the encoder's development so that it aligns most effectively with Aviator's number one priority: visual quality.
So far, SVT-AV1-PSY's most noteworthy feature is a variance boost patch that appreciably improves intra- and inter-frame fidelity consistency across wide range of content. Visual fidelity per bit is estimated to have increased by up to 5% with this patch, which currently isn't present in mainline SVT-AV1.
Even though this patch should inevitably make it to mainline, the gains from having more direct control are already being realized as we can implement features like this flexibly at a pace we decide.
Aside from that, FFmpeg has been updated to version 6.1, the SCM toggle has been replaced with a more useful Open GOP toggle, and the README has been modified to reflect some of these more recent changes with regard to SVT-AV1-PSY.
Thank you for using Aviator, and happy encoding!
Aviator can be downloaded on Flathub, where 0.5.0 will be available soon.
- Encoding Animation with SVT-AV1: A Deep Divewiki.x266.mov Encoding Animation with SVT-AV1: A Deep Dive | Codec Wiki
With the recent release of SVT-AV1 1.8.0, how does it stack up for encoding animation?
This blog post on the Codec Wiki by encoder Trix presents extensive benchmarking of SVT-AV1 1.8.0 on animated content using both objective metrics and subjective image comparisons (the subjective part is coming soon). Short high-quality anime clips were encoded directly with SVT-AV1 across a range of settings. SSIMULACRA2 visual quality scores and encoding speeds were measured for each encode, along with bits per pixel to calculate encoding efficiency. The results are presented through graphs showing metric scores and speed, alongside comparison images enabling subjective evaluation of visual quality (again, comparison images coming soon for subjective analysis). This rigorous testing methodology provides insightful analysis of how SVT-AV1 performs when encoding animation.
- Av1an Command Generatorgithub.com GitHub - gianni-rosato/av1an-command-gen: A tool for easily generating Av1an commands for AV1 encoding. Written in Zig.
A tool for easily generating Av1an commands for AV1 encoding. Written in Zig. - GitHub - gianni-rosato/av1an-command-gen: A tool for easily generating Av1an commands for AV1 encoding. Written in Zig.
This program generates an AV1 video encoding command for use with Av1an, a chunked AV1 encoding tool for use with aomenc, SVT-AV1, and rav1e.
This tool takes in the video resolution, frame rate, desired encoder, speed preset, and target bitrate range as command line arguments. Based on these parameters, it calculates settings like tile columns/rows, lag-in-frames, CRF, and encoder speed preset. Then, it injects these into a generated encoding command string.
The output is a full Av1an command that can be run to encode a video based on the specified settings.
- SVT-AV1 1.8.0gitlab.com v1.8.0 · Alliance for Open Media / SVT-AV1 · GitLab
[1.8.0] - 2023-12-11 Encoder Improve the tradeoffs for the random access mode across presets: Speedup CRF...
Encoder
Improve the tradeoffs for the random access mode across presets: Speedup CRF presets M6 to M0 by 17-53% while maintaining similar quality levels Re-adjust CRF presets M7 to M13 for better quality with BD-rate gains ranging from 1-4% Improve the quality and speed of the 1-pass VBR mode Improve Multi Pass VBR algorithm for better quality with BD-rate gains of ~3% on average More details on the per preset improvements can be found in MR !2143
Add API allowing to update bitrate / CRF and Key_frame placement during the encoding session for CBR lowdelay mode and CRF Random Access mode ARM Neon SIMD optimizations for most critical kernels allowing for a 4.5-8x fps speedup vs the c implementation
Cleanup and bug fixes and documentation
Various cleanups and functional bug fixes Update the documentation for preset options and individual features
- HandBrake 1.7.0 released with AMD & Nvidia AV1 hwenc, SVT-AV1 v1.7 & SVT-AV1 multi-pass ABRgithub.com Release 1.7.0 · HandBrake/HandBrake
Upgrade Notice Before updating HandBrake, please make sure there are no pending encodes in the queue, and be sure to make a backup of any custom presets and app preferences you have, as they may no...
Huge improvements for AV1 users over the last stable HandBrake release.
- Apple's newly announced M3 processors feature hardware decodewww.apple.com Apple unveils M3, M3 Pro, and M3 Max, the most advanced chips for a personal computer
M3, M3 Pro, and M3 Max feature groundbreaking technologies that deliver dramatically increased performance and unleash new capabilities for Mac.
I think with the weight of Apple finally behind AV1 it is as blessed of a format as anything can be. Sisvel be damned.
> And, a new media engine now includes support for AV1 decode, providing more efficient and high-quality video experiences from streaming services.
I do not see AV1 encode support on this chip's announcement, however.
- Introducing aomenc-psy101
Another aom psy fork, by me, utilizing patches from the unmaintained psy fork and its popular lavish fork, as well as original changes. It's overall closer to mainline, as I have decided against applying a lot of patches that I found to be more harmful than beneficial for efficiency when applied to current mainline aomenc. If you're missing parameters from aomenc-lavish, please request them with a short explanation, I might add them, currently I have only applied those that I am interested in using myself. Other suggestions are welcome as well.
I plan to frequently merge mainline changes into this fork.
Defaults are much improved, something like a simple
--end-usage=q --threads=16 --tune-content=psy --cpu-used=4 --cq-level=20
should provide very good results. - rAV1ator CLI: Easy, Stylish Encoding w/ Av1an
In the world of AV1 encoding, achieving high-quality, efficient compression often requires intricate knowledge & fine-tuning of confounding parameters (aom-av1-lavish ... looking at you, wink). This difficulty is compounded by the fact that you are faced with three open-source encoding options that are all compelling for different reasons. This can make tapping into AV1's potential a daunting task for novice and even intermediate users.
That's where
rav1ator-cli
comes in. I have attempted to distill weeks (months?) of community parameter testing & expertise into an easy-to-use interactive command line interface. With just a few prompts,rav1ator-cli
guides you through choosing an encoder & selecting settings to achieve maximum perceptual efficiency at any speed or quality setting you prefer. Adding in the ability to specify custom parameters, rav1ator-cli provides a smooth on-ramp for newcomers while remaining flexible enough for power users.Here are some of rav1ator-cli's standout features that make it a superb encoding tool: rAV1ator CLI can:
- Check if it is installed & up to date on its own without a package manager
- Download AVX2-optimized encoder binaries compiled with -O3 -flto in most cases & allow the user to install them with detailed instructions
- Encode with x264, x265, aomenc, SVT-AV1, or rav1e & set a speed preset, CRF/quality value, FFmpeg parameters, and encoder parameters
- Use pre-defined encoding parameters that are provided so you can say goodbye to cargo culting
- Generate Av1an encoding commands with the user's chosen settings & run them to encode a provided input video to an MKV output
- Encode from scratch, or resume a previous rav1ator-cli encode
- Engage with rich interactivity featuring spinners, prompts, dropdowns, & other glitz
- Error check downloads by checking hashes on the downloaded binaries for security & convenience
This tool is Linux only. If you'd like to install: These instructions are for Arch Linux specifically, but if you have all the dependencies, you can skip to Step 3 & it'll work on any distro (I'm assuming this includes WSL, too).
- Update your system before doing anything. On Arch:
bash sudo pacman -Syu
- Install
yay
(Arch only) by running the following commands:bash sudo pacman -S --needed base-devel git git clone https://aur.archlinux.org/yay.git cd yay && makepkg -si
- Next, you'll want to install all of rav1ator-cli's dependencies. You can do that by running:
bash yay -Sy rust ffmpeg python mkvtoolnix-cli vapoursynth gum numactl l-smash vapoursynth-plugin-lsmashsource av1an ffms2
- Install rav1ator-cli:
bash curl -sOJ https://raw.githubusercontent.com/gianni-rosato/rav1ator-cli/main/rav1ator-cli && chmod +x rav1ator-cli sudo cp rav1ator-cli /usr/local/bin
Thank you for looking at rAV1ator CLI! You can see demos as well as more info on the project at either link below. GitHub | Codec Wiki
Connect with me: https://discord.gg/bbQD5MjDr3
- Codec Wiki and "AV1 for Dummies" Discord Server - Learn About AV1 and Othersdiscord.gg Join the AV1 for Dummies Discord Server!
A learning space for those who are new to AV1 encoding & the world of multimedia codec technology as a whole. | 89 members
Hey AV1 Enthusiasts, encoders, and newbies alike,
I remember being completely new to the world of multimedia codec technology, and being totally lost on where to begin learning. To address this, I've decided to create a server tailored toward new learners. If you're looking to deepen your knowledge of multimedia codecs, particularly AV1, or you believe you have valuable insights to share, we've got an amazing community waiting for you.
I am thrilled to invite you to the AV1 for Dummies Discord server, a place dedicated to demystifying the fascinating world of AV1 encoding & beyond. Whether you're a seasoned codec professional or just dipping your toes into this field, there's something here for everyone.
Alongside this, I'm publicly announcing the Codec Wiki, a place where you can read about anything codec-related for hours on end. This wiki aims to demystify the realm of multimedia compression while connecting codec enthusiasts to create a sink of knowledge for the benefit of everyone. It is still under heavy development, so please heed this as you take in the information available on the site. If you have any questions or concerns, the place to ask is in the AV1 for Dummies server.
What's in it for you?
- 📚
Learning Resources:
Access encoding tools, their developers, and an entire wiki dedicated to AV1 & other multimedia codecs. - 💬
Engaging Conversations:
Join lively discussions, ask questions, and share insights with fellow codec enthusiasts. - 🧙♂️
Expert Insights:
Seasoned experts with rich codec experience are available to discuss your needs with you as you learn. - 🎲
Fun Challenges:
Participate in codec-related contests and games to make learning enjoyable. (coming soon) - 📌
Organized Topics:
We have dedicated channels to ensure focused discussions, and a forum for asking & answering burning questions.
Ready to dive in? Here's the invite link: discord.gg/bbQD5MjDr3
We're all about respect and open-mindedness, creating a safe space for everyone to learn and grow. Come say hello, introduce yourself, and be a part of our growing community!
Let's learn, explore, and master the intricacies of AV1 and multimedia codecs together. Join us at "AV1 for Dummies" & unlock the world of AV1!
See you there! 🚀 ps: I posted this on Reddit as well, but this was not automatically also posted to Lemmy - I did that manually, as I like Lemmy more ;)
- 📚
- Aviator 0.4.2github.com Release Aviator 0.4.2 · gianni-rosato/aviator
Updated SVT-AV1 to 1.7.0, which features rebalanced presets & more massive speed improvements In light of SVT-AV1's speedy development, Preset 7 is now high enough quality to be featured as Aviator...
> Updated SVT-AV1 to 1.7.0, which features rebalanced presets & more massive speed improvements > In light of SVT-AV1's speedy development, Preset 7 is now high enough quality to be featured as Aviator's default speed preset > "Copy Audio" now disables other audio options in the GUI > New "Adaptive SCM" toggle (explained in tooltip) > Small fixes & adjustments
Download for Linux on Flathub!
- SVT-AV1 v1.7.0gitlab.com v1.7.0 · Alliance for Open Media / SVT-AV1 · GitLab
[1.7.0] - 2023-08-24 Encoder Improve the tradeoffs for the random access mode across presets MR-M13: Quality...
Encoder
- Improve the tradeoffs for the random access mode across presets MR-M13:
- Quality improvements across all presets and metrics ranging from 0.3% to 4.5% in BD-rate (!2129)
- Spacing between presets [M1-M6] has been adjusted to account for the tradeoff improvements achieved
- As a user guidance when comparing v1.7 vs v1.6 in a convexhull encoding setup:
- v1.7.0 M2 is now at similar quality levels as v1.6.0 M1 while being ~50% faster
- v1.7.0 M3 is now at similar quality levels as v1.6.0 M2 while being ~50% faster
- v1.7.0 M4 is now at similar quality levels as v1.6.0 M3 while being ~40% faster
- v1.7.0 M5 is now at similar quality levels as v1.6.0 M4 while being ~30% faster
- v1.7.0 M6 is now at similar quality levels as v1.6.0 M5 while being ~25% faster
- Added an experimental tune SSIM mode yielding ~3-4% additional SSIM BD-rate gains (!2109)
Build, cleanup and bug fixes
- Various cleanups and functional bug fixes
- Fix build conflict with libaom
- How I encode AV1 with Av1an and Podman
I have been encoding some videos in AV1 lately and I thought I'd share my technique for those who may wish to do some AV1 on their own without having a messy setup. I think this is a pretty clean way, ultimately, to use Av1an's Docker image.
A forewarning: AV1 can be pretty to slow encode with. I've been doing it with DVDs where the 640x480 resolution of the video means a frame can be processed relatively quickly, but videos in 1920x1080 or 4k resolutions might be pretty intense where the encode speed only ends up being a frame a second.
Forewarning pt. 2: Something I learned that I CANNOT rely on is trying a faster encode speed to guesstimate the resulting file size and picture quality and then really maximize my results by lowering the encode speed. My observation has been that a slower encode speed will in fact improve the picture quality (and file size), such that I cannot be sure what something will look like without just encoding a very short sample at a slow speed. OK. Let's begin.
Operating System & Environment
I am using Fedora Linux 38. I'd like to use the Av1an package but that only has an official Arch release. I definitely don't want to spend time compiling this myself, so I will use the official Docker image instead. And I won't use Docker, actually, but Podman. I also use the Fish Shell. Its syntax is very slightly different from Bash's.
Now, Fedora users may know about SELinux. And something that kept happening to me was the security context of some of the files I'm shuffling around my hard drives would end up being not correct, making Podman incapable of seeing the files I'm trying to use. So instead of fixing the context per file (annoying) I just temporarily disabled SELinux.
sudo setenforce Permissive
Container image
From here things are pretty straightforward. I'll pull the docker image, which has a full Av1an setup ready to go.
podman pull docker.io/masterofzen/av1an:master
One little note is that you should use the master tag. A confusing thing about this image is that the latest tag is the old python version, and we want the current Rust version.
Executing Av1an
Now, navigate to whatever directory your source video is in. In my case, I losslessly encoded the DVDs with Handbrake into h264 and passed through the audio/chapter markers, etc. This gave me a good source to work with, even though it was a little bloated in file size. I don't think Av1an accepts MPEG-2, which is why I did that.
First I'll explain what the Podman command is doing for those who aren't familiar with Docker/Podman, and then I'll give a full working example.
podman run -v "$(pwd)":/videos:z --userns=keep-id -it --rm docker.io/masterofzen/av1an:master -i sourcevideo.mp4 -s scenes.csv --pix-format yuv420p10le -o output.webm -v "--VIDEO_OPTIONS" --keep -a "--AUDIO_OPTIONS"
podman run
- Execute a container-v "$(pwd)":/videos:z
- Mount the present working directory as /videos in the container, and the :z is an SELinux labeling thing that can be dropped for non-SELinux users.--userns=keep-id
- This flag helps keep the user id and group ids consistent between the host and container so that they don't get mangled. Your output file will belong to your user.-it
- Execute the command in a visible shell session--rm
- Remove the container (not the image, the container) when the command is done executing.
Final example
The rest of the flags are for Av1an itself, or for the encoders. So here's a full working example of how I used it, to encode with aomenc and Opus for the audio. Av1an uses aomenc by default.
podman run -v "$(pwd)":/videos:z --userns=keep-id -it --rm docker.io/masterofzen/av1an:master -i sourcevideo.mp4 -s scenes.csv --pix-format yuv420p10le -o output.webm -v " --cpu-used=3 --enable-qm=1 --threads=4 -b 10 --end-usage=q --cq-level=28 --lag-in-frames=48 --auto-alt-ref=1 --enable-fwd-kf=1" --keep -a "-c:a libopus -b:a 128k"
I think for an explanation for what individual flags do, and perhaps some guidance on how to use them effectively, I can only refer one to the guide written by Reddit user BlueSwordM https://www.reddit.com/r/AV1/comments/t59j32/encoder_tuning_part_4_a_2nd_generation_guide_to/
- AV1 Periphery on Revolt
Since what happened with Reddit could happen with Discord at any time (corporate greed), I started an AV1 server on Revolt. Please come check it out! Unlike discord, Revolt also supports AV1 video embeds...
- How to compile Av1an on Windows without breaking your eggs (from the subreddit)
some of this information may be out of date
Guide to compiling Av1an on Windows.
Download vapoursynth r57 portable from https://github.com/vapoursynth/vapoursynth/releases it's a 7z file so you should have 7-zip installed
Get Msys2 from https://www.msys2.org/, click on "download the installer" & install it with everything
Close msys2
Open msys2 mingw x64
Commands
- pacman -Syuu
this updates msys2 packages, write Y when needed and press enter, it will close the window when it finishes so open msys mingw x64 again
- pacman -S cmake git nasm python3 mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake base-devel mingw-w64-x86_64-ffmpeg mingw-w64-x86_64-rust mingw-w64-x86_64-lld mingw-w64-x86_64-clang mingw-w64-x86_64-make
this will install necessary stuff
Open VapourSynth32-Portable-R57.7z and copy all the libraries from \sdk\lib64 to C:\msys64\mingw64\lib
- git clone https://github.com/master-of-zen/Av1an
this downloads the Av1an source
- cd av1an
this will take the shell to the Av1an folder
This is optional but if you want a bit more of performance,(i'm talking a small bit) go in explorer to C:\msys64\home\"your username"\Av1an and open Cargo.toml and edit it with your text editor of choice, i used notepad++ and in the [profile.release] section change lto = "thin" to lto = "fat", i also added opt-level = 3 but that may not be necessary
- RUSTFLAGS="-C target-cpu=native" cargo build --release
#this compiles it with march native which gives a bit of performance
Profit, the executable should be created in C:\msys64\home\"your username"\Av1an\target\release
- Zoom joins Alliance for Open Mediaaomedia.org Zoom Joins the Alliance for Open Media
WAKEFIELD, Mass. – June 21, 2023 – The Alliance for Open Media (AOMedia) announced today that Zoom Video Communications, Inc., an all-in-one intelligent collaboration platform, has joined the Alliance as a Promoter Member. As a member of AOMedia, Zoom will collaborate with other leading internet and...
- SVT-AV1 1.6.0gitlab.com v1.6.0 · Alliance for Open Media / SVT-AV1 · GitLab
[1.6.0] - 2023-06-18 Encoder Improve the tradeoffs for the random access mode across presets M1-M13: (
Encoder
- Improve the tradeoffs for the random access mode across presets M1-M13: (!2120)
- Speeding up the higher quality presets by 30-40%
- Improving the BD-rate by 1-4% for the faster presets
- Improve the tradeoffs for the low delay mode for both screen content and non-screen content encoding modes (!2122, !2118)
- Add a toggle to remove the legacy one-frame buffer at the input of the pipeline allowing the low delay mode to operate at sub-frame processing latencies
- Add a new API allowing the user to specify quantization offsets for a region of interest per frame
Build, cleanup and bug fixes
- Various cleanups and functional bug fixes
- Fix the startup minigop size BD-rate loss
- Add ability to run the ci-testing offline
- r/AV1 & Lemmy
Hi everyone,
Montec, admin of the AV1 discord & moderator of the AV1 subreddit, has decided to join the Reddit blackout following Reddit's predatory API changes. I created this Lemmy community to help continue to foster AV1 community engagement as the Reddit blackout continues, and potentially create a new home for AV1 discussion. Reddit/Discord AV1 Community mods will be given mod here if they ask.Here's a link to the AV1 discord (30 day exp): https://discord.gg/2nqdkAMN4
Thanks, gb80