Migliori impostazioni per FFMpeg con NVENC


26

Sto usando il mio FFMPEG con il supporto della mia GPU ( NVENC ) per convertire i file dal mio ricevitore satellitare (SD, mpeg2 .TS-Files) in h264 .mp4-files

Ecco la linea che sto usando

ffmpeg -i "e:\input.ts" -vcodec h264_nvenc -preset slow -level 4.1
       -qmin 10 -qmax 52 "e:\output.mp4"

Ma la qualità non è buona come previsto. E la piena potenza del mio sistema non viene utilizzata:

inserisci qui la descrizione dell'immagine

Solo l'11% di GPU e il 30% di utilizzo della CPU.

Domanda: ci sono alcuni miglioramenti che posso apportare per migliorare la qualità a parità di dimensioni del file e utilizzare una maggiore potenza di calcolo della mia Geforce GTX 1080?

Ho trovato alcuni parametri da 林正浩 a cambiare, ma -preset slowdovrebbe già essere il miglior approccio di qualità giusto?

Risposte:


37

Ecco una guida approssimativa all'ottimizzazione dell'encoder:

Partiremo dalle basi, poiché sarebbe dannoso saltare alla conclusione che una rapida raffica di opzioni migliorerà improvvisamente la produzione prevista senza comprendere gli obiettivi e le aspettative desiderati:

1. Inizia a comprendere le opzioni dell'encoder.

Per i codificatori basati su NVENC, inizia con l'apprendimento delle opzioni di ciascun codificatore (nota che sono su Linux, motivo per cui sto usando xclip per copiare le opzioni del codec negli appunti prima di incollarle qui):

(un). Per l'encoder H.264:

ffmpeg -hide_banner -h encoder=h264_nvenc | xclip -sel clip

Produzione:

Encoder h264_nvenc [NVIDIA NVENC H.264 encoder]:
    General capabilities: delay 
    Threading capabilities: none
    Supported pixel formats: yuv420p nv12 p010le yuv444p yuv444p16le bgr0 rgb0 cuda
h264_nvenc AVOptions:
  -preset            <int>        E..V.... Set the encoding preset (from 0 to 11) (default medium)
     default                      E..V.... 
     slow                         E..V.... hq 2 passes
     medium                       E..V.... hq 1 pass
     fast                         E..V.... hp 1 pass
     hp                           E..V.... 
     hq                           E..V.... 
     bd                           E..V.... 
     ll                           E..V.... low latency
     llhq                         E..V.... low latency hq
     llhp                         E..V.... low latency hp
     lossless                     E..V.... 
     losslesshp                   E..V.... 
  -profile           <int>        E..V.... Set the encoding profile (from 0 to 3) (default main)
     baseline                     E..V.... 
     main                         E..V.... 
     high                         E..V.... 
     high444p                     E..V.... 
  -level             <int>        E..V.... Set the encoding level restriction (from 0 to 51) (default auto)
     auto                         E..V.... 
     1                            E..V.... 
     1.0                          E..V.... 
     1b                           E..V.... 
     1.0b                         E..V.... 
     1.1                          E..V.... 
     1.2                          E..V.... 
     1.3                          E..V.... 
     2                            E..V.... 
     2.0                          E..V.... 
     2.1                          E..V.... 
     2.2                          E..V.... 
     3                            E..V.... 
     3.0                          E..V.... 
     3.1                          E..V.... 
     3.2                          E..V.... 
     4                            E..V.... 
     4.0                          E..V.... 
     4.1                          E..V.... 
     4.2                          E..V.... 
     5                            E..V.... 
     5.0                          E..V.... 
     5.1                          E..V.... 
  -rc                <int>        E..V.... Override the preset rate-control (from -1 to INT_MAX) (default -1)
     constqp                      E..V.... Constant QP mode
     vbr                          E..V.... Variable bitrate mode
     cbr                          E..V.... Constant bitrate mode
     vbr_minqp                    E..V.... Variable bitrate mode with MinQP (deprecated)
     ll_2pass_quality              E..V.... Multi-pass optimized for image quality (deprecated)
     ll_2pass_size                E..V.... Multi-pass optimized for constant frame size (deprecated)
     vbr_2pass                    E..V.... Multi-pass variable bitrate mode (deprecated)
     cbr_ld_hq                    E..V.... Constant bitrate low delay high quality mode
     cbr_hq                       E..V.... Constant bitrate high quality mode
     vbr_hq                       E..V.... Variable bitrate high quality mode
  -rc-lookahead      <int>        E..V.... Number of frames to look ahead for rate-control (from 0 to INT_MAX) (default 0)
  -surfaces          <int>        E..V.... Number of concurrent surfaces (from 0 to 64) (default 0)
  -cbr               <boolean>    E..V.... Use cbr encoding mode (default false)
  -2pass             <boolean>    E..V.... Use 2pass encoding mode (default auto)
  -gpu               <int>        E..V.... Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. (from -2 to INT_MAX) (default any)
     any                          E..V.... Pick the first device available
     list                         E..V.... List the available devices
  -delay             <int>        E..V.... Delay frame output by the given amount of frames (from 0 to INT_MAX) (default INT_MAX)
  -no-scenecut       <boolean>    E..V.... When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts (default false)
  -forced-idr        <boolean>    E..V.... If forcing keyframes, force them as IDR frames. (default false)
  -b_adapt           <boolean>    E..V.... When lookahead is enabled, set this to 0 to disable adaptive B-frame decision (default true)
  -spatial-aq        <boolean>    E..V.... set to 1 to enable Spatial AQ (default false)
  -temporal-aq       <boolean>    E..V.... set to 1 to enable Temporal AQ (default false)
  -zerolatency       <boolean>    E..V.... Set 1 to indicate zero latency operation (no reordering delay) (default false)
  -nonref_p          <boolean>    E..V.... Set this to 1 to enable automatic insertion of non-reference P-frames (default false)
  -strict_gop        <boolean>    E..V.... Set 1 to minimize GOP-to-GOP rate fluctuations (default false)
  -aq-strength       <int>        E..V.... When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) (from 1 to 15) (default 8)
  -cq                <float>      E..V.... Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control (from 0 to 51) (default 0)
  -aud               <boolean>    E..V.... Use access unit delimiters (default false)
  -bluray-compat     <boolean>    E..V.... Bluray compatibility workarounds (default false)
  -init_qpP          <int>        E..V.... Initial QP value for P frame (from -1 to 51) (default -1)
  -init_qpB          <int>        E..V.... Initial QP value for B frame (from -1 to 51) (default -1)
  -init_qpI          <int>        E..V.... Initial QP value for I frame (from -1 to 51) (default -1)
  -qp                <int>        E..V.... Constant quantization parameter rate control method (from -1 to 51) (default -1)
  -weighted_pred     <int>        E..V.... Set 1 to enable weighted prediction (from 0 to 1) (default 0)
  -coder             <int>        E..V.... Coder type (from -1 to 2) (default default)
     default                      E..V.... 
     auto                         E..V.... 
     cabac                        E..V.... 
     cavlc                        E..V.... 
     ac                           E..V.... 
     vlc                          E..V.... 

(B). Per l'encoder HEVC / H.265:

ffmpeg -hide_banner -h encoder=hevc_nvenc | xclip -sel clip

Produzione:

Encoder hevc_nvenc [NVIDIA NVENC hevc encoder]:
    General capabilities: delay 
    Threading capabilities: none
    Supported pixel formats: yuv420p nv12 p010le yuv444p yuv444p16le bgr0 rgb0 cuda
hevc_nvenc AVOptions:
  -preset            <int>        E..V.... Set the encoding preset (from 0 to 11) (default medium)
     default                      E..V.... 
     slow                         E..V.... hq 2 passes
     medium                       E..V.... hq 1 pass
     fast                         E..V.... hp 1 pass
     hp                           E..V.... 
     hq                           E..V.... 
     bd                           E..V.... 
     ll                           E..V.... low latency
     llhq                         E..V.... low latency hq
     llhp                         E..V.... low latency hp
     lossless                     E..V.... lossless
     losslesshp                   E..V.... lossless hp
  -profile           <int>        E..V.... Set the encoding profile (from 0 to 4) (default main)
     main                         E..V.... 
     main10                       E..V.... 
     rext                         E..V.... 
  -level             <int>        E..V.... Set the encoding level restriction (from 0 to 186) (default auto)
     auto                         E..V.... 
     1                            E..V.... 
     1.0                          E..V.... 
     2                            E..V.... 
     2.0                          E..V.... 
     2.1                          E..V.... 
     3                            E..V.... 
     3.0                          E..V.... 
     3.1                          E..V.... 
     4                            E..V.... 
     4.0                          E..V.... 
     4.1                          E..V.... 
     5                            E..V.... 
     5.0                          E..V.... 
     5.1                          E..V.... 
     5.2                          E..V.... 
     6                            E..V.... 
     6.0                          E..V.... 
     6.1                          E..V.... 
     6.2                          E..V.... 
  -tier              <int>        E..V.... Set the encoding tier (from 0 to 1) (default main)
     main                         E..V.... 
     high                         E..V.... 
  -rc                <int>        E..V.... Override the preset rate-control (from -1 to INT_MAX) (default -1)
     constqp                      E..V.... Constant QP mode
     vbr                          E..V.... Variable bitrate mode
     cbr                          E..V.... Constant bitrate mode
     vbr_minqp                    E..V.... Variable bitrate mode with MinQP (deprecated)
     ll_2pass_quality              E..V.... Multi-pass optimized for image quality (deprecated)
     ll_2pass_size                E..V.... Multi-pass optimized for constant frame size (deprecated)
     vbr_2pass                    E..V.... Multi-pass variable bitrate mode (deprecated)
     cbr_ld_hq                    E..V.... Constant bitrate low delay high quality mode
     cbr_hq                       E..V.... Constant bitrate high quality mode
     vbr_hq                       E..V.... Variable bitrate high quality mode
  -rc-lookahead      <int>        E..V.... Number of frames to look ahead for rate-control (from 0 to INT_MAX) (default 0)
  -surfaces          <int>        E..V.... Number of concurrent surfaces (from 0 to 64) (default 0)
  -cbr               <boolean>    E..V.... Use cbr encoding mode (default false)
  -2pass             <boolean>    E..V.... Use 2pass encoding mode (default auto)
  -gpu               <int>        E..V.... Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. (from -2 to INT_MAX) (default any)
     any                          E..V.... Pick the first device available
     list                         E..V.... List the available devices
  -delay             <int>        E..V.... Delay frame output by the given amount of frames (from 0 to INT_MAX) (default INT_MAX)
  -no-scenecut       <boolean>    E..V.... When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts (default false)
  -forced-idr        <boolean>    E..V.... If forcing keyframes, force them as IDR frames. (default false)
  -spatial_aq        <boolean>    E..V.... set to 1 to enable Spatial AQ (default false)
  -temporal_aq       <boolean>    E..V.... set to 1 to enable Temporal AQ (default false)
  -zerolatency       <boolean>    E..V.... Set 1 to indicate zero latency operation (no reordering delay) (default false)
  -nonref_p          <boolean>    E..V.... Set this to 1 to enable automatic insertion of non-reference P-frames (default false)
  -strict_gop        <boolean>    E..V.... Set 1 to minimize GOP-to-GOP rate fluctuations (default false)
  -aq-strength       <int>        E..V.... When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) (from 1 to 15) (default 8)
  -cq                <float>      E..V.... Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control (from 0 to 51) (default 0)
  -aud               <boolean>    E..V.... Use access unit delimiters (default false)
  -bluray-compat     <boolean>    E..V.... Bluray compatibility workarounds (default false)
  -init_qpP          <int>        E..V.... Initial QP value for P frame (from -1 to 51) (default -1)
  -init_qpB          <int>        E..V.... Initial QP value for B frame (from -1 to 51) (default -1)
  -init_qpI          <int>        E..V.... Initial QP value for I frame (from -1 to 51) (default -1)
  -qp                <int>        E..V.... Constant quantization parameter rate control method (from -1 to 51) (default -1)
  -weighted_pred     <int>        E..V.... Set 1 to enable weighted prediction (from 0 to 1) (default 0)

2. Comprendere le limitazioni dell'hardware e attenersi alle impostazioni predefinite corrette prima di applicare le opzioni:

Fare riferimento a questa risposta per le limitazioni hardware che si incontreranno con NVENC, in particolare per i codici HEVC su Pascal.

Per l'infrastruttura con accelerazione hardware disponibile per l'hardware NVIDIA di generazione corrente con FFmpeg, vedere questa risposta.

Quindi, utilizzando tali informazioni, procedere al passaggio successivo.

3. La sintassi è fondamentale:

Ecco l'ordine in cui devi passare gli argomenti a FFmpeg:

(un). Richiama il binario.

(b). Passare qualsiasi argomento a FFmpeg (come ad esempio -logleveldirettamente) prima di dichiarare gli input.

(c). Se si utilizza una decodifica con accelerazione hardware, ad esempio cuvid, dichiararla qui e includere eventuali argomenti specifici richiesti. A questo punto, sarebbe imperativo menzionare che i decodificatori hanno vincoli specifici, come risoluzioni di input attese, codec supportati, ecc. E come tali, si raccomanda che in produzione, determinare e convalidare la necessità di decodificatori con accelerazione hardware come errore in questa fase risulta una codifica non riuscita ed è irrecuperabile. In effetti, gli sviluppatori MPV ne hanno parlato più volte , non fare affidamento sulla decodifica con accelerazione hardware per la consegna di contenuti mission-critical.

(D). Dichiara i tuoi input. Per gli stream, utilizzare l'URL e, se necessario, anteporre flag aggiuntivi (come le dimensioni del buffer) in base alle esigenze. Per le risorse locali (su un filesystem accessibile), è necessario il percorso del file assoluto.

(E). Facoltativamente, inserire un filtro. Ciò è necessario per funzioni come ridimensionamento, conversazioni in formato pixel, deinterlacciamento, ecc. Si noti che a seconda del filtro in uso qui, un decodificatore basato su hardware (come descritto nella sezione (c) introdurrà vincoli che il filtro deve essere in grado di gestire, altrimenti la tua codifica fallirà.

(f). Richiamare i video e audio encoder adeguati, e passare gli argomenti necessari a loro, come le mappature, bitrate, preset encoder, ecc Quando si tratta di bitrate, verificare che i valori desiderati vengono impostati tramite i -b:v, -maxrate:ve le -bufsize:vopzioni. Non lasciare questi vuoti. Questo è un buon punto di partenza sul perché questi valori contano. Come sempre, inizia specificando un predefinito. Scorri verso il basso verso il basso per vedere le note sull'impatto delle prestazioni dei preset con questo particolare encoder.

(G). Considerando che FFmpeg può dedurre il formato di output richiesto di un file in base all'estensione selezionata del file di output, si consiglia di dichiarare esplicitamente il formato di output (tramite l'opzione -f) in modo che le opzioni extra possano essere passate al muxer sottostante se necessario , come spesso accade con i formati di streaming come HLS, mpegts e DASH.

(H). Il percorso assoluto del file di output.

Con il tuo esempio sopra, citato come:

ffmpeg -i "e:\input.ts" -vcodec h264_nvenc -preset slow -level 4.1
       -qmin 10 -qmax 52 "e:\output.mp4"

È possibile aumentare la qualità dell'output specificando bitrate appropriati (tramite -b:v, -maxrate:ve le -bufsize:vimpostazioni), abilitando tecniche di codifica di quantizzazione adattativa (sono supportati i metodi AQ spaziali e temporali, di cui solo uno può essere utilizzato alla volta) e facoltativamente (e separatamente) abilitando la previsione ponderata (che disabiliterà il supporto del B-frame) come mostrato di seguito, nonché un filtro opzionale per un downscale adeguato e ridimensionare se necessario. L'esempio seguente mostra uno snippet che gestisce l'input di mpegts codificato in mpeg2:

ffmpeg -loglevel debug -threads 4 -hwaccel cuvid -c:v mpeg2_cuvid -i "e:\input.ts" \
-filter:v hwupload_cuda,scale_npp=w=1920:h=1080:interp_algo=lanczos \
-c:v h264_nvenc -b:v 4M -maxrate:v 5M -bufsize:v 8M -profile:v main \
-level:v 4.1 -rc:v vbr_hq -rc-lookahead:v 32 \
-spatial_aq:v 1 -aq-strength:v 15 -coder:v cabac \
-f mp4 "e:\output.mp4"

Avvertenza:-weighted_pred tenere presente che la previsione ponderata ( ) non può essere abilitata contemporaneamente alla quantizzazione adattativa. Tentare di farlo comporterà un errore di inizializzazione dell'encoder.

Lo snippet sopra presuppone che il file di input sia un flusso MPEG2. In caso contrario, passare al decodificatore CUVID corretto dopo averlo analizzato:

ffprobe -i e:\input.ts

Se è "H.264 / AVC, modifica lo snippet come mostrato di seguito:

ffmpeg -loglevel debug -threads 4 -hwaccel cuvid -c:v h264_cuvid -i "e:\input.ts" \
-filter:v hwupload_cuda,scale_npp=w=1920:h=1080:interp_algo=lanczos \
-c:v h264_nvenc -b:v 4M -maxrate:v 5M -bufsize:v 8M -profile:v main \
-level:v 4.1 -rc:v vbr_hq -rc-lookahead:v 32 -spatial_aq:v 1 \
-aq-strength:v 15 -coder:v cabac \
-f mp4 "e:\output.mp4"

Ho notato che l'abilitazione della quantizzazione adattativa o delle opzioni di previsione ponderate per NVENC possono presentare problemi di stabilità, in particolare con combinazioni specifiche di driver di dispositivo. Laddove possibile, considera l'utilizzo di B-frame (non più di 3) in combinazione con l'opzione generica -refs:vimpostata su 16 o giù di lì, invece di attivare o disattivare AQ e previsione ponderata:

ffmpeg -loglevel debug -threads 4 -hwaccel cuvid -c:v h264_cuvid -i "e:\input.ts" \
-filter:v hwupload_cuda,scale_npp=w=1920:h=1080:interp_algo=lanczos \
-c:v h264_nvenc -b:v 4M -maxrate:v 5M -bufsize:v 8M -profile:v main \
-level:v 4.1 -rc:v vbr_hq -rc-lookahead:v 32 -refs:v 16 \
-bf:v 3 -coder:v cabac \
-f mp4 "e:\output.mp4"

Con Turing , in particolare, potresti anche trarre vantaggio dall'abilitazione di fotogrammi B per riferimento come mostrato di seguito (vedi l'interruttore -b_ref_mode:v middle):

ffmpeg -loglevel debug -threads 4 -hwaccel cuvid -c:v h264_cuvid -i "e:\input.ts" \
-filter:v hwupload_cuda,scale_npp=w=1920:h=1080:interp_algo=lanczos \
-c:v h264_nvenc -b:v 4M -maxrate:v 5M -bufsize:v 8M -profile:v main \
-level:v 4.1 -rc:v vbr_hq -rc-lookahead:v 32 -refs:v 16 \
-bf:v 3 -coder:v cabac -b_ref_mode:v middle \
-f mp4 "e:\output.mp4"

Una nota aggiuntiva sul conteggio dei thread (passata a ffmpeg tramite l' -threadsopzione):

Più thread dell'encoder oltre una certa soglia aumentano la latenza e avranno un footprint di memoria di codifica più elevato. Il degrado della qualità è più evidente con conteggi dei thread più elevati in modalità bitrate costante e modalità bitrate quasi costante chiamata VBV (verificatore buffer video), a causa di un ritardo di codifica aumentato. I fotogrammi chiave necessitano di più dati rispetto ad altri tipi di fotogrammi per evitare pulsazioni di fotogrammi chiave di scarsa qualità.

La modalità thread zero-delay o sliced ​​non ha ritardi, ma questa opzione peggiora ulteriormente la qualità multi-thread negli encoder supportati.

È quindi saggio limitare il conteggio dei thread sui codifiche in cui è importante la latenza, poiché l'aumento del throughput dell'encoder percepito compensa tutti i vantaggi che può portare a lungo termine.

E dal momento che sei su Windows, potresti voler rimuovere le escape di shell \sopra mentre sto scrivendo questo da una scatola Unix testando il comando sopra.

Note sull'impatto sulle prestazioni con preimpostazioni e considerazioni sulla codifica interlacciata:

Per un throughput elevato e prestazioni a bassa latenza, assicurati di utilizzare uno llhpo i llhqpreset. Ciò è particolarmente utile per carichi di lavoro come lo streaming live in cui è prevista una più ampia compatibilità con una più ampia varietà di dispositivi e, come tale, le funzionalità che mettono a repentaglio le prestazioni come i frame B possono essere omesse del tutto per un buon compromesso tra bit rate più elevati in utilizzo e throughput. Preimpostazioni più alte (come quelle predefinite medium) hanno rendimenti in rapido calo nell'output di qualità e allo stesso tempo comportano rallentamenti significativi del throughput dell'encoder. La differenza di qualità tra llhpe llhqmisurata dal VMAF di Netflix è praticamente trascurabile, ma l'incremento delle prestazioni dell'encoder (oltre il ~ 30% sul mio banco di prova) con il primo è decisamente apprezzabile.

Per i preset llhpe llhq, così come altri preset in uso, è anche possibile sovrascrivere i metodi di controllo della velocità incorporati passando gli -rc:vargomenti esposti dalle opzioni dell'encoder. Ad esempio, con la codifica costante della velocità in bit, è possibile specificare -rc:v cbr(che è significativamente più veloce del cbr_ld_hqmetodo di controllo della velocità, portando un aumento del ~ 20% aggiuntivo alla velocità effettiva). Si noti che la preselezione selezionata ha il maggiore impatto sulla velocità effettiva , seguita dalle opzioni di preselezione (come il metodo di controllo della frequenza in uso) che è possibile facoltativamente sostituire se lo si desidera.

Considera il tuo flusso di lavoro di codifica e regola se necessario. Il chilometraggio varierà sicuramente, in base al contenuto di origine, alle catene di filtri in uso, alle variabili di configurazione specifiche pltform (come GPU e versioni dei driver), ecc.

Nello stesso respiro, nota che NVIDIA ha esplicitamente disabilitato la codifica interlacciata su Turing su tutti i livelli, anche nella linea 1660Ti che utilizza il vecchio codificatore Volta NVENC. Se hai bisogno di supporto per la codifica interlacciata, passa invece a SKU Pascal o precedenti.


1
Epico! Grazie, dopo aver lavorato con la codifica hardware per così tanto tempo, lo consiglieresti sulla codifica della CPU o gli svantaggi della qualità / dimensione del file sono ancora così grandi? Voglio dire, ci sono molti miglioramenti che sono stati apportati in NVENC e NVENC HQ dovrebbe essere uguale qualità rispetto al predefinito x264
Dr. Snail,

@ Dr.Snail Consiglio di valutare prima i requisiti del flusso di lavoro e di prendere in considerazione tutti i fattori prima di passare a una soluzione di codifica basata su hardware. Per prima cosa, NVENC, come altre soluzioni di codifica basate su SIP, produrrà sempre prestazioni drasticamente più veloci a una maggiore efficienza energetica rispetto a un'implementazione basata su software, tutti gli altri fattori costanti. A questo scopo, applica una velocità al compromesso di qualità come previsto, quindi valuta le funzionalità non supportate. Ad esempio, con NVENC, non possiamo inserire direttamente le informazioni HDR e per questo dobbiamo usare uno strumento esterno.
林正浩


Scegli scale_npp=w=1920:h=1080perché i filtri sono una cosa che beneficiano maggiormente della GPU, giusto? Un'altra cosa, limitare il bitrate di -b:v 1000k -minrate 500k -maxrate 3000ksembra rendere più prevedibili le dimensioni dell'output
Dr. Snail,

Sì, @ Dr.Snail. Le dimensioni dei file prevedibili sono una priorità.
林正浩

3

La mia esperienza con l'utilizzo di nvenc è che devi dirgli quale bitrate vuoi - il valore predefinito è VBR, il che va bene, ma nessuna quantità di messa a punto compensa il fatto che vuole sempre darti un bitrate medio 2M non importa quale file di risoluzione lo nutri. Sembra un difetto nell'encoder; si comporta in modo prevedibile sotto ogni altro aspetto, ma ha bisogno (per esempio) -b:v 4Mdi un file 720p o -b:v 8M1080p. Probabilmente potresti anche abbassarli un po ', se vuoi.


1

La libvorbis per l'audio sembra lenta. ac3 dovrebbe offrirti un aumento del 15% in più della velocità.

Detto questo, qualcosa non va nel tuo driver video o stai usando una vecchia copia di ffmpeg. q Non ho la tua clip, ma ho preso un file SD ts dal mio PVR e ho usato le tue impostazioni.

Ho ottenuto 700 fps (le tue impostazioni) su una GTX750 (non TI) (quella più economica)

Ho 925fps (le tue impostazioni con audio ac3)

L'altra raccomandazione che posso fare è:

Cambia il tuo qmax a circa 23.


Ho provato questo con una vecchia GTX 760 che ho trovato con 400FPS con questo comando ffmpeg40\bin\ffmpeg -hwaccel cuvid -c:v mpeg2_cuvid -i "E:\input.ts" -c:v h264_nvenc "E:\output.mp4"potresti aggiungere il tuo codice con l'AC3 i.stack.imgur.com/CNaWM.png
Dr. Snail

Questo dovrebbe funzionare nella riga di comando. Aggiungilo accanto a -c: v h264_nvenc -c: a ac3 Dovresti anche essere in grado di inviare 2 sessioni. Apri una seconda riga di comando e codifica contemporaneamente un altro .ts. Se ti piace, sarei felice di provare uno dei tuoi file .ts per vedere se c'è qualcos'altro che può essere fatto per aumentare la tua velocità e qualità.
Don Giovanni,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.