Как объединить файлы WAV в C # - PullRequest
4 голосов
/ 04 декабря 2008

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

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

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

Ответы [ 4 ]

2 голосов
/ 04 декабря 2008

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

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

Rob

2 голосов
/ 04 декабря 2008

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

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

0 голосов
/ 12 мая 2016

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

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

Тогда аудиоплеер должен просто подождать, пока вы не добавите все данные. Это работает для ffmpeg по крайней мере

0 голосов
/ 04 декабря 2008

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

...