Cách hợp nhất tập tin âm thanh và video trong ffmpeg


161

Tôi muốn hợp nhất một tệp âm thanh (định dạng .wav hoặc .au) với một tệp video (định dạng .mp4).

Xin đề nghị tôi làm thế nào để đạt được điều này. Tôi muốn hợp nhất các tệp này thành tệp video .mp4 mới. Một lệnh ffmpeg sẽ rất được hoan nghênh.


Có một bài viết hay ở đây cũng có thể hữu ích ... cfc.kizzx2.com/index.php/muxing-audio-and-video-with-ffmpeg
Simon East

Câu trả lời:


260

Hợp nhất video và âm thanh, với mã hóa lại âm thanh

Xem ví dụ này, lấy từ mục blog này nhưng được cập nhật cho cú pháp mới hơn. Nó sẽ là một cái gì đó để ảnh hưởng của:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental output.mp4

Ở đây, chúng tôi giả định rằng tệp video chưa chứa bất kỳ luồng âm thanh nào và bạn muốn có cùng định dạng đầu ra (ở đây, MP4) như định dạng đầu vào.

Lệnh trên chuyển mã âm thanh, vì MP4 không thể mang luồng âm thanh PCM. Bạn có thể sử dụng bất kỳ codec âm thanh mong muốn nào khác nếu bạn muốn. Xem Hướng dẫn mã hóa AAC để biết thêm.

Nếu luồng âm thanh hoặc video của bạn dài hơn, bạn có thể thêm -shortesttùy chọn để ffmpeg sẽ ngừng mã hóa khi một tệp kết thúc.

Sao chép âm thanh mà không cần mã hóa lại

Nếu bộ chứa đầu ra của bạn có thể xử lý (gần như) bất kỳ codec nào - như MKV - thì bạn có thể chỉ cần sao chép cả luồng âm thanh và video:

ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv

Thay thế luồng âm thanh

Nếu video đầu vào của bạn đã có âm thanh và bạn muốn thay thế nó, bạn cần nói với ffmpeg luồng âm thanh nào sẽ thực hiện:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental \
-map 0:v:0 -map 1:a:0 output.mp4

Các maptùy chọn làm cho ffmpeg chỉ sử dụng các dòng video đầu tiên từ đầu vào đầu tiên và dòng âm thanh đầu tiên từ đầu vào thứ hai cho các tập tin đầu ra.


Tôi đã thử nó nhưng ffmpeg bị đóng băng trong khi hợp nhất
Sandy

4
Tôi không nghĩ container mp4 có thể có luồng âm thanh wav. Hãy thửffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
Luke

1
Tôi đang sử dụng cái này và nó đang thay thế âm thanh gốc từ âm thanh đầu vào. Nếu tôi muốn hợp nhất âm thanh đầu vào với âm thanh của video đầu vào thì sao?
Iqbal Malik

Những dòng lệnh rất ngọt ngào ...
Chandra Nakka

Thật tuyệt, tôi đã sử dụng ffmpeg -i video.mp4 -i audio.wav \ -c: v sao chép ..Thanks
sonida

12

Vì tôi không được phép viết bình luận cho câu trả lời đầu tiên với danh tiếng của mình, một phụ lục ở đây, bởi vì tôi gặp vấn đề này khi mã hóa webms.
Nếu luồng âm thanh của bạn chẳng hạn dài hơn luồng video , bạn phải cắt nó hoặc nếu không, bạn sẽ có khung video cuối cùng dưới dạng hình ảnh tĩnh và âm thanh đang chạy.

Để cắt một trong hai luồng, bạn có thể sử dụng -ss [hh: mm: ss] -t [ss] trước mỗi -i "file.ext".
-ss [...] sẽ xác định điểm bắt đầu để cắt
-t [...] sẽ xác định độ dài của đoạn tính bằng giây

Ví dụ:

ffmpeg.exe -ss 00:00:10  -t 5 -i "video.mp4" -ss 0:00:01 -t 5 -i "music.m4a" -map 0:v:0 -map 1:a:0 -y out.mp4

4
Bạn cũng có thể chỉ cần sử dụng -shortestđể cắt kết thúc.
nyuszika7h

5

-open lệnh promt (windows + r -> cmd-> enter)

-vậy vào bên trong thư mục nơi bạn có tệp âm thanh và video

áp dụng cmd này

ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4

Nhập .... bạn sẽ nhận được một tệp mới có tên outPutFime.mp4 (một tệp âm thanh và video được hợp nhất)


2
Thật sự không cần thiết phải mô tả cách sử dụng dòng lệnh ở đây. Nó khá nhiều ngụ ý rằng người dùng sẽ có thể tìm ra điều đó. Đặc biệt là từ khi người hỏi chỉ định FFmpeg. Tất cả đều giống nhau, -shortestthẻ rất tiện lợi. Đơn giản hơn nhiều so với câu trả lời của @ user136036.
Kat

3
Điều này sẽ mã hóa lại mọi thứ, có lẽ không phải là điều muốn.
mivk


'ffmpeg' không được công nhận là lệnh nội bộ hoặc bên ngoài,
UniCoder

Bạn phải thêm ffmpeg để PATH wikihow.com/Install-FFmpeg-on-Windows
Arete


1

Hãy thử sử dụng mencoder (Có, nó dựa trên ffmpeg, nhưng bạn không bao giờ biết). Tôi sử dụng -audiofileđối số. Tôi thường sử dụng ffmpeg, tuy nhiên, vì vậy hãy đưa ra lời khuyên này với một chút muối.

Và, nếu bạn sử dụng Windows, Mediacoder (không phải là nguồn mở nữa thật đáng buồn) hoạt động ... về cơ bản nó là một tiền đề cho rất nhiều bộ mã hóa gnu và một vài cái không miễn phí.

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.