/r/AV1
Subreddit for AV1 video codec
Subreddit for AV1 video codec
r/AV1 Discord server - for enthusiasts
AV1 for Dummies Discord server - experts helping newcomers
Codec Wiki - a beginner's guide to encoding
Related subreddits:
AOMedia, all things related to Open Alliance Media group, responsible for AV1 codec creation.
Webm, for posting your encoded content in webm container.
VP9, subreddit for all things related to VP9 encoder.
HEVC, subreddit for all things related to h.265 encoder.
Opus, most efficient audio codec currently available.
/r/AV1
Hi!
Just as for proof of concept, I have (successfully) managed to compile SVT-AV1 on a SoC (Raspberry Pi). Of course, I'm aware that this very weak CPU will allow only for really-really turtle-slow encodings, BUT it did compile. I do, however, experience nasty blocking artifacts when using any --preset under 10. Why is this? I have a wild guess that it's something about me using a x32 OS on the Raspberry, and SVTAV1 not having official support for x32 CPUs? Because, using the exact same revision/build, I don't get the same artifacts on a x64 system. Using --preset 10 (and above) yield nice results. Only the files produced with SvtAv1EncApp on the Raspberry is affected. Could someone with experience please shed some light over this mystery? Kind Regards / G.
Hello everyone. Do you know what configuration I can use with the AV1 codec for black and white movies with film grain in handbrake? Thanks in advance.
I can compress most TV shows nicely using ffmpeg and av1_nvenc. But in a few cases (maybe 5% of files) I get bad output. The audio plays fine but the video is all black with VLC. The same source files compress nicely with ffmpeg and libsvtav1.
Anyone seen this before and have a clue about what's going wrong?
It’s possible to make HDR AV1 recordings made with nvidia overlay work on YouTube? Since my video is not showing HDR when uploaded. It’s fine when I use HEVC
Our Software Implementation Working Group (SIWG) announced the release of SVT-AV1 v2.3, the latest update to our open-source, AV1-compliant encoder library. This version brings several improvements, particularly a new fast-decode mode that increases AV1 software cycle reduction without compromising quality. Read more & download: Software Implementation Working Group Releases SVT-AV1 v2.3 | Alliance for Open Media
I'm using XL converter, it has option to add additional args in avifenc in the settings section. I want to use fgs table (or film grain) of svt to encode images. How do I do that?
I’m looking for help building a PC in the smallest possible form factor that excels at transcoding, specifically using SVT-AV1. My budget does have a limit, but I’d like to explore all my options before setting a fixed cap.
One idea I’m considering is setting up multiple mini PCs with weaker CPUs and running transcoding tasks on each using Tdarr. Would this be a viable approach, or would a single compact powerhouse be better overall?
Any recommendations for components or setups would be greatly appreciated!
Can Any One Tell me How I can Encode in StaxRip. Also Can Any One Know How To get Fgs Table and How to use It.
I started a list I’m planning to keep updated that tracks support for hardware-accelerated decoding of AV1 on different Apple devices:
https://fullystacked.net/apple-devices-av1-decoding/
By the end of 2025 it will most likely be all current Apple products.
Youtube gives you the option to make AV1 the default but it doesn't look any better in a substantial way (i compared VP9 to AV1, recorded the screen with extreme high bitrate and compare them in davinci resolve) so the only thing that is does is ramp up your CPU cooler.
I'm struggling to get my new B580 dialed in with OBS for streaming and video encoding in AV1. Anyone have any experience they would be willing to share?
My goal is to pack a series of JPGs captured from a single camera into a video for comporession purposes. I want to avoid information loss as much as possible. My current trying is the following:
ffmpeg -framerate 30 -i %010d.jpg -c:v libsvtav1 -crf 18 -g 240 -pix_fmt yuv420p10le output_balanced.mkv -svtav1-params tune=1:color-range=1:preset=2
but no matter what I do -- colors are shifted in the result video. Can somebody please guide me on how can I preserve original colors from JPG? The color shift looks a bit like sRGB gamma correction, but I think it is not it.
I was encoding a bunch of DVD resolution talks (hence the cq-level=30). But I found that the first pass was even faster if I scaled down the input (scale=320:180). And nothing bad seemed to happen. BTW, I'm using the ffmpeg-old.exe because my newer version would sometimes crash at random intervals on certain webm source files. Known issue. But anyhow... Am I doing something extremely suboptimal, or is this something aomenc should actually be doing automatically for first pass? After all, how often will frame types be different if determined based on a 320*something file, instead of the full res version? Are there other factors which make this a bad practice?
first pass:for %i in ("source folder\*.webm") do "...\ffmpeg-old.exe" -i "%i" -filter:v "scale=320:180" -strict -1 -f yuv4mpegpipe -| "...\aomenc.exe" - --lag-in-frames=35 --enable-fwd-kf=1 --kf-max-dist=400 --end-usage=q --cq-level=30 --threads=16 --bit-depth=10 --enable-cdef=0 --tile-rows=1 --tile-columns=1 --passes=2 --pass=1 --fpf="dest folder\%~ni.txt" --cpu-used=5 -o "dest folder\%~ni.ivf"
second pass:for %i in ("source folder\*.webm") do "...\ffmpeg-old.exe" -i "%i" -strict -1 -f yuv4mpegpipe -| "...\aomenc.exe" - --lag-in-frames=35 --enable-fwd-kf=1 --kf-max-dist=400 --end-usage=q --cq-level=30 --threads=16 --bit-depth=10 --enable-cdef=0 --tile-rows=1 --tile-columns=1 --passes=2 --pass=2 --fpf="dest folder\%~ni.txt" --cpu-used=5 -o "dest folder\%~ni.ivf"
Newbie here. I'm playing with av1an + aom-av1 to see the results and I would say I am quite satisfied, except one thing - when scene changes (e.g. people's face disappears, etc.), right before the face disappears, the face turned black and white for a very short moment that I didn't even notice at the beginning. Here is the command line:
av1an -i video.mkv -y --resume --verbose -e aom -w 4 --photon-noise=10 --set-thread-affinity=2 --split-method av-scenechange -c ffmpeg -m lsmash -k -v "--threads=2 --cpu-used=3 --end-usage=q --cq-level=16 --enable-fwd-kf=1 --aq-mode=1 --lag-in-frames=48 --bit-depth=10 --kf-max-dist=240 --kf-min-dist=12 --enable-qm=1 --sb-size=64 --arnr-strength=1 --arnr-maxframes=3 --enable-restoration=0 --deltaq-mode=0 --sharpness=1 --enable-dnl-denoising=0 --denoise-noise-level=5" -a "-an" -o video.ivf
I took the -v part mostly from BlueSwordM's "Encoder tuning part 4" (https://www.reddit.com/r/AV1/comments/t59j32/encoder\_tuning\_part\_4\_a\_2nd\_generation\_guide\_to/?rdt=60011) and the av1an's options from somewhere I can't remember (sorry ;p). The videos are movie trailers from thedigitaltheater.com.
So where could I have done wrong?
I am reencoding my archival videos. I used to use HEVC, but now I am only using AV1 (via SVT-AV1). But I found that phone videos really suck with SVT-AV1. Even at nearly four times the bitrate the PSNR/SSIM/VMAF are significantly lower for the AV1 encode (using FFMetrics). Graph plot here.
PSNR-Value SSIM-Value VMAF-Value Bitrate File
21.594512 0.749845 48.050281 2856 Kbps xxx.h265.1080p.mp4
17.942083 0.639828 34.565513 9047 Kbps xxx.av1.1080p.mp4
Encoded with following command-line, source files are H.264 from cellphone, 20 Mbps bitrate:
ffmpeg \
-f concat -i scripts/files.txt -c:v libx265 \
-preset slower -crf 34 -pix_fmt yuv420p -x265-params range=full \
-vf scale=1920:1080:in_range=full:out_range=full \
-c:a aac -b:a 64k \
xxx.h265.1080p.mp4
ffmpeg -f concat -i source-phone/files.txt \
-c:v libsvtav1 -crf 36 -preset 4 -g 250 \
-pix_fmt yuv420p \
-vf scale=1920:1080:in_range=full:out_range=full \
-c:a libopus -b:a 32k \
xxx.av1.1080p.mp4
ffmpeg version 7.1-full_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers
So what is going on?
Hi guys,
I noticed that using Handbrake with AV1 (or nightly with AV1 PSY), mkv metadata passtrough, I cannot get HDR10+, only HDR10. Comparing the source and results in mediainfo :
source is : HDR10 compatible / SMPTE ST 2094 App 4, Version HDR10+ Profile B, HDR10+ Profile B compatible
encoded video only mentions : SMPTE ST 2086, Version HDR10, HDR10 compatible
I don't use particular parameters for encoding (only sharpness 10 and film grain 10)
AV1 / Handbrake is supporting HDR10+ or not ?
Hello,
I'm trying svt-av1-psy after compiling it. So far I have only tried tune=3 with significant size gain with a small vmaf hit.
I want to test the psy-rd parameter, but I can't find any doc on how it works. From the --help, I only know it goes from 0.0 to 6.0, with the default being 0.0.
What does that parameter control? What does incrementing it do? What are the tradeoff? What are recommanded values from your experience?
Thank you.
Hello, I have a home server that struggles the most with svtav1 encoding, because I send all media of all of extended family members to the server so think phones, drones, action cameras, etc. Where I compress them. Add to that, that the same number of people need access to plex transcoded media and I use svtav1 for everything.
The server does a lot of other things that are irrelevant because it's all working fine. The ffmpeg encoding is where it falls short and the cpu struggles a lot.
Whenever an encoding job comes the cpu sits at around max usage until it's done, even if it was almost at 0 before. This means that other applications become slow or crash.
Here are my specs:
Ryzen 5800X
RAM: 128Gb of DDR4
PSU: 400W
I was wondering if upgrading to a 5950X is going to solve my problem altogether, or at least significantly improve it, or if I have to upgrade the platform into DDR5 and change the motherboard, cpu, psu and ram. Main concern is that I'd rather keep my spending low. But in someone's experience changing to the 5950X is not going to have a significant impact then I'll switch to the new interface.
I haven't seen this question brought up here before in greater detail, so i decided to add every possible spelling that i found is being used in SVT-AV1 docs, so that future passer-by had more chances do actually find it using search.
SVT-AV1 documentation explains it very vaguely, with no examples of cases where you might want to turn it on, or actually maybe turning it off. It's qm-min and qm-max parameters are also having lackluster explanation.
I use FFMPEG shipped with latest base SVT-AV1 from BtbN's FFmpeg Builds, it works great for me, so i got stuck with using it that way. But i highly respect and adore SVT-AV1-PSY efforts at enhancing baseline SVT-AV1 abilities, so i try to bring it's defaults to override SVT-AV1 default settings, SVT-AV1-PSY conveniently lists it's changed defaults on their github page.
One of such parameters is enable-qm=1, which is off in mainline SVT-AV1 as of version 2.3.0 that available for use today. I just turn it on manually, to be compliant with PSY defaults.
Also, i noticed that when encoding with and without enable-qm=1:qm-min=0, size of the resulting encoded test sample didn't change much (no QM 7162KiB VS QM 7126KiB), but some of the aspects have slightly degraded in quality with QM enabled. Is that expected behavior?
For context, it was 3 minutes of gameplay downscaled to 360p using lanczos from 1080p source.
Here's the whole prompt of with/without QM (text in bold is removed for no QM config).
ffmpeg -i input.mp4 -t 00:03:00 -pix_fmt yuv420p10le -vf "scale=-1:360:flags=lanczos" -c:v libsvtav1 -svtav1-params keyint=15s:tune=2**:enable-qm=1:qm-min=0**:enable-variance-boost=1:lp=6 -preset 3 -crf 50 -an output**_noQM**.mkv
CPU: Intel i5 8400uname -a
:
6.1.0-29-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 (2025-01-02) x86_64 GNU/Linux
I recommend to use this only after it's patch, it help to make the video having more consistent details, it's like having the details stop being shifted and make it look like h264 compression, it's a really good features, I strongly recommend using it after the bug is fixed: https://github.com/psy-ex/svt-av1-psy/issues/117
Which image viewers for Windows support playing animated AVIF files, other than web browsers? What about Android apps?
So I was building 2.3.0, and since I hadn't used it in over a year, I wanted to try it on a few short videos.
Source materials are generally:
Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1080x1920 [SAR 1:1 DAR 9:16], 6129 kb/s, 23.98 fps, 23.98 tbr, 24k tbn (default)
Not sure if GPU encoded, but its is mostly 1080p with a fixed bitrate of 6000 kb/s.
I asked an LLM some default parameters that I then adjusted for my use :
parallel -j 1 --bar "mkdir -p out/(dirname {}) ; ffmpeg -y -i {} -c:v libsvtav1 -preset 4 -crf 28 -svtav1-params film-grain=0:enable-qm=1:enable-overlays=1:tune=0 -pix_fmt yuv420p10le -c:a libopus -b:a 192k out/(string replace -r '\\.[^.]*\$' '.webm' -- {})
The process was not that slow, 0.250x, around 6 frames per second on my laptop: AMD Ryzen 9 5900HS with Radeon Graphics (8 cores, 16 threads, 3.5 GHz when not overheating).
What surprised me the most was the results, a few videos have increased in size, but most were halved.
A 42 seconds video went from 6.000 mbps to 3.9 mbps ? From 33,228,938 bytes to 16,148,026 bytes?
((33_228_938 - 16_148_026)/33_228_938)*100
51.40372527102733
51% reduction? Static video of a dark night with fireworks in Vegas. I expected banding but no.
A 3:50 mn video went from 6.000 mbps to 2.324 mbps ? From 177,849,678 bytes to 63,924,451 bytes?
((177_849_678 - 63_934_451)/177_849_678)*100
64.0514103151764
64% reduction? The video is very static too, not much movement or action so it is a good candidate for compression. I'd need to try with a faster movie.
Nevertheless, this seemed suspicious, so I computed VMAF and al. with -lavfi libvmaf='model=version=vmaf_v0.6.1:log_path=20250101_0hx5z8bxjmx3i0zk0w5hq_source2.json:log_fmt=json:feature=name=cambi|name=psnr_hvs|name=ciede|name=float_ssim|name=float_ms_ssim'
:
"cambi": {
"min": 0.483634,
"max": 2.563413,
"mean": 1.019167,
"harmonic_mean": 0.991314
},
"psnr_hvs_y": {
"min": 43.100631,
"max": 52.838056,
"mean": 47.020209,
"harmonic_mean": 46.986024
},
"psnr_hvs_cb": {
"min": 39.963184,
"max": 52.419626,
"mean": 48.284781,
"harmonic_mean": 48.257279
},
"psnr_hvs_cr": {
"min": 38.438863,
"max": 52.364891,
"mean": 46.658104,
"harmonic_mean": 46.625581
},
"psnr_hvs": {
"min": 43.116828,
"max": 52.724945,
"mean": 47.076659,
"harmonic_mean": 47.045787
},
"ciede2000": {
"min": 41.955499,
"max": 51.686814,
"mean": 47.781980,
"harmonic_mean": 47.761121
},
"float_ssim": {
"min": 0.995532,
"max": 0.999311,
"mean": 0.997632,
"harmonic_mean": 0.997632
},
"float_ms_ssim": {
"min": 0.994679,
"max": 0.999015,
"mean": 0.997139,
"harmonic_mean": 0.997139
},
"vmaf": {
"min": 92.921360,
"max": 100.000000,
"mean": 96.003151,
"harmonic_mean": 95.986735
}
"cambi": {
"min": 0.002945,
"max": 0.580998,
"mean": 0.088782,
"harmonic_mean": 0.086792
},
"psnr_hvs_y": {
"min": 40.659271,
"max": 51.226098,
"mean": 44.279699,
"harmonic_mean": 44.236165
},
"psnr_hvs_cb": {
"min": 43.435119,
"max": 50.566870,
"mean": 46.282067,
"harmonic_mean": 46.266379
},
"psnr_hvs_cr": {
"min": 42.269972,
"max": 50.333730,
"mean": 45.414015,
"harmonic_mean": 45.394693
},
"psnr_hvs": {
"min": 41.126351,
"max": 51.059095,
"mean": 44.536908,
"harmonic_mean": 44.499755
},
"ciede2000": {
"min": 42.045218,
"max": 48.038874,
"mean": 44.769963,
"harmonic_mean": 44.755671
},
"float_ssim": {
"min": 0.990675,
"max": 0.998748,
"mean": 0.995702,
"harmonic_mean": 0.995701
},
"float_ms_ssim": {
"min": 0.991128,
"max": 0.998383,
"mean": 0.995739,
"harmonic_mean": 0.995739
},
"vmaf": {
"min": 90.016311,
"max": 100.000000,
"mean": 97.110377,
"harmonic_mean": 97.076109
}
This is reaching transparency. SVT-AV1 did become that good?!
I am kind of lost on this subject... It can't be as simple as --enabler-hdr... I have seen posts that suggest it isn't, and I haven't seen a lot of posts on encoding 4k HDR with SVT-AV1.
Can anybody point me at any materials or reading on this?
I was wondering if you could inbed AVIF as the main image type inside of a PDF, my cousin has manga that's 1 whole GB for a whole book, and even with a powerful CPU, the browser doesn't like to open it, it's quite slow. And just for a fun experiment, if it's possible to add AVIF images into a PDF
ffmpeg -i "cd.mp4" -c:v libaom-av1 -vf "tblend=all_mode=average,fps=ntsc" -row-mt true -refs 2 -threads 4 -cpu-used 3 -lag-in-frames 10 -tiles 1x2 -crf 25 -b:v 2500k -c:a copy output3.mkv
It doesn't make video seekable:
[matroska,webm] seek_frame_generic failed as this stream seems to contain no keyframes after the target timestamp, 1002 non keyframes found,
By default, libaom's maximum keyframe interval is 9999 frames. https://trac.ffmpeg.org/wiki/Encode/AV1
ffprobe output4.mkv -show_entries frame=pict_type
It shows only four I and rest is P type in 17 minute video - 31653 frames long. It clearly uses default max keyframe interval.
Why AOM encoder do not use I frame on scene cut? Looks like libaom-av1 preferred way of encoding is one I and rest of P (if encoder could).