Ho creato una build di registrazione per un amico che assomigli alla mia, ma non riesco a far funzionare le cose in tempo reale nonostante l'hardware sufficiente (per quanto posso dire).
Specifiche di sistema: 8600K, GTX 1050ti, 16Gb RAM, 1tb 860 EVO
Comando di prova (aggiornato per semplicità):
ffmpeg -y -hide_banner -thread_queue_size 9999 -f dshow -rtbufsize 2147.48M -video_size 1920x1080 -framerate 60 `
-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&3886ab1a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" `
-thread_queue_size 9999 -f dshow -rtbufsize 2147.48M -video_size 1920x1080 -framerate 60 `
-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&24df76f&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" `
-map 0 -c:v h264_nvenc -r 60 -preset: llhp -pix_fmt yuv420p -b:v 1M -minrate 1M -maxrate 1M -bufsize 1M `
C:\Users\Jordan\Videos\FFmpeg\Left\Left.ts `
-map 1 -c:v h264_nvenc -r 60 -preset: llhp -pix_fmt yuv420p -b:v 1M -minrate 1M -maxrate 1M -bufsize 1M `
C:\Users\Jordan\Videos\FFmpeg\Right\Right.ts
L'obiettivo di questo comando è di registrare 2 output sincronizzati separati. Tuttavia, per un motivo o per l'altro, questo comando non sta transcodificando il video in tempo reale, il che è un grosso problema quando si tenta di registrare, non semplicemente convertire un file. Quando ometto una delle due uscite o se dimezzo la risoluzione di ciascun ingresso / uscita, tutto funziona in tempo reale. Questo mi farebbe credere che ci sia un collo di bottiglia nel sistema da qualche parte, ma quando si controlla tutto in Task Manager nulla è nemmeno vicino al limite (codificatore GPU, CPU, RAM e SSD con un utilizzo inferiore al 30%).
Inoltre, quando provo a registrare entrambi i flussi in un video 4K60 tramite OBS, le cose funzionano perfettamente, come in tempo reale. Quindi non capisco come la transcodifica di due stream 1080p60 in FFmpeg sarebbe più intensiva di uno stream 4K60 in OBS ...
Da allora ho sostituito la 1050ti con una GTX 1080 senza differenze di prestazioni. Questo mi porta a credere che la CPU sia in errore. Sembra che FFmpeg stia davvero colpendo solo 1-2 thread ... un modo per costringerlo a usarne di più? -threads non sembra avere alcun effetto indipendentemente da dove l'ho iniettato nel comando. La cosa davvero strana è che ho un comando molto simile, ma sto facendo due stream 4K60 rispetto a due stream 1080p60 con GTX 1080 e 6800K ... Per quanto posso dire, l'8600K ha prestazioni per thread più elevate rispetto al 6800 K quindi non sono sicuro di come riesco a cavarmela con molto di più.
Qualsiasi intuizione sarebbe molto apprezzata.
-an
al loro posto per testarlo.
nvenc
.