Meilleurs paramètres pour FFMpeg avec NVENC


26

J'utilise mon FFMPEG avec le support de mon GPU ( NVENC ) pour convertir des fichiers de mon récepteur satellite (SD, mpeg2 .TS-Files) en fichiers h264 .mp4

Voici la ligne que j'utilise

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

Mais la qualité n'est pas aussi bonne que prévu. Et la pleine puissance de mon système n'est pas utilisée:

entrez la description de l'image ici

Seulement 11% de GPU et 30% d'utilisation du CPU.

Question: Puis-je apporter quelques améliorations pour améliorer la qualité à taille de fichier égale et utiliser plus de puissance de calcul de ma Geforce GTX 1080?

J'ai trouvé quelques paramètres de 林正浩 à changer, mais -preset slowdevrait déjà être la meilleure approche qualité, non?

Réponses:


37

Voici un guide approximatif pour régler l'encodeur:

Nous commencerons par les bases, car il serait préjudiciable de sauter à la conclusion qu'un barrage rapide d'options améliorera soudainement la production attendue sans comprendre les objectifs et les attentes souhaités:

1. Commencez par comprendre les options de l'encodeur.

Pour les encodeurs basés sur NVENC, commencez par apprendre les options que prend chaque encodeur (notez que je suis sous Linux, c'est pourquoi j'utilise xclip pour copier les options du codec dans le presse-papiers avant de les coller ici):

(une). Pour l'encodeur H.264:

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

Production:

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). Pour l'encodeur HEVC / H.265:

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

Production:

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. Comprenez les limites du matériel et respectez les valeurs par défaut saines avant d'appliquer les options:

Reportez-vous à cette réponse pour connaître les limitations matérielles que vous rencontrerez avec NVENC, en particulier pour les codages HEVC sur Pascal.

Pour connaître l'infrastructure accélérée matérielle disponible pour le matériel NVIDIA de génération actuelle avec FFmpeg, consultez cette réponse.

Ensuite, en utilisant ces informations, passez à l'étape suivante.

3. La syntaxe est essentielle:

Voici l'ordre dans lequel vous devez passer des arguments à FFmpeg:

(une). Appelez le binaire.

(b). Passez tous les arguments à FFmpeg (tels que -logleveldirectement) avant de déclarer des entrées.

(c). Si vous utilisez un décodage accéléré par le matériel, par exemple cuvid, déclarez-le ici et incluez tous les arguments spécifiques dont il a besoin. À ce stade, il serait impératif de mentionner que les décodeurs ont des contraintes spécifiques, telles que les résolutions d'entrée attendues, les codecs pris en charge, etc. à ce stade, le codage a échoué et est irrécupérable. En fait, les développeurs MPV l'ont mentionné à plusieurs reprises , ne comptez pas sur le décodage accéléré par le matériel pour la livraison de contenu critique.

(ré). Déclarez vos entrées. Pour les flux, utilisez l'URL et, si nécessaire, ajoutez des indicateurs supplémentaires (tels que la taille des tampons) si nécessaire. Pour les ressources locales (sur un système de fichiers accessible), le chemin absolu du fichier est nécessaire.

e). Eventuellement, insérez un filtre. Ceci est nécessaire pour des fonctions telles que le redimensionnement, les conversations au format pixel, le désentrelacement, etc. Notez que selon le filtre utilisé ici, un décodeur matériel (comme décrit dans la section (c) introduira des contraintes que votre filtre doit être capable de gérer, sinon votre encodage échouera.

(F). Appeler les codeurs vidéo et audio appropriés, et de transmettre les arguments nécessaires pour les applications, tels que, bitrate, préréglages de l' encodeur, etc. En matière de bitrates, assurez -vous que vos valeurs souhaitées sont définies par les -b:v, -maxrate:vet les -bufsize:voptions. Ne laissez pas ces champs vides. C'est un bon point de départ pour expliquer pourquoi ces valeurs sont importantes. Comme toujours, commencez par spécifier un préréglage. Faites défiler vers le bas pour voir des notes sur l'impact sur les performances des préréglages avec cet encodeur particulier.

(g). Alors que FFmpeg peut déduire le format de sortie requis d'un fichier en fonction de l'extension sélectionnée du fichier de sortie, il est recommandé de déclarer explicitement le format de sortie (via l'option -f) afin que des options supplémentaires puissent être transmises au multiplexeur sous-jacent si nécessaire. , comme c'est souvent le cas avec les formats de streaming tels que HLS, mpegts et DASH.

(h). Chemin absolu du fichier de sortie.

Avec votre exemple ci-dessus, cité comme suit:

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

Vous pouvez augmenter la qualité de sortie en spécifiant des débits appropriés (par l'intermédiaire -b:v, -maxrate:vet les -bufsize:vparamètres), permettant à des techniques de codage de quantification adaptative (méthodes d'AQ spatiales et temporelles sont prises en charge, dont un seul peut être utilisé à la fois) et par éventuellement (et séparément) activer la prédiction pondérée (qui désactivera la prise en charge de la trame B) comme indiqué ci-dessous, ainsi qu'un filtre optionnel pour une réduction d'échelle appropriée et redimensionner si nécessaire. L'exemple ci-dessous montre un extrait de code gérant les entrées mpegts encodées en 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"

Avertissement: Notez que la prédiction pondérée ( -weighted_pred) ne peut pas être activée en même temps que la quantification adaptative. Tenter de le faire entraînera l'échec de l'initialisation de l'encodeur.

L'extrait ci-dessus suppose que le fichier d'entrée est un flux MPEG2. Si ce n'est pas le cas, passez au décodeur CUVID correct après l'avoir analysé:

ffprobe -i e:\input.ts

S'il s'agit de 'H.264 / AVC, modifiez l'extrait de code comme indiqué ci-dessous:

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"

J'ai remarqué que l'activation des options de quantification adaptative OU de prédiction pondérée pour NVENC peut introduire des problèmes de stabilité, en particulier avec des combinaisons de pilotes de périphériques spécifiques. Dans la mesure du possible, envisagez d'utiliser des trames B (pas plus de 3) combinées avec l'option générique -refs:vdéfinie sur 16 ou plus, au lieu de basculer sur AQ et prédiction pondérée:

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"

Avec Turing , en particulier, vous pouvez également bénéficier de l'activation des cadres B pour référence, comme indiqué ci-dessous (voir la bascule -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"

Une note supplémentaire sur le nombre de threads (passée à ffmpeg via l' -threadsoption):

Plus de threads d'encodeur au-delà d'un certain seuil augmentent la latence et auront une empreinte mémoire d'encodage plus élevée. La dégradation de la qualité est plus importante avec un nombre de threads plus élevé dans les modes à débit binaire constant et le mode à débit binaire presque constant appelé VBV (vérificateur de tampon vidéo), en raison de l'augmentation du délai de codage. Les images clés ont besoin de plus de données que d'autres types de trames pour éviter de pulser des images clés de mauvaise qualité.

Le mode de délai nul ou de thread coupé n'a pas de retard, mais cette option aggrave encore la qualité multi-threads dans les encodeurs pris en charge.

Il est donc judicieux de limiter le nombre de threads sur les encodages où la latence est importante, car l'augmentation du débit de l'encodeur perçu compense tous les avantages qu'il peut apporter à long terme.

Et puisque vous êtes sous Windows, vous souhaiterez peut-être supprimer les échappements du shell \ci-dessus pendant que j'écris ceci à partir d'une boîte Unix testant la commande ci-dessus.

Remarques sur l'impact sur les performances avec les préréglages et les considérations de codage entrelacé:

Pour un débit élevé et des performances de faible latence, assurez-vous d'utiliser l'un llhpou les llhqpréréglages. Ceci est très utile pour les charges de travail telles que la diffusion en direct où une compatibilité plus large avec une plus grande variété d'appareils est attendue, et en tant que tel, les fonctionnalités réductrices de performances telles que les trames B peuvent être complètement omises pour un bon compromis entre des débits binaires plus élevés dans utilisation et débit. Des préréglages plus élevés (tels que ceux par défaut medium) ont rapidement des rendements décroissants en sortie de qualité tout en entraînant en même temps des ralentissements importants du débit de l'encodeur. La différence de qualité entre llhpet llhqtelle que mesurée par le VMAF de Netflix est pratiquement négligeable, mais l'augmentation des performances de l'encodeur (plus de ~ 30% sur mon banc d'essai) avec le premier est certainement appréciable.

Pour les préréglages llhpet llhq, ainsi que pour les autres préréglages utilisés, vous pouvez également remplacer les méthodes de contrôle de débit intégrées en passant les -rc:varguments exposés par les options de l'encodeur. Par exemple, avec un codage à débit binaire constant, vous pouvez spécifier -rc:v cbr(ce qui est nettement plus rapide que la cbr_ld_hqméthode de contrôle du débit, apportant une augmentation supplémentaire de ~ 20% du débit). Notez que le préréglage sélectionné a le plus grand impact sur le débit , suivi par les options de préréglage (telles que la méthode de contrôle de débit utilisée) que vous pouvez éventuellement remplacer si vous le souhaitez.

Tenez compte de votre flux de travail d'encodage et ajustez-le si nécessaire. Votre kilométrage variera certainement, en fonction de votre contenu source, des chaînes de filtrage utilisées, de variables de configuration de plate-forme spécifiques (telles que votre GPU et les versions de pilote), etc.

Dans le même souffle, notez que NVIDIA a explicitement désactivé l'encodage entrelacé sur Turing à tous les niveaux, même dans la ligne 1660Ti qui utilise l'ancien encodeur Volta NVENC. Si vous avez besoin d'une prise en charge du codage entrelacé, veuillez plutôt passer à Pascal ou à des références plus anciennes.


1
Épique! Merci, après avoir travaillé avec l'encodage matériel pendant si longtemps, recommanderiez-vous cela sur l'encodage CPU ou les inconvénients de la qualité / taille de fichier sont-ils toujours aussi importants? Je veux dire qu'il y a beaucoup d'améliorations qui ont été apportées dans NVENC et NVENC HQ devrait être de qualité égale par rapport au x264 par défaut
Dr. Snail

@ Dr.Snail Je recommande de juger d'abord les exigences de votre flux de travail et de prendre tous les facteurs en considération avant de passer à une solution de codage basée sur le matériel. D'une part, NVENC, comme les autres solutions d'encodage basées sur SIP, produira toujours des performances considérablement plus rapides à une efficacité énergétique supérieure par rapport à une implémentation basée sur logiciel, tous les autres facteurs étant constants. Pour cela, appliquez une vitesse à un compromis de qualité comme prévu, puis pesez sur les fonctionnalités non prises en charge. Par exemple, avec NVENC, nous ne pouvons pas insérer directement les informations HDR et nous devons utiliser un outil externe pour cela.
林正浩

Des outils tels que celui-ci: github.com/SK-Hardwired/nv_hevc_hdr_patcher .
林正浩

Vous choisissez scale_npp=w=1920:h=1080parce que les filtres sont une chose qui profite le plus du GPU, non? Une autre chose, la limitation du débit binaire -b:v 1000k -minrate 500k -maxrate 3000ksemble rendre la taille de sortie plus prévisible
Dr. Snail

Oui, @ Dr.Snail. Les tailles de fichiers prévisibles sont une priorité.
林正浩

3

Mon expérience avec l'utilisation de nvenc est que vous devez lui dire quel bitrate vous voulez - il est par défaut VBR, ce qui est bien, mais aucun réglage ne compense le fait qu'il veut toujours vous donner un bitrate moyen de 2M, peu importe quel fichier de résolution vous l'alimentez. Cela ressemble à une faille dans l'encodeur; il fonctionne de manière prévisible à tous les autres égards, mais il a besoin (par exemple) -b:v 4Md'un fichier 720p ou -b:v 8Mde 1080p. Vous pouvez probablement les réduire un peu si vous le souhaitez aussi.


1

Libvorbis pour l'audio semble lent. ac3 devrait vous donner un boost de vitesse de 15% +.

Cela étant dit, quelque chose ne va pas avec votre pilote vidéo ou vous utilisez une ancienne copie de ffmpeg. q Je n'ai pas votre clip, mais j'ai récupéré un fichier SD ts de mon PVR et utilisé vos paramètres.

J'ai 700fps (les vôtres) sur une GTX750 (non TI) (la moins chère)

J'ai 925fps (Vos paramètres avec audio ac3)

L'autre recommandation que je peux faire est la suivante:

Modifiez votre qmax à environ 23.


J'ai testé cela avec une ancienne GTX 760 que j'ai trouvée avec 400FPS avec cette commande, ffmpeg40\bin\ffmpeg -hwaccel cuvid -c:v mpeg2_cuvid -i "E:\input.ts" -c:v h264_nvenc "E:\output.mp4"pourriez-vous s'il vous plaît ajouter votre code avec l'AC3 i.stack.imgur.com/CNaWM.png
Dr. Snail

Cela devrait fonctionner dans votre ligne de commande. Ajoutez-le à côté de votre -c: v h264_nvenc -c: a ac3 Vous devriez également pouvoir pousser 2 sessions. Ouvrez une 2e ligne de commande et encodez un autre .ts en même temps. Si vous le souhaitez, je serais heureux de tester l'un de vos fichiers .ts pour voir s'il y a autre chose à faire pour augmenter votre vitesse et votre qualité.
Don Giovanni
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.