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.
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âu trả lời:
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 -shortest
tùy chọn để ffmpeg sẽ ngừng mã hóa khi một tệp kết thúc.
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
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 map
tù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.
ffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
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
-shortest
để cắt kết thúc.
-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)
-shortest
thẻ rất tiện lợi. Đơn giản hơn nhiều so với câu trả lời của @ user136036.
Điều này làm việc cho tôi:
ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4
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í.