Il mio primo test su strada con SVT-AV1
Indice dei contenuti
Al National Association of Broadcasters Show (NAB Show) 2019 di Las Vegas, Intel e Netflix hanno presentato il codec video open source SVT-AV1, acronimo di Scalable Video Technology for AV1.
Il codec è concepito per ottenere il miglior compromesso fra latenza, performance e qualità visiva rispetto alle attuale implementazioni AV1: libaom che non brilla certo in termini di performance.
Ma prima di partire; cos’è AV1?
AV1 è un codec video open source. È pensato per l’utilizzo in ambito web per fare in modo che piattaforme video o i produttori di dispositivi non paghino royalty alla Moving Picture Experts Group (MPEG), lo sviluppatore di codec come H.264 e HEVC (che sono utilizzati un po’ ovunque).
Il progetto vanta il supporto di tutti i più grandi player di settore:
Essendo nato con una forte vocazione al web (streaming), il suo obiettivo è quello di ottenere dei file video di piccole dimensioni poiché ciò permette un notevole risparmio di banda per la distribuzione di video su scala globale.
Test su strada #
Ho voluto provare velocemente quanto è più veloce rispetto all’implementazione di riferimento (liboam) tentando un encode di un due minuti di video alla risoluzione di 720x480 pixel:
Stream #0:0: Video: h264 (High), yuv420p(progressive), 720x480 [SAR 1:1 DAR 3:2], SAR 186:157 DAR 279:157, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
L’encode con libaom tarmite ffmpeg ha uno speedup (sulla mia macchina) dello 0.03x in media… Immaginate quanto può durare la codifica di un film!
Questo è il test con liboam:
$ ffmpeg -i SOURCE.mkv -c:v libaom-av1 -crf 34 -b:v 0 -pix_fmt yuv420p -strict experimental video.av1.mp4
Input #0, matroska,webm, from 'SOURCE.mkv':
... Output rimosso per chiarezza
Stream #0:0: Video: av1 (libaom-av1) (av01 / 0x31307661), yuv420p, 720x480 [SAR 186:157 DAR 279:157], q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc (default)
Metadata:
DURATION : 00:02:00.079000000
encoder : Lavc58.35.100 libaom-av1
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1(side), fltp, 394 kb/s (default)
Metadata:
DURATION : 00:02:00.000000000
encoder : Lavc58.35.100 aac
frame= 30 fps=0.7 q=0.0 size= 0kB time=00:00:01.25 bitrate= 0.6kbits/s dup=4 drop=0 speed=0.0309x
Inutile dire che ho interrotto prima che producesse l’output.
Invece questo è il test con SVT-AV1:
$ ffmpeg -i ~/Video/SOURCE.mkv -nostdin -f rawvideo -pix_fmt yuv420p - | ./SvtAv1EncApp -i stdin -n 3600 -w 720 -h 480 -b /home/hypertesto/Video/TEST.ivf
... [output rimosso] ...
SVT [version]: SVT-AV1 Encoder Lib v0.4.0
SVT [build] : GCC 7.4.0 64 bit
LIB Build date: May 6 2019 21:45:54
-------------------------------------------
Number of logical cores available: 8
Number of PPCS 72
-------------------------------------------
SVT [config]: Main Profile Tier (auto) Level (auto)
SVT [config]: EncoderMode : 8
SVT [config]: EncoderBitDepth / EncoderColorFormat / CompressedTenBitFormat : 8 / 1 / 0
SVT [config]: SourceWidth / SourceHeight : 720 / 480
SVT [config]: FrameRate / Gop Size : 30 / 32
SVT [config]: HierarchicalLevels / BaseLayerSwitchMode / PredStructure : 4 / 0 / 2
SVT [config]: BRC Mode / QP / LookaheadDistance / SceneChange : CQP / 50 / 33 / 0
-------------------------------------------
Encoding frame= 11 fps=0.0 q=-0.0 size= 5569kB time=00:00:00.36 bitrate=124291.5kbits/s dup=2 drop=0 spe 3frame= 76 fps= 72 q=-0.0 size= 38475kB time=00:00:02.53 bitrate=124291.6kbits/s dup=13 drop=0 speed=2.41x 15frame= 92 fps= 58 q=-0.0 size= 46575kB time=00:00:03.06 bitrate=124291.6kbits/s dup=16 drop=0 speed=1.92x
... [output rimosso] ...
video:1821994kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
4000
Average System Encoding Speed: 58.51
La velocità media è risultata 58.51fps, quindi poiché il video è a 30 fps lo speedup è di circa 1.9x. Niente male davvero!
Quello che è davvero notevole è la differenza di dimensione tra i due file:
$ ls -sh
26M /home/hypertesto/Video/SOURCE.mkv
3,0M /home/hypertesto/Video/TEST.ivf
Il video a una prima analisi con mpv presenta alcuni artefatti rispetto all’originale: stiamo sempre parlando di encoder e decoder del tutto sperimentali, perciò mi aspetto grandi miglioramenti già nell’immediato vista l’attenzione ricevuta recentemente da tutti i big del mondo video.