Я использую C# и DirectSound для записи звука и отправки его через локальную сеть на другой компьютер, который принимает данные и сохраняет их в волновой файл.Получение аудиоданных из нескольких источников и их слияние в волновой файл
Я использовал аналогичный code for recording и аналогичный for saving волновой файл (используя NAudio).
Сохранение всех принятых байтов в волновой файл. Но я хотел бы получить звук с нескольких компьютеров и объединить его в один файл.
Я попытался записать два отдельных волновых файла, по одному для каждого клиента, а затем объединить их. Однако мой наивный подход не предоставляет никаких средств синхронизации. Полученные волновые файлы отличаются длиной не менее 5 секунд и не могут быть соответствующим образом объединены.
Итак, вот мои вопросы:
1) Как я могу принимать аудио байт, полученных из сети и сохранять их в файл волны таким образом, что результирующий файл воспроизводит аудио в нужное время?
Например, я записываю 100 секунд звука и отправляю его по сети. Но на самом деле записано только 95 секунд аудио байтов. Отсутствующие 5 секунд являются результатом накопления небольших задержек, возникающих при отправке пакетов.
Итак, как я могу синхронизировать эти 95 секунд аудио для воспроизведения в нужное время в течение 100 секунд?
2) Как я могу объединить звуковые байты, которые я получаю от нескольких клиентов, для получения одного волнового файла, который воспроизводит звук всех клиентов в синхронизации?
Пожалуйста, дайте мне знать, если мне нужно уточнить мой вопрос. Я ценю любую помощь!
Вам нужно время x, чтобы быть одинаковым на всех отправителе? т. е. должны ли они иметь одну и ту же временную базу? – thalm
Если вы делаете громкий шум, я хочу, чтобы он отображался на всех записях одновременно. –