Semplifica FFmpeg amerge e personalizzazione del volume


9

Ho 3 comandi consecutivi di FFmpeg che personalizzeranno il volume di un audio, personalizzeranno il volume di un video e amergeaudio e video su un output finale.

Primo comando, modifica il livello del volume di un file mp3

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

Secondo comando, modifica il livello del volume di un file mp4

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

Terzo comando, unisci music2.mp3evideo2.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

Esiste un modo semplice per semplificare e suddividere i processi in un solo processo / comando?

Ho provato questo, ma non funziona:

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

Registro / i di errore:

    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.

Fornisci invece l'output completo della riga di comando non tagliato, non solo le parti che ritieni rilevanti. Grazie.
slhck,

Sì, ho modificato il mio post.
emfolorncynosure,

Risposte:


14

Un comando per legarli

Puoi farlo in un solo comando usando il volumefiltro audio invece della vecchia -volopzione (come indicato dall'output della tua 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

Potrebbe essere necessario modificare i valori per volume.


Potenziali problemi

la sintassi è obsoleta

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

Non ti preoccupare, puoi ignorare questo messaggio.

impossibile scegliere i loro formati

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

Tutti gli input devono avere la stessa frequenza di campionamento e lo stesso formato per amerge. Se sono diversi, dovrai usare il aformatfiltro 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

1
Ciao @LordNeckbeard, dice ancora [AVFilterGraph @ 0x7f951b42a080] The following filters could not choose their formats: Parsed_amerge_5 Consider inserting the (a)format filter near their input or output.anche se ho usato il aformatcampione.
emfolorncynosure,

Ho lo stesso caso d'uso e ottengo l'errore "Nessun layout di canale per l'ingresso 1"
Lukasz Madon

@lukas Puoi mostrare il tuo ffmpegcomando e completare l'output della console? È possibile utilizzare un servizio pastebin e fornire il collegamento.
Llogan,

@LordNeckbeard gist.github.com/lukasz-madon/508d76d6fd5ff3635494 con lo stesso identico comando che si lamenta di libfdk_aac
Lukasz Madon

@lukas Puoi scaricare e testare una build più recente? La tua versione è obsoleta.
Llogan il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.