2008-12-04 5 views
4

У меня есть 2 wav-файла, которые я хочу создать/объединить/объединить в один файл с двумя звуковыми дорожками.Слияние файлов WAV в C#

Есть ли какой-либо api для этой задачи или некоторые встроенные команды inn в .NET, которые я могу использовать в som genius, чтобы сделать эту задачу возможной?

Большое спасибо за помощь. :)

+0

Можете ли вы просто уточнить, что хотите объединить два трека, чтобы они играли синхронно, или вы хотите добавить один трек в конец другого? – RobS 2008-12-04 20:01:15

ответ

3

Если я не ошибаюсь, вы можете просто добавить байты из второго файла в конец первого. Если есть какие-либо данные заголовка, вы хотите исключить это (см. here)

Обратите внимание, что вы можете услышать щелчок или поп между двумя клипами, так как смешивания не будет. Вероятно, вы можете обойти это, затухая (постепенно уменьшая значения для последних нескольких мс до значения центра).

0

Простым способом было бы интерпретировать заголовки wav-файлов, извлекать образцы и чередовать образцы из обоих файлов в новый поток примеров, который вы пишете в новый wav-файл. Вы также можете добавить примерные значения обоих исходных файлов wav-файлов по образцу, чтобы «смешивать» оба файла в один трек. Формат файла wav не настолько сложный, поэтому писать этот код не так уж сложно. Кроме того, существует множество проектов с открытым исходным кодом, содержащих код для чтения и записи wav-файлов. Обратите внимание, что все может быть несколько сложнее, чем исходные файлы wav имеют разные частоты дискретизации. Проверить this для описания формата wav.

2

Если вам нужно сделать это только один раз, то лучше всего использовать какое-то программное обеспечение специально для этой задачи. Praat или audacity сделают это (присоедините или объедините две дорожки).

Praat также может быть сценарием, поэтому можно сценаризировать Praat, а затем вызвать Praat и скрипт из приложения .Net.

Роб

+0

hum :) Да, я знаю, проблема в том, что у меня есть 60 файлов файлов, которые необходимо объединить в 15-минутные файлы. И, скорее всего, я должен это делать не один раз. Я посмотрел на sox и mancoder в качестве примера того, что вы говорите, но они, похоже, не трюки. – suxSx 2008-12-05 06:57:55

4

К сожалению, я, возможно, немного неясно. Я не хочу объединять их, чтобы они играли синхронно. Я хочу добавить треки в конец друг друга, чтобы они играли один и один друг за другом в одном файле.

Но я думаю, что нашел ответ в this нить.

Он отлично работает и использует технику Jon B, упомянутый ранее.

0

Да, вы можете просто добавить данные второго wav (исключая его заголовки) как sais Jon B, но вы также должны изменить заголовок первого файла, чтобы указать новую длину, в противном случае некоторые аудиоплееры остановятся на конец первой части.

Для динамического конкатенации, так как вы не знаете размер общего wav в начале, вы можете поместить поддельную длину в заголовок первого файла, например, например, 10 часов.

Затем аудиоплеер должен просто подождать, пока вы не добавите все данные. Он работает для ffmpeg как минимум

Смежные вопросы