Sox: объединить два аудиофайла с пэдом
я использую sox
инструмент, и я хотел бы объединить два аудиофайла скажем long.ogg
и short.ogg
для вывода файла output.ogg
.
Это очень легко использовать $ sox -m long.ogg short.ogg output.ogg
.
всего, хотелось бы short.ogg
на играется через n секунд (while long.ogg
следует начинать с самого начала). Для этого я нашел pad эффект. Но я не понимаю синтаксиса, чтобы задерживать только short.ogg
входной файл, а не long.ogg
один.
я нашел (грязный) способ сделать это (с N=6):
$ sox short.ogg delayed.ogg pad 6
$ sox -m long.ogg delayed.ogg output.ogg
Я бы не хотел создавать промежуточный файл. Заранее спасибо за вашу помощь.
5 ответов
вы должны быть в состоянии сделать что-то вроде:
sox short.ogg -p pad 0 6|sox - long.ogg output.ogg
-p
опция для sox используется для трубопроводов-в основном, она говорит sox использовать stdout в качестве выхода. Используя -
поскольку вход во второй sox фактически говорит, что вход является stdin (который, случается, является stdout предыдущего sox, поскольку мы соединяем с |
). pad 0 6
сообщает pad 0 секунд в начале и 6 секунд в конце.
надеюсь, что это помогает.
благодаря icyrock мне удалось найти решение. Я использую:
$ sox short.ogg -p pad 6 0 | sox - -m long.ogg output.ogg
для нескольких треков (кредиты Орландо):
$ sox starts-last.mp3 -p pad 2 0 | sox - -m starts-second.mp3 -p pad 2 0 | sox - -m starts-first.mp3 combined.mp3
вот еще одно решение, пользующееся использованием двойных кавычек. Это делает команду намного более читаемой и очень простой в расширении:
sox −−combine sequence "|sox input/odin.wav -p pad 0 1" "|sox input/dva.wav -p pad 0 1" "|sox input/tri.wav -p pad 0 1" output/test.wav
это объединит все три файла с 1-секундной паузой после каждого (один, тишина, два, тишина, три, тишина.)
применительно к исходному сообщению мы получим:
sox −−combine sequence "|sox long.ogg -p pad 0 6" "|sox short.ogg -p pad 0 1" newfile.ogg
(протестировано OK на SoX 14.4.1 в Windows.)
я почти не видел примера SoX, использующего двойные кавычки, поэтому я надеюсь, что это помогает кому-то!
также наткнулся на команду delay.
вы можете сделать следующее: закон SOX.ехе -м коротким.Огг долго.ogg задержка 6
это объединит два файла и короткие.ogg начнет 6 секунд в длину.ogg
потому что мне пока не разрешено комментировать, я просто хотел бы сказать, что мне нравится ответ Фабьена, потому что его также можно использовать с "нулевым" звуковым файлом: например,
sox --combine concatenate "|sox -n -p synth 1 sine 300" "|sox -n -p synth 1 sine 400" useful.wav
запишет 1 секунду синусоидального тона при 300 Гц, затем 1 секунду синусоидального тона при 400 Гц и запишет его в файл "полезно.в формате WAV".
sox -n -p synth 1 sine 300 | sox --combine concatenate - farts.wav synth 1 sine 400
будет записывать только 1 секунду синусоидальной волны при 400 Гц в файл " пукает.в формате WAV". В файле отсутствует первая синусоидальная волна при 300 Гц.