LINUX.ORG.RU

Пример VoIP на C++


0

1

Шарюсь в гугле со вчерашнего дня, так и не нашол годных примеров войпа на языке cpp. Есть готовые программы но это монстры, нужен просто рабочий пример вроде этого (это на c#) http://socketcoder.com/ArticleFile.aspx?index=2&ArticleID=73

То есть простой, а не монстр.

Ответ на: комментарий от ochkarik-dev

голосовой кодированный определенным кодеком поток, мчащийся по указаному айпи.

Это ты протокол RTP описал.

yoghurt ★★★★★
()

По теме - посмотри исходники Qutecom.

yoghurt ★★★★★
()
Ответ на: комментарий от Jetty

Twinkle это монстр, легкий пример войпа это 4-5 исходных файлов, а не сотня с различными кодеками.

ochkarik-dev
() автор топика
Ответ на: комментарий от ochkarik-dev

Ок. Давай я раобъю на составные части:
голосовой
кодированный определенным кодеком
поток,
мчащийся по указаному
айпи.

Вот это 5 разных кусков твоего таска(некоторые агрегируются).
И эта технология весьма сложна. Как минимум тут еще нужен контролирующий протокол (мы же про VoIP да?).

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

я же пример выше привел чего мне надо, только там на шарпе.

ochkarik-dev
() автор топика
Ответ на: комментарий от ochkarik-dev

ищу пример

Реализация сигнального протокола, реализация RTP, реализация кодека, функции работы с устройствами и пользовательский интерфейс (пусть даже консольный) не уложаться в 4-5 исходных файлов вменяемых

yoghurt ★★★★★
()
Ответ на: комментарий от ochkarik-dev

не не подходит, мне это в игру интегрировать

1. Простым примером не отделаешься. Сложные тебе уже назвали.

2. Ты же недавно еще только движок искал. Или ты, как Попов, очень быстро проектируешь и кодишь?

mopsene ★★★
()
Ответ на: комментарий от yoghurt

не уложаться в 4-5 исходных файлов вменяемых

Ну я нагрубил конечно, но не монстр вроде Qutecom, вот такой как на шарпе пример идеален, там кроме самой передачи с кнопкой нечего нет, а в монстрах Qutecom, Twinkle устанешь отсеивать хлам относящийся к настройкам программы и прочим функциям самой программы а не того что мне нужно.

ochkarik-dev
() автор топика
Ответ на: комментарий от ochkarik-dev

В приведенном примере как раз «библа».

Jetty ★★★★★
()
Ответ на: комментарий от ochkarik-dev

вот такой как на шарпе пример идеален

Посмотрел я этот пример.

Ок, G711 A-Law там реализован. Работа с устройствами идёт через DirectSound.

Но! Аудио-данные кодируются и сразу шлются в сокет как есть. Читаются из сокета и проигрываются - тоже как есть. Ни временного штампования, ни выравнивания, ничего. Это не серьезно))

yoghurt ★★★★★
()
Ответ на: комментарий от mopsene

Ты же недавно еще только движок искал.

жвижок не жлавное, и он есть кстати, зовется ирлихтом, вот в него в качестве эксперемента хочу подкрутить простейший, тупейший голосовой связь.

ochkarik-dev
() автор топика
Ответ на: комментарий от ochkarik-dev

мне это в игру интегрировать

И чем тебе не подходит WebRTC? Создание канала, установка устройств на воспроизведение и захват, установка порта, на котором получать и адреса с портом, куда слать, и запуск этого всего добра там уложатся в 50 строчек.

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Ты не шаришь. Пример надо а не библа! И шоб как на шарпе!

Jetty ★★★★★
()
Ответ на: комментарий от yoghurt

и запуск этого всего добра там уложатся в 50 строчек.

На которые нужно потратить время и изучить WebRTC а потом только накатать эти 50 строчек, мне лень, мне проще найти уже готовое пусть и через жопу, и подкрутить готовое не парясь, просто для пробы.

ochkarik-dev
() автор топика
Ответ на: комментарий от ochkarik-dev

Какая блд асинхронность. Нет синхронизации пакетов по времени. Протокол UDP ведь не гарантирует доставки всех пакетов, так же он и не гарантирует того, что все пакеты будут идти в том порядке, в котором их послали.

Вот представь, что пара пакетов до принимающей стороны не пришла, и ещё с десяток - в разнобой. Это скажется на воспроизведении, ага. Все нервы пользователям растрепаешь))

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Да это пофиг, ну подумаешь у пользователей одного из китая другого из россии с диалапом половина фраз не дойдет, это не главное, по крайней мере на данный момент, на данный момент можно и такое подкрутить для теста.

ochkarik-dev
() автор топика

сейчас посмотрел - Ekiga на C++ написана, не 4-5 файлов конечно, но для примера сойдет )

Harald ★★★★★
()
Ответ на: комментарий от yoghurt

ну ок попробую разобраться с WebRTC, ты точно уверен что ее использование рационально в игровом приложении?

ochkarik-dev
() автор топика
Ответ на: комментарий от ochkarik-dev

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

yoghurt ★★★★★
()
Ответ на: комментарий от anonymous

там вся ваша гопота говнокодеров тусят

Такое ощущение что у тебя прям слюна вырвалась когда ты это писал, шепелявости не хватает. Братух, порви волосы на попе в следующий раз, может энергичней получится.

ochkarik-dev
() автор топика
Ответ на: комментарий от ochkarik-dev

Диагональное программирование в проектах используешь?

trex6 ★★★★★
()
Ответ на: комментарий от ochkarik-dev

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

на сервере принимаеш соединения с клиентов - сортируеш клиентов по комнатам - и в каждой комнате микшируеш аудиопотоки что пришли и рассылаеш обратно по клиентам (также декодирование и кодирование по кодекам)

проще некуда

ae1234 ★★
()

Реализовывал я такое с использованием speex/celt. Примером не поделюсь, но подскажу основные проблемы при реализации это синхронизация воспроизведения и эхокомпенсация. Как ни крути, а на одном устройстве звук будет воспроизводиться быстрее, чем записываться на другом и через некоторое время у одной стороны окажется лишний фрейм данных, а у другой одного фрейма будет нехватать. Из открытых эхокомпенсаторов можно использовать входящий в библиотеку speex, он весьма годный.

m0rph ★★★★★
()

cкачай либу OPAL (и PTLib) и посмотри примеры использования, там все довольно просто, библиотека очень хорошо написана и продумана.

s0L
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.