Вверх ↑
Этот топик читают: Гость
Ответов: 563
Рейтинг: 54
#1: 2008-06-20 23:36:19 ЛС | профиль | цитата
Вот набросал простой Voice (переговорник), может кому пригодится. ))
Передаёт звук с микрофона по сети через протокол TCP с задержкой в 2 секунды

code_9315.txt
карма: 0

0
файлы: 1code_9315.txt [1.9KB] [418]
Ответов: 3851
Рейтинг: 159
#2: 2008-06-21 12:03:38 ЛС | профиль | цитата
сэкономил немного на элементах и загрузке процессора: code_9318.txt

Возможно, применение 'двухтактной' схемы при работе с дисковой системой, уменьшит заметность щелчков..

Жаль что элемент Record так безобразно работает..

Решение мне понравилось
карма: 0
начавший
0
файлы: 1code_9318.txt [1.9KB] [234]
Ответов: 563
Рейтинг: 54
#3: 2008-06-21 12:25:50 ЛС | профиль | цитата
хорошо переделал! меньше нагрузки на проц, я почему то в подобных схемах ставлю сохранение файла в потом загрузку и забываю про возможность передачи данных напрямую )))
------------ Дoбавленo:

но этот вариант только через Bass, но и так нормально
карма: 0

0
Ответов: 232
Рейтинг: 6
#4: 2008-06-21 13:18:58 ЛС | профиль | цитата
Да и вообще через бас то лучше ;)
------------ Дoбавленo:

Молодца короче ) еще можно научить реагировать на звук ) правда наверно через визуализацию придется )
карма: 0

0
Ответов: 3851
Рейтинг: 159
#5: 2008-06-21 13:47:48 ЛС | профиль | цитата
Antonio DieS писал(а):
научить реагировать на звук
если тебя заботит загрузка сети, то проще сделать кнопку. Иначе без анализа звуковых данных не обойтись, а это загрузка проца и время..
карма: 0
начавший
0
Ответов: 232
Рейтинг: 6
#6: 2008-06-21 14:23:28 ЛС | профиль | цитата
Андрей., Тоже верно, а анализ то всяко нужен будет, так что лучше кнопочка ) Автор добей нас танцем! добавь туда чатик маленький и гор клавишу на контрол например ).
карма: 0

0
Ответов: 1088
Рейтинг: 112
#7: 2008-06-21 14:26:48 ЛС | профиль | цитата
Лучше поставить Net Speakerphone 4
Хотя цели разные бывают...
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 563
Рейтинг: 54
#8: 2008-06-21 18:46:38 ЛС | профиль | цитата
Antonio DieS, вот специально для тебя )) подобным решением было первое что пришло в голову, думаю возможно упростить, но мне с этим разбираться некогда (делаю пакет).

#sha
Make(delphi)
Pos(32,0)
Add(Button,3025594,45,133)
{
Left=65
Top=5
Hint="Остановить вещание"
Caption="Стоп"
Point(onMouseDown)
link(onClick,3228529:doData,[(84,139)(84,223)])
link(onMouseDown,14270066:doOff,[])
}
Add(MainForm,4423403,-25,7)
{
Left=20
Top=105
Width=275
Height=295
Caption="Voice"
BorderStyle=4
Position=1
link(onCreate,2806749:doEvent1,[])
}
Add(Record,11592523,248,91)
{
Filename="wave.wav"
Speed=12
}
Add(Hub,1105768,143,91)
{
InCount=2
link(onEvent1,11592523:doRecord,[])
link(onEvent2,11649054:doTimer,[])
}
Add(Timer,11649054,192,98)
{
Interval=2000
Enable=1
AutoStop=1
Point(onStop)
link(onTimer,11592523:doSave,[])
link(onStop,1412454:doEvent1,[(236,111)(236,129)(180,129)(180,146)])
}
Add(InfoTip,12143931,38,56)
{
Info=#6:Сервер|
Width=568
Height=207
}
Add(Hub,56102,248,140)
{
OutCount=3
link(onEvent1,66235:doOpen,[(289,146)(289,104)])
link(onEvent2,43492:doCompress,[])
link(onEvent3,66235:doClose,[(295,160)(295,111)])
}
Add(FileStream,66235,304,98)
{
FileName="wave.wav"
}
Add(ZLIB,43492,304,147)
{
link(onStream,15464624:doSend,[])
link(Stream,66235:Stream,[])
}
Add(TCP_Server,15464624,360,133)
{
Port=479
DataType=3
Point(onServerConnect)
}
Add(PlaySound,15647025,360,385)
{
FileName="wave.wav"
}
Add(TCP_Client,8052056,171,364)
{
Port=479
IP="127.0.0.1"
DataType=3
link(onRead,27261:doDeCompress,[])
}
Add(FileStream,13052961,311,343)
{
FileName="wave.wav"
Mode=1
AutoCopy=0
Point(doCopyFromStream)
}
Add(Hub,15592199,262,357)
{
link(onEvent1,13052961:doCopyFromStream,[])
link(onEvent2,3039283:doCompare,[(304,370)(304,391)])
}
Add(If_else,3039283,318,385)
{
link(onTrue,15647025:doPlay,[])
link(Op1,13052961:Size,[])
link(Op2,13052961:Position,[])
}
Add(ZLIB,27261,220,357)
{
link(onStream,15592199:doEvent1,[])
}
Add(Hub,2806749,17,21)
{
OutCount=4
link(onEvent1,15464624:doOpen,[(349,27)(349,139)])
link(onEvent2,8052056:doOpen,[(121,34)(121,370)])
link(onEvent3,8424634:doOpen,[(435,41)(435,139)])
link(onEvent4,7077545:doOpen,[(428,48)(428,356)])
}
Add(Button,185194,45,91)
{
Left=5
Top=5
Hint="Запустить вещание"
Caption="Вещать"
Point(onMouseDown)
Point(onMouseUp)
link(onClick,1105768:doEvent1,[])
link(onMouseDown,5596748:doData,[(115,104)(115,181)])
link(onMouseUp,14270066:doOn,[(89,111)(89,153)])
}
Add(LED,14270066,101,133)
{
Left=125
Top=5
Width=20
Height=20
Hint="Статус вещания"
Blick=1
ColorOn=32768
ColorOff=255
}
Add(TCP_Server,8424634,451,133)
{
Port=478
Point(onServerConnect)
link(onRead,6232617:doString,[])
}
Add(TCP_Client,7077545,451,350)
{
Port=478
IP="127.0.0.1"
link(onRead,14412150:doString,[])
}
Add(Memo,6315237,549,133)
{
Left=5
Top=30
Width=260
Height=95
Strings=#11:Чат клиента|
ScrollBars=2
}
Add(Memo,6961912,549,350)
{
Left=5
Top=150
Width=260
Height=95
Strings=#11:Чат сервера|
ScrollBars=2
}
Add(ComputerInfo,10306507,507,63)
{
}
Add(ComputerInfo,4766766,507,294)
{
}
Add(Edit,7512943,549,189)
{
Left=5
Top=125
Width=260
Text="Отправка сообшения по нажатию Enter"
link(onEnter,8424634:doSend,[(593,202)(593,178)(439,178)(439,153)])
}
Add(Edit,14039643,549,406)
{
Left=5
Top=245
Width=260
Text="Отправка сообшения по нажатию Enter"
link(onEnter,7077545:doSend,[(593,419)(593,395)(439,395)(439,370)])
}
Add(FormatStr,6232617,500,133)
{
DataCount=3
Mask="[%1] <%2> %3"
link(onFString,6315237:doAdd,[])
link(Str1,15526709:FormatTime,[(506,114)(478,114)])
link(Str2,10306507:UserName,[])
}
Add(Time,15526709,472,63)
{
Format="h:m:s"
}
Add(Time,215685,472,294)
{
Format="h:m:s"
}
Add(FormatStr,14412150,500,350)
{
DataCount=3
Mask="[%1] <%2> %3"
link(onFString,6961912:doAdd,[])
link(Str1,215685:FormatTime,[(506,338)(478,338)])
link(Str2,4766766:UserName,[])
}
Add(InfoTip,8282145,150,280)
{
Info=#6:Клиент|
Width=463
Height=172
}
Add(Hub,1412454,192,140)
{
link(onEvent1,56102:doEvent1,[])
link(onEvent2,9896443:doCompare,[(236,153)(236,223)])
}
Add(Memory,8445758,248,175)
{
}
Add(If_else,9896443,248,217)
{
Op2=Integer(0)
link(onFalse,1105768:doEvent2,[(292,230)(292,173)(125,173)(125,104)])
link(Op1,8445758:Value,[])
}
Add(DoData,5596748,143,175)
{
Data=Integer(1)
link(onEventData,5737857:doEvent1,[])
}
Add(DoData,3228529,143,217)
{
Data=Integer(0)
link(onEventData,5737857:doEvent2,[(183,223)(183,188)])
}
Add(Hub,5737857,192,175)
{
InCount=2
OutCount=1
link(onEvent1,8445758:doValue,[])
}

карма: 0

0
Ответов: 3851
Рейтинг: 159
#9: 2008-06-23 10:38:29 ЛС | профиль | цитата
Sniper36 писал(а):
Лучше поставить Net Speakerphone 4
сетевых говорилок много, но схему можно использовать в своих проектах, а готовые (Net Speakerphone 4) - не всегда..
карма: 0
начавший
0
Ответов: 563
Рейтинг: 54
#10: 2008-06-23 11:30:22 ЛС | профиль | цитата
Андрей., верно, пусть лежит, вдруг и пригодится! ;-)
карма: 0

0
Ответов: 893
Рейтинг: 18
#11: 2008-06-23 14:00:38 ЛС | профиль | цитата
Схемка неплохая , добавь её в примеры пожалуйста DILMA
карма: 0
Время верстки: %cr_time% Текущее время: %time%
1
Голосовали:bublik
Ответов: 232
Рейтинг: 6
#12: 2008-06-23 18:21:22 ЛС | профиль | цитата
bublik, все бы ничего но ты знаешь происходять какието обрывания голоса, по непонятным причинам кстате.
карма: 0

0
Ответов: 563
Рейтинг: 54
#13: 2008-06-23 18:24:53 ЛС | профиль | цитата
заметил, скорее всего это из за интервала между каждой операцией, это и создаёт обрыв, но мало того ещё и урезается примерно секунда звука может меньше. щас подумаю посмотрю что можно подправить.
карма: 0

0
Ответов: 232
Рейтинг: 6
#14: 2008-06-23 18:29:02 ЛС | профиль | цитата
Может просто дублировать?
------------ Дoбавленo:

Тогда будет четкая пауза но без обрыва голоса
карма: 0

0
Ответов: 3851
Рейтинг: 159
#15: 2008-06-24 13:02:11 ЛС | профиль | цитата
Щелчки неизбежны - скорость доступа к диску > 0.
По поводу урезаний - я не заметил, подозреваю причина - элемент Record.
карма: 0
начавший
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)