Simplifiez la personnalisation de FFmpeg amerge et du volume

9

J'ai 3 commandes FFmpeg consécutives qui personnaliseront le volume d'un audio, personnaliseront le volume d'une vidéo et l' amergeaudio et la vidéo à une sortie finale.

Première commande, modifier le niveau de volume d'un fichier mp3

  ffmpeg -i music.mp3 -vol 100 music2.mp3

Deuxième commande, modifier le niveau de volume d'un fichier mp4

ffmpeg -i video.mp4 -vol 200 video2.mp4

Troisième commande, fusionner music2.mp3etvideo2.mp4

ffmpeg -i music2.mp3 -i ruby.mp4 -filter_complex \
    "[0:a][1:a]amerge,pan=stereo:c0<c0+c2:c1<c1+c3[out]" \
    -map 1:v -map "[out]" -c:v copy -c:a libfdk_aac -shortest video2.mp4

Existe-t-il un moyen facile de simplifier et de décomposer les processus en un seul processus / commande?

J'ai essayé celui-ci, mais ne fonctionne pas:

ffmpeg -i music.mp3 -vol 100 -i video.mp4 -vol 200 -filter_complex \
    "[0:a][1:a]amerge,pan=stereo:c0<c0+c2:c1<c1+c3[out]" \
    -map 1:v -map "[out]" -c:v copy -c:a libfdk_aac -shortest output.mp4

Journal (s) des erreurs:

    ffmpeg version N-60332-ga0d5204 Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb  4 2014 21:31:51 with Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
  configuration: --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid
  libavutil      52. 63.100 / 52. 63.100
  libavcodec     55. 49.101 / 55. 49.101
  libavformat    55. 29.101 / 55. 29.101
  libavdevice    55.  7.100 / 55.  7.100
  libavfilter     4.  1.102 /  4.  1.102
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mp3, from 'adele.mp3':
  Metadata:
    title           : Chasing Pavements
    artist          : Adele
    track           : 3
    album           : 19 (Deluxe Edition)
    date            : 2008
  Duration: 00:03:30.55, start: 0.025056, bitrate: 160 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 159 kb/s
    Stream #0:1: Video: mjpeg, yuvj420p(pc), 600x600 [SAR 72:72 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
    Metadata:
      title           : 
      comment         : Other
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'Ruby on Rails 101- What is Ruby on Rails_.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-12-21 07:56:20
  Duration: 00:05:42.40, start: 0.000000, bitrate: 1214 kb/s
    Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 1020 kb/s, 30 fps, 30 tbr, 60 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #1:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 191 kb/s (default)
    Metadata:
      creation_time   : 2013-12-21 07:56:23
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
[Parsed_pan_1 @ 0x7fcd23d00680] This syntax is deprecated. Use '|' to separate the list items.
-vol has been deprecated. Use the volume audio filter instead.
-vol is forwarded to lavfi similarly to -af volume=0.781250.
-vol has been deprecated. Use the volume audio filter instead.
-vol is forwarded to lavfi similarly to -af volume=0.781250.
File 'output.mp4' already exists. Overwrite ? [y/N] y
[Parsed_amerge_0 @ 0x7fcd23d00000] No channel layout for input 1
    Last message repeated 1 times
[AVFilterGraph @ 0x7fcd23c0f5a0] The following filters could not choose their formats: Parsed_amerge_0
Consider inserting the (a)format filter near their input or output.
emfolorncynosure
la source
Veuillez plutôt fournir l'intégralité de la sortie de ligne de commande non coupée, pas seulement les parties que vous pensez pertinentes. Merci.
slhck
Yup a modifié mon message.
emfolorncynosure

Réponses:

14

Une commande pour les lier

Vous pouvez le faire dans une seule commande en utilisant le volumefiltre audio au lieu de l'ancienne -voloption (comme mentionné par la sortie de votre console):

ffmpeg -i music.mp3 -i videowithaudio.mp4 -filter_complex \
"[0:a]volume=0.390625[a1];[1:a]volume=0.781250[a2]; \
 [a1][a2]amerge,pan=stereo:c0<c0+c2:c1<c1+c3[out]" \
-map 1:v -map "[out]" -c:v copy -c:a libfdk_aac -shortest output.mp4

Vous devrez peut-être ajuster les valeurs de volume.


Problèmes potentiels

la syntaxe est déconseillée

[Parsed_pan_4 @ 0x244c980] This syntax is deprecated. Use '|' to separate the list items.

Ne vous inquiétez pas, vous pouvez ignorer ce message.

n'a pas pu choisir leurs formats

[AVFilterGraph @ 0x26549a0] The following filters could not choose their formats: Parsed_amerge_3
Consider inserting the (a)format filter near their input or output.

Toutes les entrées doivent avoir la même fréquence d'échantillonnage et le même format pour amerge. S'ils sont différents, vous devrez utiliser le aformatfiltre audio:

ffmpeg -i music.mp3 -i videowithaudio.mp4 -filter_complex \
"[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.5[a1]; \
 [1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.8[a2]; \
 [a1][a2]amerge,pan=stereo:c0<c0+c2:c1<c1+c3[out]" \
-map 1:v -map "[out]" -c:v copy -c:a libfdk_aac -shortest output.mp4
llogan
la source
1
Salut @LordNeckbeard, il dit toujours [AVFilterGraph @ 0x7f951b42a080] The following filters could not choose their formats: Parsed_amerge_5 Consider inserting the (a)format filter near their input or output.même si j'ai utilisé un aformatéchantillon.
emfolorncynosure
J'ai le même cas d'utilisation et j'obtiens l'erreur "Aucune disposition de canal pour l'entrée 1"
Lukasz Madon
@lukas Pouvez-vous montrer votre ffmpegcommande et la sortie complète de la console? Vous pouvez utiliser un service pastebin et fournir le lien.
llogan
@LordNeckbeard gist.github.com/lukasz-madon/508d76d6fd5ff3635494 avec exactement la même commande dont il se plaint libfdk_aac
Lukasz Madon
@lukas Pouvez-vous télécharger et tester une version plus récente? Votre version est obsolète.
llogan