Forum général.cherche-logiciel conversion en masse vidéo formats multiples

Posté par . Licence CC by-sa.
Tags : aucun
2
26
nov.
2016

Bonjour,

J'ai une collection de vidéos réalisées avec divers appareils (téléphone, appareil photo, caméscope). Elles sont donc dans des résolutions et encodages différents mais souvent dans des vieux formats pas du tout optimisés (par exemple un .mov de 700Mo pour 4mn de vidéo).

Je cherche un script ou un programme qui me reconvertirait tout ça dans un format moderne et pérenne, qui réduirait le poids des vidéos tout en gardant une qualité optimum. Ça serait vraiment long je pense de faire ça manuellement et en plus je n'y connais rien dans les codecs vidéos actuels.

Merci d'avance pour vos idées.

  • # Petit script perso.

    Posté par . Évalué à 4. Dernière modification le 26/11/16 à 12:33.

    Bon, je ne m'en sers que pour les fichiers MTS, mais quelques modifications devraient te permettre de l'accommoder à ta sauce.

    #!/bin/bash
    for fichier in *.MTS ; do
    avconv -i "$fichier" -threads 2 -s 1920x1080 -vcodec libx264 -acodec mp3 -qscale 1 -pass 1 -r 30 -y "${fichier%.MTS}.mp4"
    
    done
  • # avec ffmpeg

    Posté par . Évalué à -10. Dernière modification le 26/11/16 à 12:33.

    tout standardiser n'est pas une affaire facile,cependant avec cette commande il est possible de faire des tests de qualité
    dans un repertoire ou il n'y a que des vidéos et différents conteneurs, mpg mov avi mkv etc…
    vous aurez des fichiers: nom-du-fichier-d'origine(new).mkv

    for f in $(find . -name '*.*'); do ffmpeg -i "$f" options-pour-ffmpeg "${f%.*}(new).mkv"; done
    • [^] # Re: avec ffmpeg

      Posté par . Évalué à 3.

      Ça ne fonctionnera pas si tu as des espaces (ou d'autres caractères amusants) dans tes fichiers ou leurs chemins.
      Puisque la boucle for ne sert qu'à lancer ffmpeg, on peut faire presque la même chose avec le -exec de find (avec moins de possibilités pour le nouveau nom):

      find . -name '*.*' -exec ffmpeg -i \{\} [options...] \{\}-new.mkv \;
      

      Ou pour des choses plus complexes tu utilise l'option -print0 de find combiné par exemple à un "xargs -0 -L 1".

      Et puis, le find est trop général, iol faudrait au moins exclure les fichiers *.mkv pour ne pas les recoder une deuxième fois si tu relance la commande, voir se limiter à une liste d'extensions connues.

      • [^] # Re: avec ffmpeg

        Posté par . Évalué à -10.

        c'est vrai que dans mes noms de fichiers je remplace tous les espaces par des traits d'unions par gprename,parce que c'est plus sûr
        si il a déjà des .mkv dans ses vidéos comment fait il ?

        • [^] # Re: avec ffmpeg

          Posté par . Évalué à -10.

          c'est vrai que c'est bien pour les caractères mais il y a un petit défaut dans ta ligne

          s 7.mpg-new.mkv donne s 7.mpg-new.mkv-new.mkv

      • [^] # Re: avec ffmpeg

        Posté par . Évalué à -10.

        comment éviter les deux extensions dans la ligne

        s x 7.mpg donne s x 7.mpg-new.mkv

        • [^] # Re: avec ffmpeg

          Posté par . Évalué à -10.

          find . -name '*.*' -exec ffmpeg -i \{\} [options...] \{\}-new.mkv \;
          

          je suppose que les 4 premiers antislash sont ajoutés pour échapper les caractères pouvant être interprétés par le shell

          il est vrai que de conserver l'indication de l'ancienne extension est judicieux au cas ou il y aurait d'autres fichiers du même nom dans le dossier mais d'une extension différente
          cela évite ainsi le blocage de la commande et son mode interactif (écraser le fichier yes or no)

          on peut ensuite utiliser gprename pour les enlever

          • [^] # Re: avec ffmpeg

            Posté par . Évalué à 1.

            Merci pour la ligne de commande. Pour les options de ffmpeg, quels sont vos recommandations ? L'x265 et le vp9 donnent un meilleur résultat que le h264 mais ne sont visible chez moi que par vlc et pas par mplayer. Pareil pour le codec audio, quel est celui recommandé ?

  • # Arista

    Posté par . Évalué à 4.

    aptitude install arista

    Il y a même une petite interface.

  • # les options

    Posté par . Évalué à -10.

    en traitement par lot
    plus on compresse les données,plus c'est long,c'est le temps de calcul
    il faut comprendre qu'il y a des compatibilitées à respecter entre le choix du conteneur,le codec vidéo,le codec audio ,les sous-titres
    plusieurs ont fabriqués des interfaces graphique pour ffmpeg et ça plante

    l'option sameq (même qualité)
    en anglais:

    3.17 Why was the ffmpeg -sameq option removed? What to use instead?
    The -sameq option meant "same quantizer", and made sense only in a very limited set of cases. Unfortunately, a lot of people mistook it for "same quality" and used it in places where it did not make sense: it had roughly the expected visible effect, but achieved it in a very inefficient way.Each encoder has its own set of options to set the quality-vs-size balance, use the options for the encoder you are using to set the quality level to a point acceptable for your tastes. The most common options to do that are -qscale and -qmax, but you should peruse the documentation of the encoder you chose.

    moi je préfère un conteneur unique comme mkv,c'est plus compatible avec les différents streams
    il y a une bonne interface graphique pour gérer les différents streams dans mkv: c'est mkvtoolnixgui (disponible dans les bacs)
    avec on peut facilement ajouter ses streams audio vidéo sous-titres sans réencodage de vidéo

    • [^] # Re: les options

      Posté par . Évalué à 1.

      Pour l'option sameq, l'extrait de doc que tu montres dit justement que cela ne veut pas dire "même qualité".

      • [^] # Re: les options

        Posté par . Évalué à -10.

        https://translate.google.com

        3.17 Pourquoi l'option ffmpeg -sameq at-elle été supprimée? Qu'utiliser à la place?
        L'option -sameq signifiait "même quantificateur", et n'a de sens que dans un ensemble très limité de cas. Malheureusement, beaucoup de gens l'ont pris pour "même qualité" et l'ont utilisé dans des endroits où cela n'avait pas de sens: il avait à peu près l'effet visible attendu, mais il a réussi de manière très inefficace. Chaque encodeur a son propre ensemble d'options Pour définir l'équilibre entre la qualité et la taille, utilisez les options pour l'encodeur que vous utilisez pour définir le niveau de qualité à un point acceptable pour vos goûts. Les options les plus courantes sont -qscale et -qmax, mais vous devez lire attentivement la documentation de l'encodeur que vous avez choisi.

        • [^] # Re: les options

          Posté par . Évalué à -10.

          quantisation est synonyme de qualité d'encodage mais c'est utilisable seulement avec le même encodeur,si cette option est disponible
          l'utilisation de l'option d'ffmpeg "-sameq" étant trop aléatoire en fonction des codecs,elle a été supprimée par les développeurs

  • # attention il n'y aura pas de magie

    Posté par . Évalué à 2.

    des vieux formats pas du tout optimisés […] tout en gardant une qualité optimum.

    si le format de base est moyen, le resultat ne pourra pas etre optimum,
    tu pourras gagner en place, mais pas en qualité.

    comme le suggere les autres, un script avec ffmpeg
    sous OSX il y a aussi un outil opensource handbrake qui te permet de preparer une liste de conversion…
    il doit y avoir un outil qui fait la meme chose sous linux

    • [^] # Re: attention il n'y aura pas de magie

      Posté par . Évalué à 1.

      Le but est de gagner de la place en gardant une bonne qualité. Sur un fichier de test de 23Mo le script suivant me fait passer à 1Mo :

      #!/bin/bash
      for f in *.MOV
      do
      ffmpeg -i "$f" -c:v libvpx-vp9 -pass 1 -b:v 1000K -threads 1 -speed 4 -tile-columns 0 -frame-parallel 0 \
                       -g 9999 -aq-mode 0 -an -f webm -y /dev/null
      ffmpeg -i "$f"  -c:v libvpx-vp9 -pass 2 -b:v 1000K -threads 1 -speed 0 \
      -tile-columns 0 -frame-parallel 0 -auto-alt-ref 1 -lag-in-frames 25 \
      -g 9999 -aq-mode 0 -c:a libopus -b:a 128k -f webm "${f%.MOV}.webm"
      rm ffmpeg2pass-0.logf
      done

      En prenant des codecs plus anciens, on passe à 4,2 Mo.

      find . -name '*.MOV' -exec ffmpeg -i \{\} -deinterlace -c:v libx264 -preset veryslow -crf 18 -codec:a libvorbis -qscale:a 5 \{\}.mkv \;

      Handbrake existe également sous linux mais dans mon cas, je trouve ça moins pratique qu'un script.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.