FFmpeg: 3× gyorsabb FFV1 Vulkan-dekódolás AMD GPU-kon

Az FFmpeg fejlesztői újabb előrelépést tettek a nyílt forráskódú videófeldolgozásban: az FFV1 veszteségmentes videóformátum Vulkan-alapú dekódolója mostantól akár háromszor gyorsabban működik AMD grafikus kártyákon.

Bővebben:

AMD Radeon logó
AMD Radeon logó

Az FFmpeg fejlesztői újabb előrelépést tettek a nyílt forráskódú videófeldolgozásban: az FFV1 veszteségmentes videóformátum Vulkan-alapú dekódolója mostantól akár háromszor gyorsabban működik AMD grafikus kártyákon.

Bővebben:

A javításokat Lynne, az FFmpeg egyik fejlesztője vitte véghez, aki korábban is számos Vulkan Video technológián dolgozott a projektben. A mostani fejlesztésben nemcsak AMD GPU-khoz érkeztek optimalizálások, hanem már az Intel hardverek támogatása is megkezdődött.

A fejlesztés lényege röviden az, hogy AMD GPU-kon a Vulkan-dekóder most már hatékonyabban gyorsítótárazza a feldolgozandó adatokat, így jelentősen csökken a feldolgozási idő.

Mi az az FFV1?

Az FFV1 egy veszteségmentes videókódoló, amelyet főként archiválási célokra használnak, például filmfelvételek, VHS anyagok, digitalizált szalagok hosszú távú tárolására. A formátum az FFmpeg része, és gyakran együtt használják Matroska konténerrel (MKV) és FLAC hanggal.

Bár nem ez a formátum kerül a YouTube-ra, de az archívumok és videotechnikai profik körében nagyon hasznos formátum: nyílt, megbízható és hosszú távon is visszafejthető.

Fő jellemzők

  • Veszteségmentes tömörítés: a dekódolt videó bitről bitre megegyezik az eredetivel.
  • Intra-frame kodek: Csak a képkockákon belül tömörít, tehát nincs inter-frame kompresszió, így minden frame különálló egység. Ez gyors előnézetet, keresést és szerkesztést tesz lehetővé.
  • Nyílt forráskódú és dokumentált formátum, tehát hosszú távú archiválásra alkalmas.
  • Konténerek: általában Matroska (MKV) vagy AVI konténerben használják, de a Matroska az ajánlott.
  • Támogatja a színtereket, például YUV 4:2:0, 4:2:2, 4:4:4, RGB.
  • Tartalmaz hibadetektáló és -javító lehetőségeket (pl. CRC, parity), ami ritka videoformátumoknál.
  • Lehetséges a többszálú kódolás és dekódolás is.

Miért érdekes ez otthon?

Ha digitális videóarchívumot szeretnél készíteni (pl. családi felvételek VHS-ről), az FFV1 most már sokkal hatékonyabban dekódolható AMD Radeon kártyákon is — és ehhez nem kell több, mint egy friss FFmpeg és egy kompatibilis Vulkan-driver.

Azonban ne ugorj neki az összes videód átkonvertálásának: az FFV1 formátum lényege a veszteségmentesség, így a meglévő H.264/H.265-ös videóid átkonvertálása esetén a minőség nem javul, a szükséges tárhely viszont sokszorozódik.

Hogyan kódolj FFV1 formátumba?

A legegyszerűbben természetesen FFmpeg segítségével lehet.

ffmpeg -i bemenet.mp4 -c:v ffv1 -level 3 -g 1 -c:a flac kimenet.mkv

Nézzük, mit is csinál mindez:

  • -c:v ffv1: az FFV1 kodeket használja a videóhoz
  • -level 3: az FFV1 legfejlettebb verziója
  • -g 1: minden képkocka kulcskocka (jobb archiváláshoz)
  • -c:a flac: veszteségmentes FLAC hang
  • kimenet.mkv: Matroska (MKV) konténer — ideális FFV1-hez

Nézzük meg gyakorlati példán keresztül is, konvertáljuk át a Blender projekt Sintel című filmének előzetesét:

wget https://download.blender.org/durian/trailer/sintel_trailer-720p.mp4
fmpeg -i sintel_trailer-720p.mp4 -c:v ffv1 -level 3 -g 1 -c:a flac kimenet.mkv

Nem véletlenül beszéltem sokszorozódó tárhelyigényről:

ls -lh
összesen 150M
-rw-rw-r-- 1 lacyc3 lacyc3 142M ápr   16 20:30 kimenet.mkv
-rw-rw-r-- 1 lacyc3 lacyc3 7,3M máj   12  2010 sintel_trailer-720p.mp4

Forrás: https://www.phoronix.com/news/FFmpeg-FFV1-Vulkan-AMD-3x