Réduction de la taille de la vidéo avec le même format et la réduction de la taille de l'image
Cette question pourrait être très basique
Est-il un moyen de réduire la taille d'image/cadence de compressés avec Perte (WMV, MPEG, format, pour obtenir une vidéo de plus petite taille, de petite taille, avec un format similaire.
Sont là toute l'open source ou propriétaires des api pour cela?
Vous devez vous connecter pour publier un commentaire.
ffmpeg fournit cette fonctionnalité. Tout ce que vous devez faire est d'exécuter quelque chose comme
Pour les nouvelles versions de ffmpeg vous avez besoin de changer
-b
à-b:v
:pour convertir le fichier vidéo d'entrée pour une vidéo avec une taille de 640 x 480 et un débit de 512 kbits/sec en utilisant le codec vidéo MPEG 1 et une simple copie de l'original de flux audio. Bien sûr, vous pouvez le brancher à toutes les valeurs que vous avez besoin et de jouer avec la taille et du débit d'atteindre la qualité/taille de compromis que vous recherchez. Il y a aussi une tonne d'autres options décrites dans le la documentation
Exécuter
ffmpeg -formats
ouffmpeg -codecs
pour une liste de tous les formats et codecs. Si vous n'avez pas à cibler un codec spécifique pour le résultat final, vous pouvez obtenir de meilleurs taux de compression avec un minimum de perte de qualité en utilisant un état de l'art codec comme H. 264.-b
pour le bitrate vidéo et-ab
pour le bitrate audio, mais il a changé de-b:[stream specifier]
.ffmpeg -i <inputfilename> -s 640x480 -b 512k -vcodec mpeg1video -acodec copy <outputfilename>
ffmpeg -i input.mp4 -s 640x480 -b:v 512k -acodec copy output.mp4
qui réduit un 21M vidéo à 4,6 M fine.-crf 23
est assez raisonnable, à travers une gamme de résolutions et les types de contenu.Si vous voulez garder la même taille de l'écran, vous pouvez envisager d'utiliser des crf facteur: https://trac.ffmpeg.org/wiki/Encode/H.264
Voici la commande qui fonctionne pour moi: (sur mac vous avez besoin d'ajouter
-strict -2
pour être en mesure d'utiliser le codec audio aac.-c:a aac
). Utilisation-c:a libopus -b:a 64k
ou quelque chose comme ça. (Mais notez que MP4 conteneurs ne peuvent pas tenir Opus audio.)-b:v 1M
remplace-crf
. N'utilisez pas les deux. Suffit d'utiliser la CRF.Au lieu de choisir fixe des taux de bit, avec le H. 264 codec, vous pouvez également choisir un preset différent, comme décrit à https://trac.ffmpeg.org/wiki/x264EncodingGuide. J'ai aussi trouvé L'encodeur vidéo de comparaison à KeyJ blog (version archivée) une lecture intéressante, il compare H. 264 contre Theora et autres.
Suit est une comparaison des différentes options que j'ai essayé. La vidéo enregistrée a été à l'origine 673M dans la taille, pris sur un iPad à l'aide de RecordMyScreen. Il a une durée d'environ 20 minutes avec une résolution de 1024x768 (avec la moitié de la vidéo étant vide, j'ai donc recadré à 768x768). Afin de réduire la taille, j'ai baissé la résolution de 480x480. Il n'y a pas de son.
Les résultats, en prenant les mêmes 1024x768 comme la base de (et en appliquant le recadrage, le redimensionnement et la un filtre):
-b 512k
ajoutée, la taille est tombé à 77M (temps d'encodage: 1m17s).-preset veryslow
(et pas-b
), il est devenu 70M (temps d'encodage: 6m14s)-b 512k
et-preset veryslow
, la taille devient 77M (100K plus petit que juste-b 512k
).-preset veryslow -crf 28
, j'obtiens un fichier de 39M qui a eu 5m47s (pas de visuel de la qualité de différence pour moi).N=1, afin de prendre les résultats avec un grain de sel et d'effectuer vos propres tests.
-crf 23
. Mais oui, pour encoder-une fois les flux beaucoup de, vous devriez utiliser quelque chose comme-preset veryslow
. Pas étonnant, ce n' très bien sur une capture d'écran. Habituellement, vous n'avez pas besoin de réduire la résolution, à moins que vous visez pour très faibles débits; laissant les détails répartis sur plus de pixels tend à aider les codecs garder les détails de mieux. Artefacts autour des bords tranchants ont tendance à être un nombre fixe de pixels supérieur rez rend les objets plus petits. (Même si de moins en moins de bits par pixel signifie que plus de la quantification, certains de qui est flou au lieu d'artefacts.)Il y a une application pour Mac & Windows appel de Frein à main, je sais que ce n'est pas la ligne de commande des trucs, mais pour un rapide ouvrir le fichier - sélectionnez le format de fichier de sortie & approximative de la taille de sortie, tout en gardant la plupart des bonnes choses à propos de la vidéo, alors c'est bon, c'est juste une vue graphique de ffmpeg à son meilleur ...
Il prend en charge la ligne de commande d'entrée pour ceux qui ont la vie dure détenteurs de téléphones cellulaires..
https://handbrake.fr/downloads.php
-je fichier d'entrée
-b:v videobitrate de sortie vidéo en kilo-octets (vous devez essayer)
-s dimensions de la vidéo de sortie
-fs FILESIZE de sortie vidéo en kilo-octets
-vcodec videocodec (utiliser
ffmpeg -codecs
à la liste de tous les codecs disponibles)-fs
fait FFmpeg arrêter de codage après que la taille du fichier est atteinte. Ce n'est pas un cible de la taille du fichier pour le calcul du taux. Si vous avez-b:v
droit, votre fichier sera à la bonne taille tout de même, et si vous vous êtes trompé, il sera plus petite ou tronquée.J'ai eu envie de le faire aussi, récemment, j'ai donc créé un outil appelé Emballé qui utilise FFmpeg pour transcoder les vidéos, tout en préservant autant de métadonnées d'origine que possible (y compris la modification de fichier horodateurs).
Vous pouvez l'exécuter comme un conteneur docker:
Où:
convertir
Puis il trouve de façon récursive tous les fichiers vidéo qui correspondent à l'extension et de transcoder tous dans les fichiers du même nom avec un
-tc
suffixe.Pour plus d'options de configuration, les paramètres prédéfinis pour GoPro etc, voir le readme.
Espère que cela aide quelqu'un!