OpenVisualCloud / SVT-VP9

SVT VP9 encoder. Scalable Video Technology (SVT) is a software-based video coding technology that is highly optimized for Intel® Xeon® processors. Using the open source SVT-VP9 encoder, it is possible to spread video encoding processing across multiple Intel® Xeon® processors to achieve a real advantage of processing efficiency.
Other
215 stars 46 forks source link

Artifact in a single frame, not reproduced on a second run #174

Open davidebeatrici opened 2 months ago

davidebeatrici commented 2 months ago

Look at the green boxes at the right of the "CUSCINI" sign:

Command used:

ffmpeg -i vid.mp4 -c:v libsvt_vp9 -b:v 0 -preset 5 -qp 42 vid.webm

Executing the command again in the exact same environment results in a flawless video with a different hash:

068bcee035b650ecac9dc6d6c1108baa6c38e71732701d86c2c09c54b2e0da8d  vid_artifact.webm
82841f2b568218a60df9c25e7fb64a8e39171ceb2a9226ad798208f5aaceef72  vid_flawless.webm
ffprobe info Artifact: ``` Duration: 00:00:20.40, start: -0.007000, bitrate: 70381 kb/s Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, unknown/bt709/bt709, progressive), 3840x2160, SAR 1:1 DAR 16:9, 60 fps, 60 tbr, 1k tbn (default) Metadata: HANDLER_NAME : VideoHandle VENDOR_ID : [0][0][0][0] ENCODER : Lavc60.31.102 libsvt_vp9 DURATION : 00:00:20.400000000 Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default) Metadata: HANDLER_NAME : SoundHandle VENDOR_ID : [0][0][0][0] ENCODER : Lavc60.31.102 libopus DURATION : 00:00:20.375000000 ``` Flawless: ``` Duration: 00:00:20.40, start: -0.007000, bitrate: 70381 kb/s Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, unknown/bt709/bt709, progressive), 3840x2160, SAR 1:1 DAR 16:9, 60 fps, 60 tbr, 1k tbn (default) Metadata: HANDLER_NAME : VideoHandle VENDOR_ID : [0][0][0][0] ENCODER : Lavc60.31.102 libsvt_vp9 DURATION : 00:00:20.400000000 Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default) Metadata: HANDLER_NAME : SoundHandle VENDOR_ID : [0][0][0][0] ENCODER : Lavc60.31.102 libopus DURATION : 00:00:20.375000000 ```

I fear there might be a race condition somewhere, considering the machine has 16 threads.

Files can be found here: https://kdrive.infomaniak.com/app/share/320976/2a25f184-1111-4587-8402-d23311e45a05

davidebeatrici commented 2 months ago

A third run revealed the exact same issue:

mrp1no commented 2 months ago

Ciao, ma che tu sappia sto encoder è morto? Gli ultimi issue sono solo nostri e nessuno ci risponde (forse perché siamo entrambi italiani lol) Anche io ho un problema di artefatti ma solo in fase di riproduzione da Chromecast, e tra l'altro variano ogni volta, in alcuni casi anche in pausa. So che è diverso e mi scuso per lo spam... volevo solo salutare perché mi ha fatto sorridere vedere che l'unico altro utente che attualmente scrive qua sia anch'esso italiano ;) Detto questo torno a libvpx, vista la totale assenza di supporto

davidebeatrici commented 2 months ago

Ciao, la patch per ffmpeg viene aggiornata in continuazione, quindi l'attività c'è.

Secondo me gli sviluppatori si stanno concentrando principalmente su SVT-AV1, anche perché il supporto è già incluso in ffmpeg.

libvpx è sicuramente più maturo essendo l'encoder di riferimento, però la sua velocità di esecuzione è a dir poco straziante...

Interessante il problema che riscontri; se ho capito bene, i video codificati con SVT-VP9 mostrano artefatti ma solo quando riprodotti su Chromecast?

mrp1no commented 2 months ago

Fanno bene a concentrarsi su AV1, che purtroppo però non è ancora utilizzabile su larga scala, data la compatibilità ristretta. Inoltre i PC non nuovi faticano molto nella decodifica, e molti addirittura soffrono di pesanti lag (soprattutto i portatili di fascia medio-bassa). Forse Netflix e Amazon si possono permettere di convertire i video ANCHE in AV1 (oltre che in H264, H265, ecc.), ma i comuni mortali con limiti concreti di storage certamente no... Comunque sì, i video codificati con SVT-VP9 riportano artefatti solo tramite Google Cast su dispositivi Chromecast. Immagino sia dovuto alla mancanza di informazioni sullo spazio colore, dato che sono riuscito a inserirle solo parzialmente (senza inserirle affatto non parte la riproduzione) per via della mancanza di -colorspace