MPV e perdita sincronia audio/video

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3790
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

MPV e perdita sincronia audio/video

Messaggio da joe »

Mi sono accorto con un paio di video che ad un certo punto l'audio non corrisponde più, sembra che le immagini restino indietro. Con alcuni altri video, forse di inferiore risoluzione non mi sono accorto del problema. La cosa si tampona andando avanti di un paio di secondi e poi tornando di nuovo indietro, con le frecce sx e dx, o anche in ordine inverso... Ovviamente non è una soluzione perché dopo alcuni secondi si è punto e a capo di nuovo col video in ritardo sull'audio.

Esempio pratico:

Codice: Seleziona tutto

yt-dlp -f 299+140 https://www.youtube.com/watch?v=wPAE9-DdMtI
È un tutorial introduttivo su git.
il formato video e audio appaiati fanno riferimento a questi disponibili:

Codice: Seleziona tutto

ID  EXT   RESOLUTION FPS │   FILESIZE  TBR PROTO │ VCODEC       VBR ACODEC      ABR     ASR MORE INFO
──────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb2 mhtml 48x27          │                 mhtml │ images                                   storyboard
sb1 mhtml 80x45          │                 mhtml │ images                                   storyboard
sb0 mhtml 160x90         │                 mhtml │ images                                   storyboard
139 m4a   audio only     │   18.51MiB  48k https │ audio only       mp4a.40.5   48k 22050Hz low, m4a_dash
249 webm  audio only     │   19.18MiB  50k https │ audio only       opus        50k 48000Hz low, webm_dash
250 webm  audio only     │   27.49MiB  72k https │ audio only       opus        72k 48000Hz low, webm_dash
140 m4a   audio only     │   49.11MiB 129k https │ audio only       mp4a.40.2  129k 44100Hz medium, m4a_dash
251 webm  audio only     │   51.63MiB 136k https │ audio only       opus       136k 48000Hz medium, webm_dash
17  3gp   176x144      8 │   16.92MiB  44k https │ mp4v.20.3    44k mp4a.40.2    0k 22050Hz 144p
160 mp4   256x144     30 │    7.48MiB  19k https │ avc1.4d400c  19k video only              144p, mp4_dash
278 webm  256x144     30 │    8.53MiB  22k https │ vp9          22k video only              144p, webm_dash
133 mp4   426x240     30 │   13.70MiB  36k https │ avc1.4d4015  36k video only              240p, mp4_dash
242 webm  426x240     30 │   12.16MiB  32k https │ vp9          32k video only              240p, webm_dash
134 mp4   640x360     30 │   23.38MiB  61k https │ avc1.4d401e  61k video only              360p, mp4_dash
18  mp4   640x360     30 │   59.25MiB 156k https │ avc1.42001E 156k mp4a.40.2    0k 44100Hz 360p
243 webm  640x360     30 │   19.71MiB  51k https │ vp9          51k video only              360p, webm_dash
135 mp4   854x480     30 │   36.60MiB  96k https │ avc1.4d401f  96k video only              480p, mp4_dash
244 webm  854x480     30 │   30.42MiB  80k https │ vp9          80k video only              480p, webm_dash
22  mp4   1280x720    30 │ ~116.02MiB 298k https │ avc1.64001F 298k mp4a.40.2    0k 44100Hz 720p
136 mp4   1280x720    30 │   64.63MiB 170k https │ avc1.64001f 170k video only              720p, mp4_dash
247 webm  1280x720    30 │   54.81MiB 144k https │ vp9         144k video only              720p, webm_dash
298 mp4   1280x720    60 │   70.15MiB 184k https │ avc1.640020 184k video only              720p60, mp4_dash
302 webm  1280x720    60 │   64.63MiB 170k https │ vp9         170k video only              720p60, webm_dash
299 mp4   1920x1080   60 │  113.16MiB 298k https │ avc1.64002a 298k video only              1080p60, mp4_dash
303 webm  1920x1080   60 │   93.85MiB 247k https │ vp9         247k video only              1080p60, webm_dash
I formati che ho scelto io sono quindi i seguenti, in particolare il video è a 1080p e dovrebbe andare d'accordo con la mia scheda video da poco usando VDPAU.

Codice: Seleziona tutto

140 m4a   audio only     │   49.11MiB 129k https │ audio only       mp4a.40.2  129k 44100Hz medium, m4a_dash
299 mp4   1920x1080   60 │  113.16MiB 298k https │ avc1.64002a 298k video only              1080p60, mp4_dash
Metto anche la configurazione di MPV:

Codice: Seleziona tutto

$ grep -v "^#\|^$" ~/.config/mpv/mpv.conf
player-operation-mode=pseudo-gui
vo=gpu
video-sync=display-resample
hwdec=auto
cache=yes
cache-dir=~/.cache/mpv
cache-on-disk=yes
ytdl-format=(bestvideo[height <= 1080][vcodec ^= ?avc]+bestaudio)/best
idle=yes
volume=10
script-opts=ytdl_hook-ytdl_path=yt-dlp
gpu-context=auto
In particolare avevo provato ad aggiungere la voce, da qualche ricerca in rete, mi sembrava d'aver capito che potesse aiutare a tenere in sincrono audio e video:

Codice: Seleziona tutto

video-sync=display-resample
Dalle prove che ho fatto non aiuta granché.

Proverò anche a tirare giù una versione di qualità più bassa tanto per fare una prova del nove. Il PC è un vecchio cassone core 2 duo e la GPU è una nvidia GT210.
Niente, se aveste qualche consiglio o idea, sia per capire quale sia il problema e sia per vedere se riesco a risolvere in qualche modo.
Grazie in anticipo! :)

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: MPV e perdita sincronia audio/video

Messaggio da rik70 »

joe ha scritto:
lun 23 mag 2022, 17:11

Codice: Seleziona tutto

ytdl-format=(bestvideo[height <= 1080][vcodec ^= ?avc]+bestaudio)/best
In quel modo però mpv prende l' audio opus|webm. Non so se sia lì il problema, ma credo che 'combinato' col formato video avc1 non sia ottimale.

Proverei con una cosa tipo

Codice: Seleziona tutto

ytdl-format="bestvideo[ext=mp4]+bestaudio[ext=m4a]/best"
o vedi tu la stringa migliore per pescare l'audio in formato 'm4a'.

Se non va neanche così, prova a disattivare la cache su disco - ma dubito che sia lì la questione.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3790
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: MPV e perdita sincronia audio/video

Messaggio da joe »

Spetta però, se scarichi i due flussi specificando il formato così:

Codice: Seleziona tutto

yt-dlp -f 299+140
l'impostazione del config viene bypassata. Il file che viene scaricato (non riprodotto via URL da MVP) avrà video di ID 299 e audio 140 (140 m4a audio only │ 49.11MiB 129k https │ audio only mp4a.40.2 129k 44100Hz medium, m4a_dash).

A quel punto hai il file audio-video in locale già fuso in mp4 con video in mp4_dash e audio in m4a_dash.
Siccome il problema persiste anche riproducendo questo file ormai locale, l'impostazione in config di yt-dlp non può più intervenire e quindi non può essere lei il problema.

Per la cronaca scaricando la versione di ID "22":

Codice: Seleziona tutto

22  mp4   1280x720    30 │ ~116.02MiB 298k https │ avc1.64001F 298k mp4a.40.2    0k 44100Hz 720p
il rallentamento del video sull'audio non si ha.

Può essere quindi qualche problema nella "fusione" dei due flussi audio e video che se non sbaglio yt-dlp fa via ffmpeg.
Oppure più banalmente la risoluzione 1080p che affatica il mio hardware o la sua configurazione in qualche modo.
Ora che ci penso, dovrei qualche verifica con qualche video in 1080, ma mi sa tanto che il problema non lo avessi rilevato riproducendo qualche video di quella risoluzione.

Altro punto potrebbe essere il fatto che i flussi problematici sono mp4_dash e non semplici mp4, ma non so se c'entra o se sia solo un contenitore di "streaming" e che una volta scaricato il file non dovrebbe più dar problemi.

Ad ogni modo sicuramente il problema non è l'opzione che riportavi, sebbene il suggerimento che dicevi può avere un senso nel caso di visione senza scaricamento preliminare del video.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3790
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: MPV e perdita sincronia audio/video

Messaggio da joe »

Ho fatto un'altra prova con un altro video preso da qui:
https://senkorasic.com/testmedia/
https://s3.amazonaws.com/senkorasic.com ... _1080p.mp4

Codice: Seleziona tutto

$ ffmpeg -hide_banner -i caminandes_llamigos_1080p.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'caminandes_llamigos_1080p.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.36.100
  Duration: 00:02:30.13, start: 0.000000, bitrate: 10680 kb/s
  Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 10424 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 255 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
At least one output file must be specified
Questo viene riprodotto senza ritardo audio video da MPV, forse per via del FPS più basso... 24 contro 60 dell'altro? Non ne ho idea per ignoranza..

Il file ritardato preso da youtube invece aveva questi dettagli:

Codice: Seleziona tutto

$ ffmpeg -hide_banner -i Corso\ introduttivo\ GIT\ per\ principianti\ -\ Git\ Tutorial\ Italiano\ \[wPAE9-DdMtI\].mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Corso introduttivo GIT per principianti - Git Tutorial Italiano [wPAE9-DdMtI].mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.76.100
  Duration: 00:53:01.92, start: 0.000000, bitrate: 431 kb/s
  Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 292 kb/s, 60 fps, 60 tbr, 15360 tbn, 120 tbc (default)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc.
      vendor_id       : [0][0][0][0]
  Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc.
      vendor_id       : [0][0][0][0]
Ho fatto anche un'altra prova:
ho provato a riprodurre entrambi i video con "ffplay". Ebbene il ritardo audio è sparito da entrambi. Quindi è un problema legato a qualche impostazione di MPV... e ho un certo sospetto che si tratti del coinvolgimento della scheda audio nell'impostazione di mpv (vo=gpu, hwdec=auto, in questo modo mpv imposta automaticamente hwdec ---> "vdapu", il ché dovrebbe anche essere giusto in teoria, nella pratica ha la conseguenza di far restare la CPU a 5 / 10% del carico).
Lanciando invece ffplay, il carico sulla CPU se ne va bellamente al 70% e oltre. Però resta tutto in sync con un bel "A-V: 0" (lo ottengo nella schermata del video, nella pseudoGUI premendo "I", "i maiuscola").

La stessa cosa si deve poter ottenere con MPV e infatti è sufficiente lanciarlo con --no-config

Codice: Seleziona tutto

$ mpv --volume=5 --no-config  Corso\ introduttivo\ GIT\ per\ principianti\ -\ Git\ Tutorial\ Italiano\ \[wPAE9-DdMtI\].mp4
 (+) Video --vid=1 (*) (h264 1920x1080 60.000fps)
 (+) Audio --aid=1 --alang=eng (*) (aac 2ch 44100Hz)
AO: [pulse] 44100Hz stereo 2ch float
VO: [gpu] 1920x1080 yuv420p
AV: 00:00:30 / 00:53:01 (1%) A-V:  0.000 Dropped: 7

Exiting... (Quit)
Quindi, così dopo 30 secondi di playback non si hanno problemi di sincronia ma fa tutto la CPU credo. Almeno dal carico sembrerebbe coinvolta parecchio, sfiora stabilmente l'80%.
Invece se aggiungo "--hwdec=auto" ecco cosa salta fuori ):

Codice: Seleziona tutto

$ mpv --volume=5 --no-config -hwdec=auto Corso\ introduttivo\ GIT\ per\ principianti\ -\ Git\ Tutorial\ Italiano\ \[wPAE9-DdMtI\].mp4
 (+) Video --vid=1 (*) (h264 1920x1080 60.000fps)
 (+) Audio --aid=1 --alang=eng (*) (aac 2ch 44100Hz)
Using hardware decoding (vdpau).
AO: [pulse] 44100Hz stereo 2ch float
VO: [gpu] 1920x1080 vdpau[yuv420p]
AV: 00:00:05 / 00:53:01 (0%) A-V:  0.495 Dropped: 245

Audio/Video desynchronisation detected! Possible reasons include too slow
hardware, temporary CPU spikes, broken drivers, and broken files. Audio
position will not match to the video (see A-V status field).

AV: 00:00:31 / 00:53:01 (1%) A-V:  1.442 Dropped: 1562

Exiting... (Quit)
Notate la riga in più: "Using hardware decoding (vdpau)".
Già dopo 5-7 secondi esce quel warning sulla sincronia audio video.
Poi ci sono un casino di dropped frames e sorattuto A-V si setta su un secondo e mezzo di ritardo.

Idee benaccette!
Sempre che sia possibile farci qualcosa e non sia un limite hardware della scheda video (ripeto GPU nvidia GT210)

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: MPV e perdita sincronia audio/video

Messaggio da rik70 »

Fai la prova con altri video del 'tubo' a 60 fps.

Tipo uno di questi.

Parti da una configurazione 'pulita' di mpv, con attivi la sola decodifica hardware e i 'filtri' per selezionare il formato mp4.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3790
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: MPV e perdita sincronia audio/video

Messaggio da joe »

Partiamo dal primo, quello dell'uomo ragno:

Codice: Seleziona tutto

$ yt-dlp -F 'https://www.youtube.com/watch?v=MUxHmvWYqFQ'
[youtube] MUxHmvWYqFQ: Downloading webpage
[youtube] MUxHmvWYqFQ: Downloading android player API JSON
[youtube] MUxHmvWYqFQ: Downloading player c5a4daa1
[info] Available formats for MUxHmvWYqFQ:
ID  EXT   RESOLUTION FPS │    FILESIZE    TBR PROTO │ VCODEC         VBR ACODEC      ABR     ASR MORE INFO
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb2 mhtml 48x27          │                    mhtml │ images                                     storyboard
sb1 mhtml 80x45          │                    mhtml │ images                                     storyboard
sb0 mhtml 160x90         │                    mhtml │ images                                     storyboard
139 m4a   audio only     │  1010.31KiB    48k https │ audio only         mp4a.40.5   48k 22050Hz low, m4a_dash
249 webm  audio only     │   956.31KiB    46k https │ audio only         opus        46k 48000Hz low, webm_dash
250 webm  audio only     │     1.22MiB    60k https │ audio only         opus        60k 48000Hz low, webm_dash
140 m4a   audio only     │     2.62MiB   129k https │ audio only         mp4a.40.2  129k 44100Hz medium, m4a_dash
251 webm  audio only     │     2.43MiB   120k https │ audio only         opus       120k 48000Hz medium, webm_dash
17  3gp   176x144      7 │     1.61MiB    79k https │ mp4v.20.3      79k mp4a.40.2    0k 22050Hz 144p
160 mp4   256x144     30 │     1.28MiB    63k https │ avc1.4d400c    63k video only              144p, mp4_dash
278 webm  256x144     30 │     1.59MiB    78k https │ vp9            78k video only              144p, webm_dash
133 mp4   426x240     30 │     2.68MiB   132k https │ avc1.4d4015   132k video only              240p, mp4_dash
242 webm  426x240     30 │     3.03MiB   149k https │ vp9           149k video only              240p, webm_dash
134 mp4   640x360     30 │     4.99MiB   246k https │ avc1.4d401e   246k video only              360p, mp4_dash
18  mp4   640x360     30 │    11.32MiB   560k https │ avc1.42001E   560k mp4a.40.2    0k 44100Hz 360p
243 webm  640x360     30 │     6.27MiB   310k https │ vp9           310k video only              360p, webm_dash
135 mp4   854x480     30 │     8.08MiB   400k https │ avc1.4d401f   400k video only              480p, mp4_dash
244 webm  854x480     30 │    10.98MiB   543k https │ vp9           543k video only              480p, webm_dash
22  mp4   1280x720    30 │ ~  26.69MiB  1293k https │ avc1.64001F  1293k mp4a.40.2    0k 44100Hz 720p
136 mp4   1280x720    30 │    23.52MiB  1164k https │ avc1.4d401f  1164k video only              720p, mp4_dash
247 webm  1280x720    30 │    20.90MiB  1034k https │ vp9          1034k video only              720p, webm_dash
298 mp4   1280x720    60 │    39.32MiB  1946k https │ avc1.4d4020  1946k video only              720p60, mp4_dash
302 webm  1280x720    60 │    32.40MiB  1604k https │ vp9          1604k video only              720p60, webm_dash
299 mp4   1920x1080   60 │    70.26MiB  3478k https │ avc1.64002a  3478k video only              1080p60, mp4_dash
303 webm  1920x1080   60 │    56.63MiB  2803k https │ vp9          2803k video only              1080p60, webm_dash
308 webm  2560x1440   60 │   144.78MiB  7167k https │ vp9          7167k video only              1440p60, webm_dash
315 webm  3840x2160   60 │   388.07MiB 19213k https │ vp9         19213k video only              2160p60, webm_dash
Allora, come flusso video scegliamo il "299" ovvero mp4_dash 1920x1080 in avc1.64002a e 60 fps. Come audio va bene il "140", quindi m4a_dash a 129k. Per il video non vado oltre il 1080 perché la scheda non ce la fa mi sembra di ricordare e in più non ho neanche uno schermo in 4k quindi l'utilità è poca alla fine... sì sarebbe comunque utile se non ci fosse modo di limitare mpv/yt-dlp nella scelta del formato video, ma almeno sul tubo il filtro automatico funziona.
Come dicevo comunque, in questo topic il problema non è tanto filtrare il formato giusto, ma riprodurre il video nel formato 1080p in modo da sfruttare l'accelerazione hardware della scheda e al tempo stesso verificare che non vi siano problemi di playback come la sincronia audio video non riuscita. C'è da dire che vista la pochezza della scheda video non mi stupirei se il "1080p60" non riuscisse proprio a reggerlo.

Ad ogni modo scarico col seguente comando ed eccoci:

Codice: Seleziona tutto

$ yt-dlp -f 299+140 'https://www.youtube.com/watch?v=MUxHmvWYqFQ'
[youtube] MUxHmvWYqFQ: Downloading webpage
[youtube] MUxHmvWYqFQ: Downloading android player API JSON
[info] MUxHmvWYqFQ: Downloading 1 format(s): 299+140
[download] Destination: SPIDER-MAN - NO WAY HOME - Official Teaser Trailer (4K ULTRA HD 60FPS) NEW 2021 [MUxHmvWYqFQ].f299.mp4
[download] 100% of 70.26MiB in 00:37
[download] Destination: SPIDER-MAN - NO WAY HOME - Official Teaser Trailer (4K ULTRA HD 60FPS) NEW 2021 [MUxHmvWYqFQ].f140.m4a
[download] 100% of 2.62MiB in 00:02
[Merger] Merging formats into "SPIDER-MAN - NO WAY HOME - Official Teaser Trailer (4K ULTRA HD 60FPS) NEW 2021 [MUxHmvWYqFQ].mp4"
Deleting original file SPIDER-MAN - NO WAY HOME - Official Teaser Trailer (4K ULTRA HD 60FPS) NEW 2021 [MUxHmvWYqFQ].f299.mp4 (pass -k to keep)
Deleting original file SPIDER-MAN - NO WAY HOME - Official Teaser Trailer (4K ULTRA HD 60FPS) NEW 2021 [MUxHmvWYqFQ].f140.m4a (pass -k to keep)
Ok, ora che il file è in locale già composto coi due flussi audio e video ecc. Ecco quali sono le caratteristiche delle due tracce:

Codice: Seleziona tutto

$ ffmpeg -hide_banner -i SPIDER-MAN\ -\ NO\ WAY\ HOME\ -\ Official\ Teaser\ Trailer\ \(4K\ ULTRA\ HD\ 60FPS\)\ NEW\ 2021\ \[MUxHmvWYqFQ\].mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'SPIDER-MAN - NO WAY HOME - Official Teaser Trailer (4K ULTRA HD 60FPS) NEW 2021 [MUxHmvWYqFQ].mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.76.100
  Duration: 00:02:49.48, start: 0.000000, bitrate: 3611 kb/s
  Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 1920x1080 [SAR 1:1 DAR 16:9], 3472 kb/s, 60 fps, 60 tbr, 15360 tbn, 120 tbc (default)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc.
      vendor_id       : [0][0][0][0]
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc.
      vendor_id       : [0][0][0][0]
At least one output file must be specified
In particolare il video

Codice: Seleziona tutto

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 1920x1080 [SAR 1:1 DAR 16:9], 3472 kb/s, 60 fps, 60 tbr, 15360 tbn, 120 tbc (default)
Ok e ora provo con MPV come sopra.
Prima usando l'accelerazione hardware (hwdec=auto):

Codice: Seleziona tutto

$ mpv --no-config -hwdec=auto SPIDER-MAN\ -\ NO\ WAY\ HOME\ -\ Official\ Teaser\ Trailer\ \(4K\ ULTRA\ HD\ 60FPS\)\ NEW\ 2021\ \[MUxHmvWYqFQ\].mp4
 (+) Video --vid=1 (*) (h264 1920x1080 60.000fps)
 (+) Audio --aid=1 (*) (aac 2ch 44100Hz)
Using hardware decoding (vdpau).
AO: [pulse] 44100Hz stereo 2ch float
VO: [gpu] 1920x1080 vdpau[yuv420p]
AV: 00:02:45 / 00:02:49 (97%) A-V:  0.223 Dropped: 5402

Exiting... (Quit)
In questo caso a quanto pare non saltano fuori eccessivi e vistosi problemi di sincronia A-V.
Ci sono però un sacco di Dropped Frames, azzardo da ignorante... necessari forse proprio per mantenere in sincrono l'audio e il video?
Del tipo: il video non riesce a stare dietro all'audio dovendo riprodurre 60 frames al secondo, allora "compensa" buttando via un po' di frames dando così la priorità alla sincronia A-V.
Ora in termini pratici, lì ha buttato via 5402 frames in poco meno di 3 minuti di video.
La visione è passabile, ma sempre da ignorante i frames persi e qualche sentore di rallentamento o scatti qua e là si percepisce, non è bella fluida come tanto per dire una trasmissione in HD che si vede su una tv.
Riguardo la cpu, sta sotto al 5% avendo cura di chiudere tutte le schede di firefox tranne quella in cui sto scrivendo qui su slacky, questo vuol dire che effettivamente il carico viene affidato in toto alla GPU.

Se infine provo a lanciare mpv senza -hwdec=auto, dovrebbe riprodurre il video senza accelerazione hardware:

Codice: Seleziona tutto

$ mpv --no-config SPIDER-MAN\ -\ NO\ WAY\ HOME\ -\ Official\ Teaser\ Trailer\ \(4K\ ULTRA\ HD\ 60FPS\)\ NEW\ 2021\ \[MUxHmvWYqFQ\].mp4
 (+) Video --vid=1 (*) (h264 1920x1080 60.000fps)
 (+) Audio --aid=1 (*) (aac 2ch 44100Hz)
AO: [pulse] 44100Hz stereo 2ch float
VO: [gpu] 1920x1080 yuv420p
AV: 00:02:49 / 00:02:49 (100%) A-V:  0.000 Dropped: 154

Exiting... (End of file)
Infatti questa volta la CPU mostra un carico dal 70 all'80%, quindi in pratica fa quasi tutto il processore.
A pelle però si avverte subito una maggiore fluidità del video e guardando i dati qui sopra si vede che la sincronia è ben migliore di prima, e in più i frames buttati sono veramente pochi rispetto a prima.
In conclusione carico della CPU a parte, sembra proprio che il video in 1080p e 60 FPS viaggi meglio senza l'accelerazione hardware della scheda video che con.
Possibile?
Cosa ne pensate?
Può essere dovuto ad una configurazione non corretta della scheda in termini di drivers o configurazioni varie oppure il limite della stessa è proprio hardware e non ci si può far nulla?

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: MPV e perdita sincronia audio/video

Messaggio da rik70 »

Ah, mica avevo capito che scaricavi il video e lo riproducevi in locale.
Ma questi son problemi miei e il risultato non cambia.

Bisognerebbe capire se si tratta di un limite dell'hardware - tipo che oltre i 30fps non è in grado di andare - o sono i driver bacati.

Se te la da come disponibile, come si comporta con l'uscita video 'vdpau' anziché 'gpu'?

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3790
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: MPV e perdita sincronia audio/video

Messaggio da joe »

Dalle specifiche della GPU che ripeto è sta roba:

Codice: Seleziona tutto

02:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)
Non ho trovato informazioni in merito ad un preciso limite FPS. È anche vero che è hardware vecchio e quando è stato pensata quella scheda cose come 4k o comunque video troppo pesanti tipo sopra un certo numeri d FPS non erano nella destinazione d'uso di schede grafiche commerciali economiche, la butto lì... Per cui non si trova nemmeno una specifica precisa.

Utilizzando "-vo=vdpau" qualcosa cambia però. Intanto salta fuori un warning, poi così a naso sembrerebbero esserci meno frames persi, e infine il carico sulla CPU resta molto basso. Devo provare ancora un po' magari anche col video dell'altro giorno, quello che andava palesemente fuori sincro.

Intanto col trailer dell'uomo ragno ad un certo punto ha rilevato troppo scostamento A-V e lo segnala, ecco l'output:

Codice: Seleziona tutto

$ mpv --no-config -vo=vdpau -hwdec=auto SPIDER-MAN\ -\ NO\ WAY\ HOME\ -\ Official\ Teaser\ Trailer\ \(4K\ ULTRA\ HD\ 60FPS\)\ NEW\ 2021\
\[MUxHmvWYqFQ\].mp4
 (+) Video --vid=1 (*) (h264 1920x1080 60.000fps)
 (+) Audio --aid=1 (*) (aac 2ch 44100Hz)
[vo/vdpau] Warning: this compatibility VO is low quality and may have issues with OSD, scaling, screenshots and more.
[vo/vdpau] vo=gpu is the preferred choice in any case and includes VDPAU support via hwdec=vdpau or vdpau-copy.
Using hardware decoding (vdpau).
AO: [pulse] 44100Hz stereo 2ch float
VO: [vdpau] 1920x1080 vdpau[yuv420p]
AV: 00:02:46 / 00:02:49 (98%) A-V:  0.498 Dropped: 369

Audio/Video desynchronisation detected! Possible reasons include too slow
hardware, temporary CPU spikes, broken drivers, and broken files. Audio
position will not match to the video (see A-V status field).

AV: 00:02:49 / 00:02:49 (100%) A-V:  0.000 Dropped: 413

Exiting... (End of file)
Ho provato a riprodurlo diverse volte e la situazione cambia sempre un po' in termindi di Dropped frames totali, tipo da 300 a 500...
Il sincro A-V in realtà resta praticamente a zero fino al 90% del tempo, poi sale velocemente e viene registrato nel terminale col warning che si vede sopra.
Però ad occhio il video sembrerebbe sincronizzato correttamente con l'audio.

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: MPV e perdita sincronia audio/video

Messaggio da rik70 »

joe ha scritto:
mer 25 mag 2022, 9:10
Però ad occhio il video sembrerebbe sincronizzato correttamente con l'audio.
Guarda, stessa cosa anche qui con video a 60fps. Ad un certo punto inizia a scartare una valanga di fotogrammi, sia da remoto che in locale, anche se non noto problemi di sincronia.

Cercando informazioni nel manuale, ho capito - forse - che è legato all'algoritmo utilizzato dal driver di uscita video per mantenere in sincrono l'audio e il video.
Tuttavia, provando a riprodurre solo la traccia video, il "problema" rimane.
Quindi c'è qualcosa che non va, molto probabilmente nel player stesso o nel codec oppure... non lo so.

Ad ogni modo, cambiando driver di uscita video - nel mio caso il player mi indica che posso usare 'vaapi-wayland' - il problema scompare:
vengono scartati solo 3 fotogrammi all'inizio della riproduzione, poi procede 'liscio' sino alla fine.

Una cosa probabilmente è certa: non è un problema hardware.

Avatar utente
ponce
Iper Master
Iper Master
Messaggi: 3025
Iscritto il: mer 5 mar 2008, 16:45
Nome Cognome: Matteo Bernardini
Slackware: slackware64-current
Kernel: 6.6.16
Desktop: lxde
Località: Pisa
Contatta:

Re: MPV e perdita sincronia audio/video

Messaggio da ponce »

puo' darsi che sia un problema di vdpau: mi sembra di ricordare che non sia piu' mantenuto/ben funzionante nelle implementazioni proprietarie di nvidia (non libvdpau).

EDIT: forse questo, sebbene vecchio di qualche anno, e' rilevante? https://github.com/mpv-player/mpv/issues/7183

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: MPV e perdita sincronia audio/video

Messaggio da rik70 »

Io qui sono su vaapi, e il problema è identico.
Sembra legato all'uscita 'gpu', perché con --vo=vaapi[-wayland] non si presenta, ma vai a capire dove sta il problema.

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: MPV e perdita sincronia audio/video

Messaggio da rik70 »

:shock:

Allora, qui la faccenda funziona in questo modo:

- sono su wayland+sway;
- se lancio mpv senza toccare nulla, non scarta niente;
- se "nascondo" la finestra di mpv, inizia a scartare fotogrammi.
Stessa cosa se allargo il terminale sino a riempire lo schermo o lo sposto su un altro spazio di lavoro;
- lo scarto avviene sull'output gpu.

Boh... alla fine penso sia un comportamento normale legato all'uscita video.

In ogni caso, nessun problema di sincronia.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3790
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: MPV e perdita sincronia audio/video

Messaggio da joe »

Servirebbe, ma per slackware non l'ho trovato così al volo, un tool per vedere anche il carico di lavoro che viene assegnato alla GPU durante il playback. In quel modo hai la controprova che stia effettivamente lavorando la scheda grafica e non il processore.
Sì già lo si vede con top o similari ma solo per la CPU... Il carico sulla scheda grafica si presuppone solo per differenza, ma non sarebbe male una cosa del genere ad esempio:

https://github.com/Syllo/nvtop

Per il resto nel caso specifico della mia vecchia scheda avevo provato a buttar lì una domanda su reddit:

https://www.reddit.com/r/nvidia/comment ... _1080p_60/

Almeno dalle specifiche non sembrano esserci né smentite né conferme: un po' come avevo sospettato sopra, la scheda è troppo vecchia e quando fu concepita nel 2009 di 1080p a 60 FPS credo non ci si preoccupasse troppo (correggete se sbaglio), sia perché video del genere non erano così diffusi, sia perché quelli che circolavano erano pensati per schede grafiche, ai tempi, "di nicchia".

Comunque è strano che il video sul tutorial git, vada palesemente fuori sincro mentre quello del trailer dell'uomo ragno alla fine risulti passabilissimo.
Della serie: se qualcosa può anche solo lontanamente servirti, stai seguro... per accedervi dovrai comunque affrontare tribolazioni e sbattimenti.
Invece com'era? All'uomo ragno il temporale gli fànnasega:
https://www.youtube.com/watch?v=uL84OviiP80

Quella roba lì insomma :lol: :lol:

Karma e Murphy a parte, resta strana quella differenza, alla fine sono entrambi video a 60FPS codificati in h264 entrambi e con uguale risoluzione a 1080p.

Ad ogni modo nelle varie ricerche che ho fatto sono inciampato anche in un tizio che parrebbe aver registrato qualche miglioramento utilizzando i driver nouveau open invece di quelli closed di nvidia.
Non sarebbe male se funzionasse anche per la mia scheda, ma a quanto pare va settata della roba a livello di "pstate" in modo da selezionare una modalità performance. Quanto la cosa sia fattibile in pratica non lo so, neanche quanto sia poi stabile. Metto il ink, non si sa mai, sicuramente ci capite qualcosa più di me:

https://forums.debian.net/viewtopic.php?f=16&t=146141

Si potrebbe fare qualche prova, vedremo.
Nel frattempo direi che per video del genere resta l'alternativa: o si cambia il formato che si riproduce da youtube, scegliendo il 720p a 30 FPS o quello che è, oppure si esclude la decodifica hardware e si coinvolge la CPU.

Nella pratica la prima alternativa è fattibile: io uso yt-dlp per gestire lo scaricamento dal tubo, ma a parte queste prove viste nei messaggi precedenti, di solito agisce in background, io mi limito a trascinare il video di youtube dal browser alla finestra di MPV.
MPV richiama yt-dlp che a sua volta è impostato per scegliere il formato codificato in H264 (che la mia scheda video digerisce meglio) con risoluzione non superiore a 1080p.
Sulla slack 14.2 avevo anche uno script di MPV che richiamava youtube-dl per scegliere al volo il formato. Ad esempio, sto guardando un video del tubo con MPV e mi accorgo che non ce la fa a riprodurlo correttamente? Premo "CTRL+f" e mi appariva la lista dei formati disponibili, da lì potevo sceglierne uno più leggero e premendo invio iniziava a riprodurre quello, dal punto in cui era arrivato il playback attualmente. La cosa era molto comoda anche in caso di rete più lenta del solito ad esempio, in quel modo potevi scegliere un 360p che con si vede anche con poca banda disponibile.
Ora non mi funziona più perché ero passato ad usare yt-dlp invece di youtube-dl ma credo che installando youtube-dl quello script torni funzionante.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3790
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: MPV e perdita sincronia audio/video

Messaggio da joe »

Aggiungo in questo messaggio le prove che avevo fatto... coi due video uomo ragno e tutorial git. Ho scordato di postare i risultati. Metto qua sotto.



Altra prova togliendo -hwdec=auto

Codice: Seleziona tutto

$ mpv --no-config -vo=vdpau SPIDER-MAN\ -\ NO\ WAY\ HOME\ -\ Official\ Teaser\ Trailer\ \(4K\ ULTRA\ HD\ 60FPS\)\ NEW\ 2021\ \[MUxHmvWYqFQ\].mp4
 (+) Video --vid=1 (*) (h264 1920x1080 60.000fps)
 (+) Audio --aid=1 (*) (aac 2ch 44100Hz)
[vo/vdpau] Warning: this compatibility VO is low quality and may have issues with OSD, scaling, screenshots and more.
[vo/vdpau] vo=gpu is the preferred choice in any case and includes VDPAU support via hwdec=vdpau or vdpau-copy.
AO: [pulse] 44100Hz stereo 2ch float
VO: [vdpau] 1920x1080 yuv420p
AV: 00:02:49 / 00:02:49 (100%) A-V:  0.000 Dropped: 10

Exiting... (End of file)
Così la CPU ovviamente sale, resta intorno al 60%, il sincrono però è molto migliore stabile su 0.000 e con soli 10 frames buttati.
Se provo a togliere -vo=vdpau e a tornare a -vo=gpu, i warinings spariscono, ma le cose sembrano peggiorare leggermente: il carico sul processore sale a 75-80%, e i dropped frames salgono un po' anche loro. Il sincro A-V invece resta buono anche così:

Codice: Seleziona tutto

$ mpv --no-config -vo=gpu SPIDER-MAN\ -\ NO\ WAY\ HOME\ -\ Official\ Teaser\ Trailer\ \(4K\ ULTRA\ HD\ 60FPS\)\ NEW\ 2021\ \[MUxHmvWYqFQ\].mp4
 (+) Video --vid=1 (*) (h264 1920x1080 60.000fps)
 (+) Audio --aid=1 (*) (aac 2ch 44100Hz)
AO: [pulse] 44100Hz stereo 2ch float
VO: [gpu] 1920x1080 yuv420p
AV: 00:02:49 / 00:02:49 (100%) A-V:  0.000 Dropped: 30

Exiting... (End of file)
Ho fatto qualche altra prova col video del tutorial su git. Male...
Se esplicito solo vo=vdpau, non ci sono problemi se non il carico CPU che ovviamente sale a valori un po' troppo alti tipo 50-60%.

Codice: Seleziona tutto

$ mpv --no-config -vo=vdpau Corso\ introduttivo\ GIT\ per\ principianti\ -\ Git\ Tutorial\ Italiano\ \[wPAE9-DdMtI\].mp4
 (+) Video --vid=1 (*) (h264 1920x1080 60.000fps)
 (+) Audio --aid=1 --alang=eng (*) (aac 2ch 44100Hz)
[vo/vdpau] Warning: this compatibility VO is low quality and may have issues with OSD, scaling, screenshots and more.
[vo/vdpau] vo=gpu is the preferred choice in any case and includes VDPAU support via hwdec=vdpau or vdpau-copy.
AO: [pulse] 44100Hz stereo 2ch float
VO: [vdpau] 1920x1080 yuv420p
AV: 00:20:03 / 00:53:01 (38%) A-V:  0.000 Dropped: 8
Se invece aggiungo anche -hwdec=auto ecco che la sincronia con questo video se ne va.

Codice: Seleziona tutto

$ mpv --no-config -vo=vdpau -hwdec=auto Corso\ introduttivo\ GIT\ per\ principianti\ -\ Git\ Tutorial\ Italiano\ \[wPAE9-DdMtI\].mp4
 (+) Video --vid=1 (*) (h264 1920x1080 60.000fps)
 (+) Audio --aid=1 --alang=eng (*) (aac 2ch 44100Hz)
[vo/vdpau] Warning: this compatibility VO is low quality and may have issues with OSD, scaling, screenshots and more.
[vo/vdpau] vo=gpu is the preferred choice in any case and includes VDPAU support via hwdec=vdpau or vdpau-copy.
Using hardware decoding (vdpau).
AO: [pulse] 44100Hz stereo 2ch float
VO: [vdpau] 1920x1080 vdpau[yuv420p]
AV: 00:00:04 / 00:53:01 (0%) A-V:  0.499 Dropped: 49

Audio/Video desynchronisation detected! Possible reasons include too slow
hardware, temporary CPU spikes, broken drivers, and broken files. Audio
position will not match to the video (see A-V status field).

AV: 00:07:47 / 00:53:01 (15%) A-V:  0.498 Dropped: 185

Audio/Video desynchronisation detected! Possible reasons include too slow
hardware, temporary CPU spikes, broken drivers, and broken files. Audio
position will not match to the video (see A-V status field).

AV: 00:08:40 / 00:53:01 (16%) A-V:  4.863 Dropped: 921

Exiting... (Quit)

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: MPV e perdita sincronia audio/video

Messaggio da rik70 »

E' un fenomeno legato alla frequenza del monitor.
Ad es. un video a 60fps che viene riprodotto su un monitor che ha frequenza verticale di 60Hz.

Trovi conferma nel manuale, alla voce

Codice: Seleziona tutto

--video-sync=<audio|...>
Non è quindi una questione legata alla decodifica - infatti il 'drop' avviene lato 'uscita' e lo vedi premendo il tasto 'I' durante la riproduzione.

E' come se applicasse una sorta di "variazione" al framerate, un po' come avviene nei televisori quando utilizzi quelle funzioni che sembrano dare al video maggiore fluidità.

Evidentemente, come è anche scritto, in certe situazioni può portare a una perdita di sincronia.

Non so se si possa in qualche modo disattivare o 'tarare' meglio, ma qui smette di scartare utilizzando il metodo display-desync.

Rispondi