Выполнение простого двухточечного VOIP не слишком сложно. По сути, вам нужен кодек на каждом конце, а затем обычно используется UDP для отправки закодированных пакетов с одного конца на другой.
Также могут быть проблемы с сетевым подключением, особенно связанные с NAT.
Если вы хотите взаимодействовать с существующими системами на основе VOIP, вам потребуется поддержка одного из базовых протоколов подключения, таких как H.323, и вам также может потребоваться мониторинг и контроль над RTP. Эти протоколы общеизвестно сложны.
При работе с такими управляемыми языками, как C # или Java, есть несколько хитростей, особенно связанных с предотвращением икоты из-за GC.