Щоб об'єднати та перекодувати аудіофайли, це робочий процес, який ви хочете виконувати:
- Розшифрувати вхідні аудіофайли до даних WAV / PCM,
- Об'єднайте WAV,
- Кодуйте WAV для виводу аудіо-кодекового файлу.
Обробка в цих кроках виконує конкатенацію даних WAV, що є найпростішим для боротьби з найменшими втратами. А оскільки ви хочете все-таки перекодувати, вам доведеться декодувати WAV десь у процесі; може також скористатися цим.
Ось етапи, які я рекомендую. Ми будемо використовувати ffmpegдля декодування, soxконкатенації та oggencкодування. Ви можете замінити інші інструменти для будь-якого кроку - mencoderі інші прекрасно працюють як декодер, і будь-який інструмент, що кодує Ogg, може бути використаний як кодер - хоча я думаю, що вам буде важко натиснути, щоб знайти кращий інструмент, ніж soxдля конкатенація.
find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(це працює ffmpeg -i infile.wma outfile.infile.wmaна кожному WMA-файлі в поточному каталозі)
sox outfile* all.wav
(зверніть увагу outfileна той самий префікс, який ми дали вихідним файлам на кроці 1)
oggenc all.wav all.ogg
Ви, мабуть, хочете тут встановити якісні налаштування, але це дасть пристойні якості за замовчуванням. Я не отримав результатів, які мені сподобалися ffmpeg, але ви можете віддати перевагу, тому нижче я включив приклад із ffmpeg.
Зауважте, що soxкоманда не працюватиме належним чином, якщо всі файли WAV не мають однакового формату - якщо, наприклад, деякі 22 кГц, а деякі 44,1 кГц, вам потрібно визначити їх за soxдопомогою перемикачів командної лінії та вказати, у якому форматі ви хочете Я не знаю жодного інструмента командного рядка настільки здатного, як soxдля кроку конкатенації. Можливо, ви можете вивести в необроблений формат PCM на кроці 1 і використовувати catдля кроку 2, але це буде працювати лише в тому випадку, якщо вони в тому ж форматі, і вам потрібно бути надзвичайно конкретним як для вашого декодера, так і для кодера, що стосується того, що формат, який вони повинні очікувати.
Кодування за допомогою ffmpeg: Дуже багато публікацій навколо мережі скаржаться на те, що вбудований ffmpeg кодер Vorbis не дуже добре. Якщо ваша версія побудована з підтримкою libvorbis, використовуйте -acodec libvorbisзамість цього. Зразок командного рядка:
ffmpeg -i all.wav -acodec libvorbis -ac 2 -ab 128k all.ogg