Để nối và chuyển mã các tệp âm thanh, đây là quy trình công việc bạn muốn theo:
- Giải mã các tệp âm thanh đầu vào thành dữ liệu WAV / PCM,
- WAV kết hợp,
- Mã hóa WAV để xuất tập tin codec âm thanh.
Việc xử lý trong các bước này thực hiện việc ghép nối trên dữ liệu WAV, đây là cách dễ nhất để xử lý và ít mất mát nhất. Và vì dù sao bạn cũng muốn chuyển mã, bạn sẽ phải giải mã thành WAV ở đâu đó trong quy trình; cũng có thể tận dụng nó.
Dưới đây là các bước tôi khuyên bạn nên. Chúng tôi sẽ sử dụng ffmpeg
để giải mã, sox
ghép nối và oggenc
mã hóa. Bạn có thể thay thế các công cụ khác cho bất kỳ bước nào - mencoder
và các công cụ khác hoạt động tốt như một bộ giải mã và mọi công cụ mã hóa Ogg đều có thể được sử dụng làm bộ mã hóa - mặc dù tôi nghĩ bạn sẽ khó tìm được một công cụ tốt hơn so sox
với ghép nối.
find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(điều này chạy ffmpeg -i infile.wma outfile.infile.wma
trên mỗi tệp WMA trong thư mục hiện tại)
sox outfile* all.wav
(lưu ý outfile
là cùng một tiền tố chúng tôi đã cho các tệp đầu ra ở bước 1)
oggenc all.wav all.ogg
bạn có thể muốn một số cài đặt chất lượng ở đây, nhưng điều này sẽ cho mặc định chất lượng khá. Tôi không nhận được kết quả tôi thích ffmpeg
, nhưng bạn có thể thích nó, vì vậy tôi đã bao gồm một ví dụ với ffmpeg bên dưới.
Lưu ý rằng sox
lệnh sẽ không hoạt động chính xác trừ khi tất cả các tệp WAV có cùng định dạng - nếu một số là 22kHz và một số là 44.1kHz, chẳng hạn, bạn cần xác định chúng sox
thông qua các chuyển đổi dòng lệnh và chỉ định định dạng nào bạn muốn đầu ra. Tôi không biết bất kỳ công cụ dòng lệnh nào có khả năng như sox
đối với bước nối. Bạn có thể xuất ra định dạng PCM thô ở bước 1 và sử dụng cat
cho bước 2, nhưng điều đó sẽ chỉ hoạt động nếu chúng ở cùng định dạng và bạn cần cực kỳ cụ thể cho cả bộ giải mã và bộ mã hóa của mình. định dạng họ nên mong đợi.
Mã hóa bằng ffmpeg: Rất nhiều bài đăng trên mạng 'phàn nàn rằng bộ mã hóa Vorbis dựng sẵn của ffmpeg không tốt lắm. Nếu phiên bản của bạn được xây dựng với sự hỗ trợ libvorbis, -acodec libvorbis
thay vào đó hãy sử dụng . Dòng lệnh mẫu:
ffmpeg -i all.wav -acodec libvorbis -ac 2 -ab 128k all.ogg