Forum Linux.général ffmpeg incompréhensible... et pourtant RTFM ;-)

Posté par  .
Étiquettes : aucune
0
31
oct.
2009
Hello

J'ai quelques années de linux dans les pattes, je sais lire un man mais là je deviens dingue

En même temps là je suis sous MacOS avec les Macports (portages des appli comme sur BSD : ie compilation from sources)

Je veux couper la fin d'un film pour enlever les 30 dernières secondes
Donc je me fais un petit shell avec ffmpeg pour calculer tout ce qui va bien

A là fin je construis et lance la commande suivante


fmpeg -vcodec copy -acodec copy -y -v 9 -t 24 -i 'Robot.m4v' 'Robot2.avi'


C'est censé me faire une coupe à 24 secondes alors que l'original fait 55 secondes mais ca me fait un film de 55 secondes...

J'ai raté quelque chose ?
  • # Ooops

    Posté par  . Évalué à 1.

    Dans la commande précédente je me suis trompé, l'extension du fichier final est bien m4v comme celle de la source...
    • [^] # Re: Ooops

      Posté par  . Évalué à 1.

      Je tenterais en ré-encodant la vidéo, c-à-d en précisant un codec après -vcodec, ou alors en utilisant la syntaxe complete pour la durée d'enregistrement ( -t 00:00:24 ).

      Sinon que fait l'option -v ?
      • [^] # Re: Ooops

        Posté par  . Évalué à 1.

        J'ai essayé le -t 00:00:24... rien

        Le -v c'est le verbose car je voulais comprendre un peu ce qui coincait...

        Quelqu'un pourrait essayer sur un linux ? J'ai rien sous la main de très pratique (en fait si j'ai bien une debian dans un coin mais bon)
        • [^] # Re: Ooops

          Posté par  . Évalué à 2.

          j'ai juste cherché le man (j'ai pas ffmpeg sur ma machine)

          http://doc.ubuntu-fr.org/ffmpeg
          ffmpeg -ss 80 -t 60 -i videoInput.mpg -s 240x180 -b 380k -ab 64k videoOutput.flv

          Cette commande convertit la portion commençant à t0 = 80 s (-ss) et s'étendant sur une durée de 60 s (-t)

          du fichier d'entrée videoInput.mpg codé en MPEG. Le fichier produit sera encodé en Flash, la taille d'image sera de 240×180, le débit engendré par son affichage de 380 kbps et le débit audio de 64 kbps.


          j'en deduis donc que dans ton cas, tu veux recuperer les 24 premieres secondes du film (0->24)
          • [^] # Re: Ooops

            Posté par  . Évalué à 1.

            Oui je veux les 24 premières secondes et ça me fait un fichier robot2.m4v de 55 secondes identique à la source ! D'où le fait que je ne comprenne plus rien...
            • [^] # Re: Ooops

              Posté par  . Évalué à 0.

              Sinon encode toute ta video avec un container et un codec plus courants (en mpeg4/lavc et en .avi par exemple), puis essaie ensuite d'appliquer la même ligne de commande.
              • [^] # Re: Ooops

                Posté par  . Évalué à 1.

                Sur une debian ça fait pareil (ouf c'est déjà ça)


                ffmpeg -vcodec copy -acodec copy -y -v 9 -t 24 -i 'Robot.m4v' 'Robot2.avi'
                ffmpeg -vcodec copy -acodec copy -y -v 9 -t 24 -i 'Robot.m4v' 'Robot2.m4v'

                ffmpeg -i Robot2.avi 2>&1| grep Dura
                Duration: 00:00:55.8, start: 0.000000, bitrate: 1339 kb/s

                ffmpeg -i Robot2.m4v 2>&1| grep Dura
                Duration: 00:01:49.8, bitrate: 383 kb/s


                Zarbos tout ça juste pour couper un bout de film...
  • # Option -ss

    Posté par  . Évalué à 0.

    J'ai trouvé ca http://www.joeldare.com/wiki/video:cut_video_with_ffmpeg peut-être dois-tu utiliser aussi l'option -ss avec -t
  • # chezmoiçamarche

    Posté par  . Évalué à 1.

    Bon c'est un commentaire pas constructif du tout, mais, juste pour info, ta ligne de commande fonctionne bien sous Archlinux sur un fichier 'avi'.

    Par contre sur un fichier 'mkv' (je n'ai pas de 'm4v'), ffmpeg me jette une erreur:
    error, non monotone timestamps 20 >= 19

    mes 2 cts.
    • [^] # Re: chezmoiçamarche

      Posté par  . Évalué à 1.

      C'est au contraire très intéressant...
    • [^] # Re: chezmoiçamarche

      Posté par  (site web personnel) . Évalué à 2.

      Chez moi (ffmpeg 0.5@freebsd), ça marche très bien sur une entrée en avi, mais ça ne coupe pas une entrée en mkv.
      • [^] # Re: chezmoiçamarche

        Posté par  . Évalué à 1.

        Ah bon test ça

        Donc cela dépendrait du format de fichier (et pas forcément du codec donc)
        Y aurait t il un autre soft GPL très simple pour découper ?

        mencoder doit faire ça aussi, je vais essayer mais c'est un peu sortir le bulldozer pour faire un trou de souris...

        Pour tout vous dire c'est pour mes podcast de type "Dilbert", ils collent 30 secondes de pub à la fin et c'est lourdingue quand je les lis avec l'iphone.

        Une autre façon de faire est de laisser le fichier intact mais dire à iTunes de s'arreter à -30 secondes de la fin dans les propriétés du podcast et ça avec un coup d'applescript je dois pouvoir y arriver facilement... voire éditer le xml à la brutos...
        • [^] # Re: chezmoiçamarche

          Posté par  . Évalué à 2.

          Bon voilà c'est fait à la sauce AppleScript

          tell application "iTunes"
          set my_search_results to (search library playlist 1 for "Dilbert Animated Cartoons")
          repeat with a_track in my_search_results

          set trackName to name of a_track
          set trackDuree to duration of a_track
          set trackEnd to finish of a_track

          if (trackDuree = trackEnd) then
          if (trackDuree > 30) then
          set NewTrackEnd to trackDuree - 30
          set myString to ("Duree originale " & trackDuree as string) & " Durée Finale " & NewTrackEnd as string
          #display dialog trackName & " " & myString giving up after 1
          set finish of a_track to NewTrackEnd
          #display dialog trackName & " " & myString

          end if
          end if

          end repeat

          end tell

Suivre le flux des commentaires

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