2017-02-07 1 views
1

Je tente d'automatiser une tâche d'édition vidéo banale que j'effectue chaque semaine. Je voudrais utiliser melt pour ce faire. Supposons que j'ai des vidéos a, b et c. Je voudrais faire ce qui suit:MLT/fusion: concaténer des clips, fondu et fondu audio et vidéo

  1. Snip a1, b1 et c1 de l'intérieur a, b et c.
  2. Concaténer a1, b1 et c1 en une seule vidéo.
  3. Fondu vers/depuis le noir pendant une seconde lors de la transition entre a1, b1 et c1.
  4. Appliquez une bande-son à la sortie concaténée de a1, b1 et c1, tout en préservant l'audio d'origine.
  5. Fondu de la piste sonore lorsque c1 passe au noir (conclusion de la vidéo).

ce schéma:

  1. a, b et c sont d'une longueur arbitraire.
  2. a, b et c sont toutes des vidéos 1080p filmées à 60 images par seconde.
  3. a, b, c, a1, b1 et c1 sont tous .mp4 fichiers. La bande son est un fichier .mp3.

C'est aussi proche que j'ai obtenu: (. J'utilise pour les espaces réservés arbitraires fichiers pertinents et fade-in/out fois dans l'exemple ci-dessus)

#!/bin/sh 
melt \ 
    colour:black out=59 $VIDEO1 in=0 out=600 -mix 60 -mixer luma \ 
    colour:black out=59 -mix 60 -mixer luma \ 
    colour:black out=59 $VIDEO2 in=0 out=600 -mix 60 -mixer luma \ 
    colour:black out=59 -mix 60 -mixer luma \ 
    colour:black out=59 $VIDEO3 in=0 out=600 -mix 60 -mixer luma \ 
    colour:black out=59 -mix 60 -mixer luma \ 
    -audio-track $AUDIO -transition mix 

Cela réussit à couper et à concaténer a1, b1 et c1 avec des transitions animées. Cependant:

  1. Si $AUDIO est plus longue que la concaténation de a1, b1 et c1, l'audio continue de jouer (avec un écran blanc) après que la vidéo a pris fin.

  2. La bande sonore ne disparaît pas lorsque c1 disparaît (c'est-à-dire lorsque la vidéo est terminée).

D'après ce que j'ai compris, la décoloration sur la bande originale peut être accomplie par « animant le filtre audio volume », mais je n'ai pas eu de succès en tentant cela.

Que dois-je essayer?

Merci pour votre aide.

Répondre

3

Pour le numéro 1, vous devez définir un point de sortie pour l'audio. Vous avez trois clips d'image 601 (l'image zéro compte comme un) pour un total de 1803 images. Donc, mettre = 1802. Pour le n ° 2, vous pouvez appliquer le filtre de volume à la fin de la piste audio afin de l'atténuer progressivement.

Voir la documentation du filtre de volume pour comprendre les paramètres de gain et fin: https://www.mltframework.org/plugins/FilterVolume/

#!/bin/sh 
melt \ 
    colour:black out=59 $VIDEO1 in=0 out=600 -mix 60 -mixer luma \ 
    colour:black out=59 -mix 60 -mixer luma \ 
    colour:black out=59 $VIDEO2 in=0 out=600 -mix 60 -mixer luma \ 
    colour:black out=59 -mix 60 -mixer luma \ 
    colour:black out=59 $VIDEO3 in=0 out=600 -mix 60 -mixer luma \ 
    colour:black out=59 -mix 60 -mixer luma \ 
    -audio-track $AUDIO out=1802 -attach-track volume:0db end=-70db in=1703 out=1802 \ 
    -transition mix in=0 out=1802 
+0

donc se résolve point 1 (fin de l'audio lorsque la vidéo se termine), donc merci pour ça! Cependant, pour une raison quelconque, le son (# 2) ne semble pas disparaître à la fin du film. La documentation que vous avez liée suggère que cela * devrait * fonctionner, donc, je ne comprends pas pourquoi il ne fonctionne pas:/ Je vais continuer à creuser les docs, et posterai la réponse ici si je fais fonctionner ceci. –

+0

Quand j'y pense, "mixer" ne fait peut-être pas ce que tu veux car c'est vraiment un fondu enchaîné et ça applique une transition linéaire, pas logarithmique. Peut-être essayer d'appliquer le filtre "volume" comme suggéré dans ma réponse mise à jour. – Brian

+0

Cela fait exactement ce que je cherchais, et répond à tous les objectifs énoncés dans ma question. Merci beaucoup pour votre aide! (Dès que SO me le permettra, je vais attribuer une prime de 100 points sur votre réponse en remerciement, pour ce que ça vaut.) –