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