-
Notifications
You must be signed in to change notification settings - Fork 261
Open
Description
I got this avif image through this ffmpeg
[ayaya@arch-a380 avif压缩测试]$ find . -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.tif' \) -print0 | while IFS= read -r -d '' f; do out="${f%.*}.avif"; echo "Converting (Intel GPU): $f -> $out"; ffmpeg -nostdin -y -init_hw_device qsv=qsv:hw -filter_hw_device qsv -i "$f" -vf "format=p010,hwupload=extra_hw_frames=64" -c:v av1_qsv -global_quality 25 -preset medium "$out"; done
Converting (Intel GPU): ./neko.jpg -> ./neko.avif
ffmpeg version n8.0.1 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 15.2.1 (GCC) 20251112
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libdvdnav --enable-libdvdread --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan
libavutil 60. 8.100 / 60. 8.100
libavcodec 62. 11.100 / 62. 11.100
libavformat 62. 3.100 / 62. 3.100
libavdevice 62. 1.100 / 62. 1.100
libavfilter 11. 4.100 / 11. 4.100
libswscale 9. 1.100 / 9. 1.100
libswresample 6. 1.100 / 6. 1.100
Input #0, image2, from './neko.jpg':
Duration: 00:00:00.04, start: 0.000000, bitrate: 9547 kb/s
Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 1091x681 [SAR 72:72 DAR 1091:681], 25 fps, 25 tbr, 25 tbn
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg (native) -> av1 (av1_qsv))
[swscaler @ 0x7d70c81079c0] deprecated pixel format used, make sure you did set range correctly
Output #0, avif, to './neko.avif':
Metadata:
encoder : Lavf62.3.100
Stream #0:0: Video: av1 (av01 / 0x31307661), qsv(pc, bt470bg/unknown/unknown, progressive), 1091x681 [SAR 1:1 DAR 1091:681], q=2-31, 25 fps, 12800 tbn (default)
Metadata:
encoder : Lavc62.11.100 av1_qsv
[out#0/avif @ 0x5f54aed79cc0] video:42KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.654496%
frame= 1 fps=0.0 q=-0.0 Lsize= 42KiB time=00:00:00.00 bitrate=N/A speed= 0x elapsed=0:00:00.04
But the image can't be parsed by avifdec
❯ avifdec neko-gpu.avif test_gpu.png
Decoding with codec 'dav1d' (20 worker threads), please wait...
ERROR: Failed to parse image: Not implemented
Diagnostics:
* Box[pixi] contains unsupported plane count [0]
Images encoded with ffmpeg+svt-av1 can be parsed normally.
❯ find . -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.tif' \) -print0 |
while IFS= read -r -d '' f; do
out="${f%.*}.avif"
echo "Converting: $f -> $out"
ffmpeg -nostdin -y -i "$f" \
-c:v libsvtav1 -crf 30 -preset 6 \
-svtav1-params avif=1 -pix_fmt yuv420p10le -color_range pc \
"$out"
done
Converting: ./neko.jpg -> ./neko.avif
ffmpeg version n8.0.1 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 15.2.1 (GCC) 20251112
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libdvdnav --enable-libdvdread --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan
libavutil 60. 8.100 / 60. 8.100
libavcodec 62. 11.100 / 62. 11.100
libavformat 62. 3.100 / 62. 3.100
libavdevice 62. 1.100 / 62. 1.100
libavfilter 11. 4.100 / 11. 4.100
libswscale 9. 1.100 / 9. 1.100
libswresample 6. 1.100 / 6. 1.100
Input #0, image2, from './neko.jpg':
Duration: 00:00:00.04, start: 0.000000, bitrate: 9547 kb/s
Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 1091x681 [SAR 72:72 DAR 1091:681], 25 fps, 25 tbr, 25 tbn
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg (native) -> av1 (libsvtav1))
[swscaler @ 0x5586ec016ac0] deprecated pixel format used, make sure you did set range correctly
Svt[info]: -------------------------------------------
Svt[info]: SVT [version]: SVT-AV1 Encoder Lib v3.1.2-dirty
Svt[info]: SVT [build] : GCC 15.2.1 20250813 64 bit
Svt[info]: LIB Build date: Aug 28 2025 13:59:13
Svt[info]: -------------------------------------------
Svt[warn]: TPL is disabled for avif
Svt[info]: Level of Parallelism: 5
Svt[info]: Number of PPCS 2
Svt[info]: [asm level on system : up to avx2]
Svt[info]: [asm level selected : up to avx2]
Svt[info]: -------------------------------------------
Svt[info]: SVT [config]: main profile tier (auto) level (auto)
Svt[info]: SVT [config]: width / height / fps numerator / fps denominator : 1096 / 688 / 25 / 1
Svt[info]: SVT [config]: bit-depth / color format : 10 / YUV420
Svt[info]: SVT [config]: preset / tune / pred struct : 6 / PSNR / random access
Svt[info]: SVT [config]: gop size / mini-gop size / key-frame type : 161 / 32 / key frame
Svt[info]: SVT [config]: BRC mode / CQP Assignment : CQP / 30
Svt[info]: SVT [config]: AQ mode / Variance Boost : 2 / 0
Svt[info]: SVT [config]: sharpness / luminance-based QP bias : 0 / 0
Svt[info]: -------------------------------------------
SvtMalloc[info]: SVT Memory Usage:
SvtMalloc[info]: total allocated memory: 70.92 MB
SvtMalloc[info]: malloced memory: 22.30 MB
SvtMalloc[info]: callocated memory: 6.06 MB
SvtMalloc[info]: allocated aligned memory: 42.56 MB
SvtMalloc[info]: mutex count: 578
SvtMalloc[info]: semaphore count: 207
SvtMalloc[info]: thread count: 59
SvtMalloc[info]: hash table fulless: 0.002747, hash bucket is healthy
SvtMalloc[info]: top 10 malloced memory locations:
SvtMalloc[info]: (3.81 MB): /usr/src/debug/svt-av1/SVT-AV1/Source/Lib/Codec/bitstream_unit.c:36
SvtMalloc[info]: (2.90 MB): /usr/src/debug/svt-av1/SVT-AV1/Source/Lib/Codec/coding_unit.c:109
SvtMalloc[info]: (2.71 MB): /usr/src/debug/svt-av1/SVT-AV1/Source/Lib/Codec/pcs.c:1088
SvtMalloc[info]: (1.98 MB): /usr/src/debug/svt-av1/SVT-AV1/Source/Lib/Codec/md_process.c:264
SvtMalloc[info]: (1.24 MB): /usr/src/debug/svt-av1/SVT-AV1/Source/Lib/Codec/md_process.c:307
SvtMalloc[info]: (1.24 MB): /usr/src/debug/svt-av1/SVT-AV1/Source/Lib/Codec/md_process.c:306
SvtMalloc[info]: (915.33 KB): /usr/src/debug/svt-av1/SVT-AV1/Source/Lib/Codec/md_process.c:348
SvtMalloc[info]: (830.06 KB): /usr/src/debug/svt-av1/SVT-AV1/Source/Lib/Codec/pcs.c:577
SvtMalloc[info]: (636.75 KB): /usr/src/debug/svt-av1/SVT-AV1/Source/Lib/Codec/md_process.c:310
SvtMalloc[info]: (636.75 KB): /usr/src/debug/svt-av1/SVT-AV1/Source/Lib/Codec/md_process.c:311
Output #0, avif, to './neko.avif':
Metadata:
encoder : Lavf62.3.100
Stream #0:0: Video: av1 (av01 / 0x31307661), yuv420p10le(pc, bt470bg/unknown/unknown, progressive), 1091x681 [SAR 1:1 DAR 1091:681], q=2-31, 25 fps, 12800 tbn (default)
Metadata:
encoder : Lavc62.11.100 libsvtav1
[out#0/avif @ 0x55872e0e7b40] video:15KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 1.850181%
frame= 1 fps=0.0 q=30.0 Lsize= 15KiB time=00:00:00.00 bitrate=N/A speed= 0x elapsed=0:00:00.36
SvtMalloc[info]: you have no memory leak
❯ avifdec neko-cpu.avif test_gpu.png
Decoding with codec 'dav1d' (20 worker threads), please wait...
Image decoded: neko-cpu.avif
* Resolution : 1091x681
* Bit Depth : 10
* Format : YUV420
* Chroma Sam. Pos: 0
* Alpha : Absent
* Range : Full
* Color Primaries: 2
* Transfer Char. : 2
* Matrix Coeffs. : 5
* ICC Profile : Absent
* XMP Metadata : Absent
* Exif Metadata : Absent
* Transformations: None
* Progressive : Unavailable
* Gain map : Absent
* 1 timescales per second, 1.00 seconds (1 timescales), 1 frame
* Frame:
* Decoded frame [0] [pts 0.00 (0 timescales)] [duration 1.00 (1 timescales)] [1091x681]
Wrote PNG: test_gpu.png
The test files are as follows
avif压缩测试.zip
Metadata
Metadata
Assignees
Labels
No labels