Sederhanakan FFmpeg amerge dan penyesuaian volume

9

Saya memiliki 3 perintah FFmpeg berturut-turut yang akan menyesuaikan volume audio, menyesuaikan volume video, dan amergeaudio dan video ke hasil akhir.

Perintah pertama, edit level volume File mp3

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

Perintah kedua, edit level volume file mp4

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

Perintah ketiga, gabung music2.mp3danvideo2.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

Apakah ada cara mudah untuk menyederhanakan dan memecah proses menjadi hanya satu proses / perintah?

Saya sudah mencoba yang ini, tetapi tidak berhasil:

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

Log kesalahan:

    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
sumber
Sebagai gantinya berikan output baris perintah yang belum dipotong penuh, bukan hanya bagian yang menurut Anda relevan. Terima kasih.
slhck
Yup mengedit posting saya.
emfolorncynosure

Jawaban:

14

Satu perintah untuk mengikat mereka

Anda dapat melakukan ini dalam satu perintah menggunakan volumefilter audio alih-alih -volopsi lama (seperti yang disebutkan oleh output konsol Anda):

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

Anda mungkin harus menyesuaikan nilai untuk volume.


Masalah potensial

sintaks sudah ditinggalkan

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

Jangan khawatir - Anda dapat mengabaikan pesan ini.

tidak dapat memilih format mereka

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

Semua input harus memiliki laju sampel dan format yang sama untuk amerge. Jika mereka berbeda maka Anda harus menggunakan aformatfilter 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
sumber
1
Hai @ LordNeckbeard, masih dikatakan [AVFilterGraph @ 0x7f951b42a080] The following filters could not choose their formats: Parsed_amerge_5 Consider inserting the (a)format filter near their input or output.bahkan jika saya menggunakan aformatsampel.
emfolorncynosure
Saya memiliki kasus penggunaan yang sama dan saya mendapatkan kesalahan "Tidak ada tata letak saluran untuk input 1"
Lukasz Madon
@lukas Bisakah Anda menunjukkan ffmpegperintah dan menyelesaikan keluaran konsol? Anda dapat menggunakan layanan pastebin dan memberikan tautannya.
llogan
@LordNeckbeard gist.github.com/lukasz-madon/508d76d6fd5ff3635494 dengan perintah yang sama persis dengan komplain tentang libfdk_aac
Lukasz Madon
@lukas Bisakah Anda mengunduh dan menguji versi yang lebih baru? Versi Anda sudah usang.
llogan