Đơn giản hóa FFmpeg amerge và tùy chỉnh âm lượng


9

Tôi có 3 lệnh FFmpeg liên tiếp sẽ tùy chỉnh âm lượng của âm thanh, tùy chỉnh âm lượng của video và amergeâm thanh và video thành đầu ra cuối cùng.

Lệnh đầu tiên, chỉnh sửa mức âm lượng của tệp mp3

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

Lệnh thứ hai, chỉnh sửa mức âm lượng của tệp mp4

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

Lệnh thứ ba, hợp nhất music2.mp3video2.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

Có cách nào dễ dàng để đơn giản hóa và phân tích các quy trình thành chỉ một quy trình / lệnh không?

Tôi đã thử cái này, nhưng không hoạt động:

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

Nhật ký lỗi:

    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.

Thay vào đó, vui lòng cung cấp đầy đủ đầu ra dòng lệnh không cắt, không chỉ các phần bạn nghĩ là có liên quan. Cảm ơn.
slhck

Yup chỉnh sửa bài viết của tôi.
tẩy da chết

Câu trả lời:


14

Một lệnh để ràng buộc họ

Bạn có thể thực hiện việc này trong một lệnh bằng volumebộ lọc âm thanh thay vì -voltùy chọn cũ (như được đề cập bởi đầu ra giao diện điều khiển của bạn):

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

Bạn có thể phải điều chỉnh các giá trị cho volume.


Vấn đề tiềm ẩn

cú pháp không được dùng nữa

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

Đừng lo lắng - bạn có thể bỏ qua tin nhắn này.

không thể chọn định dạng của họ

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

Tất cả các đầu vào phải có cùng tỷ lệ mẫu và định dạng cho amerge. Nếu chúng khác nhau thì bạn sẽ phải sử dụng aformatbộ lọc âm thanh:

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
Xin chào @LordNeckbeard, nó vẫn cho biết [AVFilterGraph @ 0x7f951b42a080] The following filters could not choose their formats: Parsed_amerge_5 Consider inserting the (a)format filter near their input or output.ngay cả khi tôi đã sử dụng aformatmẫu.
tẩy da chết

Tôi có trường hợp sử dụng tương tự và tôi gặp lỗi "Không có bố cục kênh cho đầu vào 1"
Lukasz Madon

@lukas Bạn có thể hiển thị ffmpeglệnh và hoàn thành đầu ra giao diện điều khiển không? Bạn có thể sử dụng dịch vụ pastebin và cung cấp liên kết.
llogan

@LordNeckbeard gist.github.com/lukasz-madon/508d76d6fd5ff3635494 với cùng một lệnh chính xác, nó phàn nàn về libfdk_aac
Lukasz Madon

@lukas Bạn có thể tải xuống và kiểm tra bản dựng mới hơn không? Phiên bản của bạn đã lỗi thời.
llogan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.