Je souhaitais pouvoir le faire plusieurs fois maintenant, alors je demande.
Si j'ai un fichier vidéo ou audio existant, ffmpeg
, mplayer
et d' autres lecteurs multimédias peuvent détecter au moins certains de ses « IMMEUBLES » comme conteneur, le codec et le débit utilisé, probablement différents et la qualité codant pour les paramètres spécifiques de, etc.
Comment puis-je extraire ces paramètres d'un fichier existant afin de les utiliser (directement) pour l'encodage avec ffmpeg?
Par exemple, j'ai obtenu une mkv
vidéo encodée x264
avec certains paramètres et un autre avi
fichier non compressé . Je voudrais "copier" les paramètres d'encodage utilisés pour le fichier mkv x264 pour transcoder l'avi avec les mêmes paramètres.
Remarque: je cherche un moyen qui ne devrait pas inclure de travail humain avec la "traduction" des paramètres d'un décodeur vers l'encodeur. C'est correct si je dois d'abord extraire les paramètres et les enregistrer quelque part, mais j'aimerais pouvoir simplement alimenter les options de lecture vers une ligne de commande ou un fichier de configuration prédéfini pour ffmpeg.
ffprobe
( en particulier avec les-show_streams
et-show_format
options) et utiliser cette information pour l'écriture importante des choses-crf
option est généralement recommandée. Voir le Guide d'encodage FFmpeg et x264 .channels:6
un fichier vidéo, mais pour le coder, vous devez utiliser le commutateur-ch:6
. Certains commutateurs utilisent 1 lettre, certains en utilisent deux, etc.Réponses:
Il n'y a aucun moyen automatique de le faire. Vous devez regarder les paramètres du fichier d'origine et les appliquer au fichier de sortie.
Dans la plupart des cas, ce seront les suivants:
-filter:v scale
ou-s:v
-filter:v fps
-r
-pix_fmt
(par exemple,-pix_fmt yuv420p
devrait vous offrir la meilleure compatibilité)-g
Mais même si cela vous convient, certains appareils peuvent nécessiter des informations propriétaires spécifiques intégrées dans le flux binaire.
Quant à la tâche spécifique de l'utilisation
x264
, cela ne va pas être trivial. Je ne connais pas un seul script qui s'occuperait de ces tâches, qui sont généralement effectuées manuellement. Pour la plupart des informations sur les paramètres d'encodage, sur Unix / Linux ou OS X, vous pouvez utilisermediainfo
avec quelques astuces Bash.Par exemple, pour une vidéo encodée x264 dans un fichier MP4:
Cela affichera une liste d'options x264:
Vous pouvez ensuite transmettre manuellement ces options au binaire x264.
Si vous passez par FFmpeg, c'est un peu plus compliqué, car toutes les options de x264 ne peuvent pas ou ne devraient pas être mappées comme ça. Notez que souvent une simple présélection, un réglage et une spécification de profil feront aussi bien (comme vu dans
x264 --fullhelp
et le guide d'encodage x264 ), et spécifier le niveau CRF est suffisant.Et cela ne prend même pas en compte l'audio, où heureusement, il n'y a pas beaucoup d'options.
la source
mediainfo
sortie et mapperais ces options avec ffmpeg-x264-params
. (Voir également le guide d'encodage x264 ). Mais si vous voulez une solution générale pour toutes sortes de codecs / encodeurs ou formats de conteneurs, alors vous devrez écrire un script modérément sophistiqué qui effectue la conversion.