J'ai testé la plupart des autres réponses proposées à cette question. Les conclusions des données de test sont ci-dessous. Voici les réponses proposées que j'ai testées:
(BR) Modifiez le débit en utilisant:
ffmpeg -i $infile -b $bitrate $newoutfile
(CR) Faites varier le facteur de taux constant en utilisant:
ffmpeg -i $infile -vcodec libx264 -crf 23 $outfile
(SZ) Modifiez la taille de l'écran vidéo (par exemple, la moitié de sa taille en pixels) à l'aide de:
ffmpeg -i $infile -vf "scale=iw/2:ih/2" $outfile
(BL) Changez le profil H.264 en "baseline" en utilisant:
ffmpeg -i $infile -profile:v baseline $outfile
(DF) Utilisez le traitement par défaut de ffmpeg, en utilisant:
ffmpeg -i $infile $outfile
LES DONNÉES
- "taille" - taille en pixels de la vidéo convertie par rapport à l'original.
- "bitrate" - débit des vidéos originales et converties.
- "définition" - taille en pixels des vidéos.
- "convertir" - le temps de convertir la vidéo en secondes.
J'ai calculé le débit cible pour (BL) en utilisant la méthode proposée.
=== Fichier A - Comment le noeud aide à propulser Angular-Fnbixa7Ts6M.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 64152 kb 214% 76% 40% 83% 76%
bitrate 411 kb/s 883 313 165 342 313
definition 1920x1080 1920x1080 1920x1080 960x540 1920x1080 1920x1080
convert -- 648 509 225 427 510
=== Fichier B - Utilisation de GraphQL avec Angular _ By - Lee Costello-OGyFxqt5INw.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 410301 kb 33% 109% 28% 143% 109%
bitrate 2687 kb/s 880 2920 764 3843 2920
definition 3840x2160 3840x2160 3840x2160 1920x1080 3840x2160 3840x2160
convert -- 2307 3188 1116 2646 3278
CONCLUSIONS
La méthode (SZ) est certainement la méthode la plus rapide. C'était 2X à 4X plus rapide. Cela peut être très problématique pour les vidéos haute définition, car la conversion de toutes les autres méthodes a été plus longue que la durée réelle de la vidéo! Par exemple, la méthode (CR) prenait 53 minutes pour convertir la vidéo de 21 minutes.
La méthode (SZ) est certainement la meilleure méthode si la définition de la vidéo est plus grande que celle de l'écran qui l'affichera. Par exemple, si votre téléphone ne peut afficher qu'une image 1080p, il est inutile de lui envoyer une vidéo au format 3840x2160. Il serait préférable de réduire de moitié sa taille en 1080p.
Certaines des réponses proposées ont en réalité augmenté la taille de certaines vidéos. Par exemple, la méthode (BR) a plus que doublé la taille de l'échantillon 1080p. Il a cependant fait la taille 2160p un tiers. Pour l'échantillon haute définition, les méthodes (CR), (BL) et (DF) ont toutes AUGMENTÉ la taille de la vidéo.
Réponse correcte (ou meilleure)
Il est toujours préférable de réduire d’abord la résolution au maximum pris en charge par votre écran cible.
Si vous souhaitez réduire davantage la taille du fichier, cela dépendra des choix personnels. Vous pouvez réduire le contenu de l'information ou augmenter la compression.
Vous pouvez baisser davantage la résolution si cela ne vous concerne pas.
Si la vidéo n'inclut pas de scènes d'action rapides, vous souhaiterez peut-être réduire la fréquence d'images.
Si vous avez un processeur puissant et que l'espace est le seul problème, vous pouvez augmenter le taux de compression.
Le débit binaire est une combinaison de plusieurs facteurs. Il suffit donc de demander à ffmpeg de réduire le débit binaire pour ne pas obtenir les résultats souhaités.
Un autre moyen de réduire le contenu d'information consiste à réduire la profondeur de couleur. Comment faire cela n'a pas encore été discuté.
ffmpeg
page de manuel affiche une-fs
option permettant de limiter la taille de la sortie. Est-ce que quelque chose comme çaffmpeg -i in.avi -fs 100M out.avi
marche?