Auteur Sujet: FFmpeg: Encoder en H.262 ou MPEG-2  (Lu 6754 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
FFmpeg: Encoder en H.262 ou MPEG-2
« le: 31 juillet 2021 à 18:08:44 »
Tutoriel pour encoder en H.262 ou MPEG-2 Part 2 avec FFmpeg
 

H.262 également appelé MPEG-2 Part 2 ou MPEG-2 Video (recommandation ITU-T H.262 et ISO/IEC 13818-2) est un format de codage vidéo propriétaire qui a été le plus utilisé avant l'arrivée du H.264 (MPEG-4 Part 10).
Le codec vidéo MPEG-2 est ancien : Le processus d'approbation ISO/IEC a été achevé en novembre 1994.

Vous pensez ne pas utiliser le MPEG2 ? Le DVD, créé en décembre 1995, utilise uniquement cette norme. C'est aussi le cas de la TNT en France, de 2005 à 2016.

Pourquoi j'ai réalisé ce tutoriel ? Car, l’encodage en MPEG-2 avec FFmpeg est bien plus compliqué que le H.264, et qu'il n'y a que peu de documentation, contrairement aux codecs populaires.
Note : La vidéo MPEG-2 n'est pas du tout optimisée pour les faibles débits et le codec MPEG-2 n'est pris en charge par aucun grand navigateur web.

Pour comparer, à qualité équivalente, MPEG-2 nécessite 20 fois plus de débits que AV1. Un flux 1080p AV1 à 1 Mb/s à la même qualité qu'un flux MPEG-2 à 20 Mb/s.




Profile à utiliser pour encoder en MPEG-2 Part 2

Comme H.264, H.262 à différents profils : Simple, Main, High, ...

En H.264 le profil High est le plus utilisé, mais attention à ne pas calquer vos habitudes pour H.262 : Le profil High H.262 est un profil exotique très peu pris en charge. Il prend en charge des choses exotiques comme l'évolutivité spatiale, qui encode la différence entre les flux HD et SD mis à l'échelle, qui est combinée avec la SD pour recréer le flux HD. Bref, un truc qui doit être bien complexe à mettre en oeuvre. Le profil High gère aussi la chrominance 4:2:0 ou l'évolutivité SNR. Je ne connais pas de cas où il est utilisé.

Bref, il faut privilégier le "Main profile" qui peut être abrégé par MP.




Level à utiliser

La norme H.264 définit 20 niveaux ou "levels", de 1 à 6.2. Un niveau est un ensemble de contraintes pour un flux. Un décodeur qui se conforme à un niveau donné doit être capable de décoder tous les flux binaires qui sont codés pour ce niveau et pour tous les niveaux inférieurs. Les niveaux pouvant être mis en œuvre dépendent de la capacité matérielle. Un flux 360p ou 480p à en H.264 un level de 3.0, un flux 720p un level de 3.1, un flux 1080p un level 5.0,...

En H.262, c'est différent, on a seulement 4 niveaux :
- Low Level (ou LL) : limitation à 30 images/sec, définition 352 x 288 et 4 Mb/s
- Main Level (ou ML) : limitation à 30 images/sec, définition 720 x 576 et 15 Mb/s : utilisable pour du 360p (640 x 360 en 16/9) et du 480p, mais uniquement en 4/3 (640x480).
- High 1440 (ou H-14) : limitation à 60 images/sec, définition 1440 x 1152 et 60 Mb/s : utilisable pour du 480p (854 x 480 en 16/9) et 720p (1280 x 720 en 16/9).
- High Level (ou HL) : limitation à 60 images/sec, définition 1920 x 1152 et 80 Mb/s : utilisable pour du 1080p (1920 x 1080 en 16/9)

Pour une compatibilité DVD-Vidéo, il faut se limite au "Main profile" associé au "Main Level" et ne pas dépasser un débit de données vidéo variable jusqu'à 9,8 Mbit/s.
La définition vidéo 480p en 16:9 soit 854 x 480 n'est normalement pas prise en charge par les lecteurs DVD, car on dépasse les 720 pixels en largeur du "Main Level".
La définition maximale du DVD est en fonction du nombre d'images par seconde :
- 720 × 576 à 23,976, 24 ou 25 images par seconde ;
- 720 × 480 à 29,97 ou 30 images par seconde.

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
FFmpeg: Encoder en H.262 ou MPEG-2
« Réponse #1 le: 31 juillet 2021 à 18:09:55 »
Nombre d'images par seconde

mpeg2video ne prend en charge que des fréquences d'images spécifiques (voir ffmpeg -h encoder=mpeg2video), toutefois la norme est encore plus restrictive :
Les fréquences d'images supportées sont :
- 23,976 images/sec
- 24 images/sec
- 25 images/sec
- 29,97 images/sec
- 30 images/sec
- 50 images/sec (uniquement sur le niveau "High 1440" ou "High Level")
- 59,94 images/sec (uniquement sur le niveau "High 1440" ou "High Level")
- 60 images/sec (uniquement sur le niveau "High 1440" ou "High Level")

Si vous êtes hors de ces fréquences, il est recommandé d'utiliser l'option -r de ffmpeg pour adapter votre fréquence d'image. ffmpeg supprimera ou dupliquera simplement des images pour correspondre à la fréquence d'images de sortie souhaitée.

Avec MPEG2, l'impact de l'augmentation du nombre d'images par seconde à un impact important sur le débit (en mode qualité constante). Pour faire simple, passer de 24 à 60 images par secondes va doubler le débit nécessaire. L'encodeur H.264 ou HEVC (H.265) est moins impacté, l'augmentation de taille est réduite en mode qualité constante.




Débit maximum pour un DVD :

Le débit binaire du conteneur (vidéo + audio 1 +  audio 2 + audio 3 + sous-titres + ...) ne doit pas dépasser 10,08 Mbit/s pour un DVD (limite de débit de lecture d'un DVD 1x).
Une option permet à FFmpeg de ne pas dépasser : -muxrate 10080k.

Il y a aussi des limites pour chaque type de flux :
- vidéo H.262 : limite de 9,8 Mbit/s maximum pour le flux vidéo
- audio PCM (audio non compressé) : limite de 6 144 knit/s par flux audio. 2 à 6 canaux (stéréo à 5.1). Taux d'échantillonnage de 48 kHz ou 96 kHz, PCM linéaire 16 bits ou 24 bits. Note, le PCM 16 bits 48 kHz 8 canaux est autorisé par la spécification DVD-Vidéo, mais n'est pas bien pris en charge par de nombreux lecteurs DVD.
- audio MPEG-1 Audio Layer II (MP2) : limite de 912 kbit/s. 1 à 8 canaux (mono à 7.1). Taux d'échantillonnage de 48 kHz.
- audio AC-3 : limite de 448 kbit/s maximum par flux audio AC3. 1 à 6 canaux (mono à 5.1). Taux d'échantillonnage de 48 kHz.
- audio DTS : canaux = 2.0, 2.1, 5.0, 5.1, 6.1. Débits pour 2.0 et 2.1 = 377,25 et 503,25 kbit/s, débits pour 5.x et 6.1 = 754,5 et 1509,75 kbit/s. Fréquence d'échantillonnage de 48 kHz ou 96 kHz.
- sous-titres : limite de 3,36 Mbit/s maximum

Les vidéos encodées professionnellement ont en moyenne un débit binaire de 4 à 5 Mbit/s avec un maximum de 7 à 8 Mbit/s dans les scènes d'action intense. L'encodage à un débit inférieur au débit binaire maximal est généralement effectué pour permettre une plus grande compatibilité entre les lecteurs DVD.

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
FFmpeg: Encoder en H.262 ou MPEG-2
« Réponse #2 le: 31 juillet 2021 à 18:10:00 »
Vidéo :

Contrairement à H.264 où les paramètres par défaut de ffmpeg assurent une bonne qualité, la qualité par défaut est très faible avec H.262 et la qualité est liée a plusieurs paramètres qui sont liés entre eux (modifier un seul paramètre risque d’entraîner des erreurs).

Qualité vidéo :
Deux possibilités : débit fixe ou qualité fixe.
Le débit fixe, c'est du gâchis lors des scènes qui nécessite peu de débit, je préfère mettre une qualité variable et un débit maximum (le débit maximum est pour ne pas dépasser la capacité de lecture ou de décodage du lecteur)

Qualité fixe (recommandé) : Fixer la qualité d'encodage : -q:v 2 : Le nombre ici à 2 peut être modifié entre 2 et 31. 2= la meilleure qualité et 31 la pire qualité (1 accepté, mais il ne va pas en dessous de 2). Il y a un forte dégradation de la qualité au-delà de 4 ou 5.

Débit moyen fixé : Pour un débit d'encodage moyen de 6 Mbit/s : -b:v 6000k.


Débit maximal ou maxrate :

-maxrate:v 9000k : Aussi bien pour un débit fixe qu'une qualité fixe, il faut fixer un débit maximum sur une durée de la taille du buffer. Ne pas fixer ce débit maximal entraine un flux qui sera généralement illisible. Attention en qualité fixe : pour ne pas avoir des erreurs affichées en rouge lors de la compression, il faut donc augmenter maxrate parallèlement avec l'augmentation de la résolution ou du nombre d'image par seconde.

Pour mon flux 720p j'ai essayé plusieurs valeurs et de maxrate (mon souhait est de rester avec un q de 2) et je dois augmenter le débit maximum à 12 Mb/s minimum pour ne plus avoir d'erreur (pour d'autres vidéos 720p j'ai même dû monter à 15 Mb/s).
Vous vous dites que si cela se trouve, on a monté le maxrate à un débit tellement élevé qu'il est inutile ? La réponse est non. Sans le maxrate, le débit monte encore plus haut.


Taille du buffer vidéo :

Le buffer vidéo bufsize ne doit être spécifié que s'il y a une contrainte en termes de débit (comme -maxrate:v 9000k). Spécifier un buffer bufsize sans contrainte de débit mettra en erreur ffmpeg. En cas de flux sans contrainte de débit, il faut préciser un "VBV buffer" sachant que sa valeur par défaut provoquera des problèmes à haut débit. Comme je pense qu'il n'est pas prudent de mettre aucune contrainte sur le débit (pb de lecture), je ne parle pas du "VBV buffer" ici.
Pour une vidéo de qualité (-q:v 2 avec -maxrate:v 9000k), ne pas toucher au buffer par défaut va provoquer des erreurs :
buffer underflow - packet too large, ignoring buffer limits to mux it
La taille du buffer par défaut, si non spécifié dans la ligne de commande, est déterminé automatiquement par ffmpeg (sa valeur n'est pas fixe) et le buffer est de quelques dizaines de ko à quelques centaines de Ko (le maximum que j'ai eu, c'est 224 Ko pour un flux encodé en 720p, q:v 2 avec limitation à 9 Mb/s), ce qui est bien trop petit.
Spécifier un buffer de 1,8 Mo, adapté à un encodage DVD : -bufsize:v 1835008
Pour un flux 720p, il est nécessaire d'augmenter le buffer de 1,84 Mo à 2,00 Mo permet de ne plus avoir d'erreur avec un débit maximum de 11 Mb/s en restant avec un q de 2.
Il ne faut pas non plus mettre de valeur trop grande, on aurait aussi des erreurs.

Je dois dire que déterminer la taille du buffer n'est pas évident, s'il est trop grand, on se prend aussi des buffer underflow (sans le message "packet too large, ignoring buffer limits to mux it") !
Il faut bien sûr adapter le buffer en fonction de la définition vidéo de votre flux, de la qualité et du débit maximum autorisé.
Les codecs plus récents sont plus simples à utiliser et n'ont pas ces problématiques.

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
FFmpeg: Encoder en H.262 ou MPEG-2
« Réponse #3 le: 31 juillet 2021 à 18:10:24 »
Les autres paramètres importants pour la vidéo :

- -minrate:v 0 : Débit minimum à 0. À mettre systématiquement, sauf pour des usages spécifiques en CBR.
- -filter:v "scale=640:-1" : Optionnel, c'est pour réduire la définition vidéo à 640 pixels de large (360p en 16/9)
- -filter:v "scale=1280:-1" : Optionnel, c'est pour réduire la définition vidéo à 1280 pixels de large (720p en 16/9)
- -pix_fmt yuv420p : Structures d'échantillonnage de sous-échantillonnage de chrominance utilisé dans les vidéos grand public (quel que soit le codec vidéo). Pour plus d'information :Wikipédia.
- -g 15 : Taille du GOP en nombre d'images. Valeur conseillée en H.262 : 15 pour un flux à 24/25 images par secondes, 18 pour un flux à 30 images par secondes, 30 pour un flux à 50/60 images par secondes. Il est possible de monter à des valeurs plus importantes (maximum réaliste de 100) mais avec des incompatibilités avec les lecteurs hardware. Avec des codecs vidéos plus modernes, il est conseillé d'avoir un GOP bien plus élevé (240 est recommandé pour VP9 par exemple).


L'option -target pal-dvd est un raccourci vers -c:v mpeg2video -c:a ac3 -f dvd -s 720x576 -r 25 -pix_fmt yuv420p -g 15 -b:v 6000k -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008 -packetsize 2048 -muxrate 10080k -b:a 448k -ar 48000
C'est pour vous inspirer, mais le débit audio à 448 Kb/s est délirant si le flux est stéréo.


Les erreurs "rc buffer underflow"

La limitation de débit -maxrate:v 9000k va entraîner des erreurs "rc buffer underflow max bitrate possibly too small or try trellis with large lmax or increase qmax" pour un flux 720p, sur les parties très animées qui demandent un très haut débit d'encodage. La solution d'augmenter le lmax ou le qmax de 31 à 1024, 1024 est la valeur maximum (-qmax 1024) va transformer l'erreur en simple "rc buffer underflow".

La solution pour ne pas avoir ces erreurs ?
Augmenter lmax, qmax ou lax et qmax n'est pas une solution, j'ai testé avec de nombreux encodages, il faut :
- soit réduire la qualité en augmentant le -q:v 2
- soit augmenter le débit maximum en augmentant le -maxrate:v 9000k (valeur utilisée pour un DVD)
- soit augmenter (raisonnablement) la taille du buffer -bufsize:v 1835008 (valeur utilisée pour un DVD)

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
FFmpeg: Encoder en H.262 ou MPEG-2
« Réponse #4 le: 01 août 2021 à 22:23:46 »
Audio :



Les lecteurs DVD sont tous compatibles avec 3 formats : PCM (non compressé), MP2 (MPEG-1 Audio Layer II) ou Dolby Digital AC-3 (c'est le codec le plus efficace entre les 3).
Le DTS n'est pas universellement pris en charge par les lecteurs. cf https://en.wikipedia.org/wiki/DVD-Video
Pour une lecture sur PC, le format MPEG-1 Audio Layer III (MP3) est une solution régulièrement utilisée.

Paramétrages des codecs audio :

- Copie des flux audio d'origine : -c:a copy : La recopie risque de rendre le flux illisible : Unsupported audio codec. Must be one of mp1, mp2, mp3, 16-bit pcm_dvd, pcm_s16be, ac3 or dts.

- Audio PCM (non compressé) : limite de 6 144 kbit/s par flux audio. 2 à 6 canaux (stéréo à 5.1). Taux d'échantillonnage de 48 kHz ou 96 kHz, PCM linéaire 16 bits ou 24 bits. Note, le PCM 16 bits 48 kHz 8 canaux est autorisé par la spécification DVD-Vidéo, mais n'est pas bien pris en charge par de nombreux lecteurs DVD.

- Audio MPEG-1 Audio Layer II (MP2) : -c:a mp2 : limite de 912 kbit/s. 1 à 8 canaux (mono à 7.1). Taux d'échantillonnage de 48 kHz. Débit d'encodage recommandé de 384 Kbit/s en stéréo.

- Audio Dolby Digital AC-3 : -c:a ac3 -f dvd : limite de 448 kbit/s maximum par flux audio AC3. 1 à 6 canaux (mono à 5.1). Taux d'échantillonnage de 48 kHz. Pour éviter d'avoir l'erreur ac3 in MPEG-1 system streams is not widely supported, consider using the vob or the dvd muxer to force a MPEG-2 program stream, il faut rajouter l'option -f dvd. Débit d'encodage recommandé de 192 Kbit/s en stéréo.

- Audio DTS : canaux = 2.0, 2.1, 5.0, 5.1, 6.1. Débits pour 2.0 et 2.1 = 377,25 et 503,25 kbit/s, débits pour 5.x et 6.1 = 754,5 et 1509,75 kbit/s. Fréquence d'échantillonnage de 48 kHz ou 96 kHz.

- Audio MPEG-1 Audio Layer III (MP3) : -c:a libmp3lame :  Débit d'encodage recommandé de 192 Kbit/s en stéréo. Non officiellement supporté par les lecteurs DVD (mais supporté par les lecteurs sur PC).


Débit du flux audio :
-b:a 192k : Indique un débit fixe pour le flux audio de 192 Kb/s.

Forcer le taux d'échantillonnage à 48 kHz. :
Les lecteurs DVD peuvent ne pas supporter des taux d'échantillonnage exotiques, c'est-à-dire autre que 48 kHz avec AC-3 ou MPEG-1 Audio Layer II.
-ar 48000 : définit le taux d'échantillonnage des flux audio à 48 000 Khz.

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
FFmpeg: Encoder en H.262 ou MPEG-2
« Réponse #5 le: 04 décembre 2022 à 21:45:56 »
Exemples d'encodage d'une vidéo en MPEG-2 :

Les paramétrages ci-dessous sont avec une qualité moyenne -q:v 4 :, toutefois maxrate et bufsize sont paramétrés
pour fonctionner avec une haute qualité -q:v 2 : ou une qualité faible -q:v 6 :.

# 360p (640 x 360) 24 images par seconde - profil Main, level "Main" (ou ML) compatible avec les pré-requis DVD
ffmpeg -i "201411_blender_big_buck_bunny_60fps_2250p_h264-high.mp4" -filter:v "scale=640:-1,fps=24" -pix_fmt yuv420p -c:v mpeg2video -g 15 -q:v 4 -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008 -packetsize 2048 -muxrate 10080k -c:a ac3 -f dvd -b:a 128k -ar 48000 -ac 2 "201411_blender_big_buck_bunny_24fps_360p_mpeg2.mpg"
Encodage réalisé : 201411_blender_big_buck_bunny_24fps_360p_mpeg2.mpg

# 480p (854 x 480) 24 images par seconde - profil Main, level "High 1440" (ou H-14) paramètres proche du DVD (seul le profil et la largeur de la vidéo est non compatible)
ffmpeg -i "201411_blender_big_buck_bunny_60fps_2250p_h264-high.mp4" -filter:v "scale=854:-1,fps=24" -pix_fmt yuv420p -c:v mpeg2video -g 15 -q:v 4 -maxrate:v 9000k -minrate:v 0 -bufsize:v 1835008 -packetsize 2048 -muxrate 10080k -c:a ac3 -f dvd -b:a 192k -ar 48000 -ac 2 "201411_blender_big_buck_bunny_24fps_480p_mpeg2.mpg"
Encodage réalisé : 201411_blender_big_buck_bunny_24fps_480p_mpeg2.mpg

# 720p (1280 x 720) 24 images par seconde - profil Main, level "High 1440" (ou H-14)
ffmpeg -i "201411_blender_big_buck_bunny_60fps_2250p_h264-high.mp4" -filter:v "scale=1280:-1,fps=24" -pix_fmt yuv420p -c:v mpeg2video -g 15 -q:v 4 -maxrate:v 18000k -minrate:v 0 -bufsize:v 2000k -c:a ac3 -f dvd -b:a 256k -ar 48000 -ac 2 "201411_blender_big_buck_bunny_24fps_720p_mpeg2.mpg"
Encodage réalisé : 201411_blender_big_buck_bunny_24fps_720p_mpeg2.mpg

# 720p (1280 x 720) 60 images par seconde - profil Main, level "High" (ou HL)
ffmpeg -i "201411_blender_big_buck_bunny_60fps_2250p_h264-high.mp4" -filter:v "scale=1280:-1" -pix_fmt yuv420p -c:v mpeg2video -g 30 -q:v 4 -maxrate:v 34000k -minrate:v 0 -bufsize:v 2500k -c:a ac3 -f dvd -b:a 256k -ar 48000 -ac 2 "201411_blender_big_buck_bunny_60fps_720p_mpeg2.mpg"
Encodage réalisé : 201411_blender_big_buck_bunny_60fps_720p_mpeg2.mpg

# 1080p  (1920 x 1080) 24 images par seconde - profil Main, level "High" (ou HL)
ffmpeg -i "201411_blender_big_buck_bunny_60fps_2250p_h264-high.mp4" -filter:v "scale=1920:-1,fps=24" -pix_fmt yuv420p -c:v mpeg2video -g 15 -q:v 4 -maxrate:v 34000k -minrate:v 0 -bufsize:v 2500k -c:a ac3 -f dvd -b:a 256k -ar 48000 -ac 2 "201411_blender_big_buck_bunny_24fps_1080p_mpeg2.mpg"
Encodage réalisé : 201411_blender_big_buck_bunny_24fps_1080p_mpeg2.mpg

# 1080p  (1920 x 1080) 60 images par seconde - profil Main, level "High" (ou HL)
ffmpeg -i "201411_blender_big_buck_bunny_60fps_2250p_h264-high.mp4" -filter:v "scale=1920:-1" -pix_fmt yuv420p -c:v mpeg2video -g 30 -q:v 4 -maxrate:v 70000k -minrate:v 0 -bufsize:v 3000k -c:a ac3 -f dvd -b:a 256k -ar 48000 -ac 2 "201411_blender_big_buck_bunny_60fps_1080p_mpeg2.mpg"

Encodage réalisé : 201411_blender_big_buck_bunny_60fps_1080p_mpeg2.mpg

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
FFmpeg: Encoder en H.262 ou MPEG-2
« Réponse #6 le: 04 décembre 2022 à 21:46:31 »
Quels débit pour quel qualité en MPEG-2 ?

Voici un tableau de ce que cela donne en termes de débit, pour une qualité faible -q:v 6 :, une qualité moyenne -q:v 4 : et une haute qualité -q:v 2 : :

(Cliquer sur le tableau pour zoomer)


Lien pour télécharger le tableur : 202212_debit_video_encodage_mpeg2.ods

Vidéo source utilisée : Vidéo H.264 (AVC) profil High, définition : 4000 x 2250 à 60 images par seconde. Taille du fichier : 790 937 546 octets - débit moyen : 10 546 kbit/s.
La vidéo source a deux flux audio :  audio AC-3 5.1 à 320 Kb/s + audio MP3 stéréo à 160 kbit/s.


vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
FFmpeg: Encoder en H.262 ou MPEG-2
« Réponse #7 le: 04 décembre 2022 à 21:50:22 »
Vitesse du transcodage

MPEG-2 est un codec qui est rapide à encoder.
Attention, réduire la définition de la vidéo d'origine peut être le plus consommateur en CPU.

J'ai fait des tests sur une vidéo 1080p H.264 de 50 minutes :
- Source : H.264 1920x1080 à 30 images par seconde et un encodage de 6,8 Mb/s et audio stéréo 48 Khz AAC encodé à 192 Kb/s.
- Fichier transcodé : MPEG2 H.262 1280x720 à 30 images par seconde et un encodage de 6,8 Mb/s Profil "Main" Level "High 1440" et audio stéréo 48 Khz AC-3 encodé à 192 Kb/s.
C'est un hasard, mais le fichier source comme destination fait 2,7 Go. La taille reste identique, j'ai juste baissé la définition vidéo.

Le débit de transcodage se fait à :
- 4,8x sur un Core i5-8250U de 2017 (4 cœurs 64bits cadancé de 1.6 GHz à 3,4 GHz)
- 0,85x sur un Pentium T2080 de 2007 (2 cœurs 32bits cadancé à 1,73 Ghz)

L'encodage sur les 2 cœurs du Pentium T2080 ou les 4 cœurs du Core i5-8250U n'est pas tout à fait équivalent : avec le même fichier source, même ligne de commande, on a des petites différences en taille (2 653 627 Ko sur 4 cœurs et 2 678 931 Ko sur 2 cœurs) et surtout dans mon cas des erreurs "rc buffer underflow" dans un cas et pas dans l'autre, car je devais être à la limite (j'ai depuis modifié mon tutoriel pour avoir -maxrate:v moins limite.

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
FFmpeg: Encoder en H.262 ou MPEG-2
« Réponse #8 le: 04 décembre 2022 à 21:50:45 »
Pourquoi vouloir encoder en 2022 en MPEG-2 ?

Pour diffuser de la vidéo sur un équipement non compatible avec le H.264 ou qui ne sait pas bien gérer le H.264. Les vieux PC ont par exemple un décodage du MPEG-2 accélérer matériellement, ce qui n'est pas le cas du H.264, trop récent. Le décodage logiciel du H.264 impose de baisser fortement la définition vidéo, alors que le même PC est capable de diffuser un flux HD en MPEG-2 !




Si vous cherchez les caractéristiques des iGPU d'Intel, tout est détaillé sur https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
FFmpeg: Encoder en H.262 ou MPEG-2
« Réponse #9 le: 04 décembre 2022 à 21:51:20 »
Conseils pour lire des vidéos sur un PC un peu juste au niveau CPU pour la définition vidéo visée

Quel système d'exploitation privilégier ?

Pour une vidéo dans un navigateur, Windows ou Linux, cela n'a pas d'incidence, si on est limite en termes de microprocesseur / GPU, on aura le même rendu.

Le seul cas où Linux peut avoir un avantage :
- Si le système a moins de 4 Go de RAM, Windows consommant plus de RAM qu'un Linux (1 Go de différence pour un Linux sous Gnome, plus pour un Linux LXDE ou XFCE), on peut se retrouver trop juste sous Windows et le swap va dégrader les performances.
- Windows a tendance à avoir plus de process en arrière-plan qui utilise du processeur. Habituellement, cela ne se sent pas, mais si le PC est un peu juste pour lire une vidéo, ces process en arrière-plan vont dégrader la vidéo.


Quel navigateur utiliser pour une vidéo en ligne ?

Les navigateurs basés sur Chromium (Chrome, Chromium, Edge,...) peuvent être un tout petit peu plus performant que Firefox pour la lecture vidéo. Il y a peu de différences, mais quand on est juste, cela peut avoir un impact.


Quel logiciel de lecture vidéo pour lire une vidéo enregistré localement ?

Je n'ai testé que deux logiciels sous Linux Ubuntu 18.04 LTS 32 bits sur un PC équipé d'un Pentium T2080, carte graphique intel GMA 950 (3ᵉ génération) et 2 Go de RAM:
- Le lecteur vidéo Totem 3.26.0, le lecteur vidéo par défaut sous Gnome
- VLC 3.0.8 Vetinari

Dans les deux cas, la lecture vidéo de mon flux MPEG-2 HD 720p sollicite peu le processeur (30% environ) toutefois, avec Totem, j'ai des images qui sautent et pas avec VLC, donc le choix est vite fait.

Je ne sais pas ce qui fait que Totem a des images qui sautent alors que la charge CPU moyenne est faible. J'imagine qu'il doit y avoir des pics de très courte durée qui bloquent des images.

Le fait que le GPU soit très limité avec une carte graphique Intel GMA 950 de 3ᵉ génération est peut-être la cause. Un PC de la même année avec un CPU un peu plus puissant et 64 bits, mais surtout avec une carte de 4ᵉ génération (il y a eu un gros gap chez Intel entre la 3ᵉ et 4ᵉ génération) se comporte bien mieux et gère bien toutes les vidéos en 720p H.264 (YouTube, Netflix, etc) dans un navigateur web.