Sử dụng bộ giải mã concat (thêm khoảng lặng vào đầu và / hoặc kết thúc)
Sử dụng bộ giải mã concat nếu bạn muốn tránh mã hóa lại phân khúc chính. Phương pháp này hoạt động để thêm sự im lặng vào đầu hoặc cuối (hoặc cả hai).
Sử dụng bộ lọc nguồn âm thanh anullsrc để tạo âm thanh im lặng. Bạn sẽ cần phải phù hợp với định dạng, bố cục kênh và tốc độ mẫu của tệp âm thanh chính. Ví dụ để tạo kênh 5.1, tốc độ mẫu 48000 Hz, tệp âm thanh AC3 im lặng 1 giây (vì đây là định dạng trong câu hỏi):
ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 1 silence.ac3
Bây giờ tạo một tệp văn bản có tên input.txt
liệt kê các tệp sẽ được nối:
file 'silent.ac3'
file 'main.ac3'
Nếu bạn muốn sự im lặng ở cuối thay vào đó chỉ cần chuyển thứ tự của các tệp trong input.txt
.
Bây giờ bạn có thể nối các tệp bằng cách sử dụng trình giải mã concat :
ffmpeg -f concat -i input.txt -codec copy output.ac3
Sử dụng bộ lọc concat (thêm khoảng lặng vào đầu và / hoặc kết thúc)
Sử dụng bộ lọc concat nếu bạn muốn thực hiện mọi thứ trong một lệnh hoặc nếu bạn muốn xuất ra một định dạng khác với đầu vào (vì phương thức này vẫn mã hóa lại bằng mọi cách). Phương pháp này hoạt động để thêm sự im lặng vào đầu hoặc cuối hoặc cả hai.
Ví dụ để thêm 1 giây im lặng vào đầu âm thanh nổi, đầu vào tốc độ mẫu 44100 Hz:
ffmpeg -f lavfi -t 1 -i anullsrc=channel_layout=stereo:sample_rate=44100 -i audio.oga -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" output.m4a
Lọc sẽ dẫn đến mã hóa lại trong khi trình giải mã concat sẽ không.
Trong anullsrc, nên khớp với bố cục kênh và tốc độ mẫu của đầu vào.
Thay vào đó, nếu bạn muốn thêm khoảng lặng vào cuối, chỉ cần chuyển thứ tự của các đầu vào được cung cấp cho bộ lọc concat : [1:a][0:a]concat=n=2:v=0:a=1
.
Sử dụng bộ lọc adelay (thêm khoảng lặng để bắt đầu)
Sử dụng bộ lọc âm thanh adelay nếu bạn muốn thực hiện mọi thứ trong một lệnh hoặc nếu bạn muốn xuất ra một định dạng khác với đầu vào (vì phương thức này vẫn mã hóa lại bằng mọi cách). Điều này chỉ hoạt động để thêm sự im lặng vào đầu tập tin.
Ví dụ này sẽ thêm 1 giây im lặng vào đầu của âm thanh nổi:
ffmpeg -i input.flac -af "adelay=1000|1000" output.opus
- Lọc sẽ dẫn đến mã hóa lại trong khi trình giải mã concat sẽ không.
- Giá trị tính bằng mili giây. Người dùng của các phiên bản gần đây (git master hiện tại hoặc bất kỳ thứ gì mới hơn FFmpeg 4.1) thay vào đó có thể sử dụng
1s
trong một giây.
- Mỗi kênh cần độ trễ riêng. Ví dụ: đầu vào đơn sẽ sử dụng
adelay=1000
, trong khi đầu vào 5.1 sẽ sử dụng adelay=1000|1000|1000|1000|1000|1000
.
Sử dụng bộ lọc apad (thêm khoảng lặng vào cuối)
Sử dụng bộ lọc âm thanh apad nếu bạn muốn thực hiện mọi thứ trong một lệnh hoặc nếu bạn muốn xuất ra một định dạng khác với đầu vào (vì phương thức này vẫn mã hóa lại bằng mọi cách). Điều này chỉ hoạt động để thêm sự im lặng vào cuối tập tin.
Ví dụ này sẽ thêm 1 giây im lặng vào cuối:
ffmpeg -i input.wav -af "apad=pad_dur=1" output.m4a
Lọc sẽ dẫn đến mã hóa lại trong khi trình giải mã concat sẽ không.
Các pad_dur
tùy chọn đã được bổ sung sau khi phát hành FFmpeg 4.1, vì vậy bạn sẽ cần phải sử dụng một xây dựng gần đây từ các chi nhánh chủ git hoặc chờ cho FFmpeg 4.2.