Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 621

/ вопрос открыт /

Приветствую, уважаемые эксперты!
скачал архив с компонентом ACM (для работы со звуком), в котором были и ACMDialog, и ACMWaveIn, и ACMWaveOut. Еще в этом же архивчике был примерчик аудиочата по сети (вбиваешь IP-адрес собоеседника, выбираешь аудиокодек и можно переговариваться). Сам пример работал, но вот, запустив проект в Delphi, оказалось что не хватает компонентов wall (этот для меня не важный), udpsock (этот для меня важный, отвечает за соединение приложений по сети). Обыскался недостающих, найти не смог, попытался организовать связь через обычный IdUdpClient и IdUdpServer, не получилось, на серверной части приложения при работе вылетает ошибка "Socker Error 10040...(слишком длинное сообщение)". Делал так, как написано в приложении к вопросу.

Предавал данные с микрофона через функцию

 idudpclient1.SendBuffer(data,size);
Принимал -
 idudpserver1.ReceiveBuffer(data,size);
где data и size получены в процедуре ACMWaveIn
 procedure TForm1.ACMWaveIn1Data(data: Pointer; size: Integer);

Попытка изменить Buffersize у обоих компонентов IdUdpClient и IdUdpServer одновременно с 8192 на 81920 не дали результата (хотя, вроде, на выходе с клиентской части size=3840).

Как быть, подскажите, пожалуйста.

Приложение:
  1.  
  2. {{code}}....
  3. procedure TForm1.Button1Click(Sender: TObject);
  4. var format:pointer;
  5. begin
  6. idudpclient1.Active:=true;
  7. format:=ACMDialog1.OpenDialog;
  8. if format=nil then exit;
  9. ACMWaveOut1.Open(format);
  10. ACMWaveIn1.Open(format);
  11. Button1.Enabled:=false;
  12. Button2.Enabled:=true;
  13. end;
  14.  
  15. procedure TForm1.Button2Click(Sender: TObject);
  16. begin
  17. idudpclient1.Active:=false;
  18. ACMWaveIn1.Close;
  19. ACMWaveOut1.Close;
  20. Button1.Enabled:=true;
  21. Button2.Enabled:=false;
  22. end;
  23.  
  24. procedure TForm1.ACMWaveIn1Data(data: Pointer; size: Integer);
  25. begin
  26. label1.Caption:=inttostr(size);
  27. idudpclient1.SendBuffer(data,size);
  28. if checkbox1.Checked then ACMWaveOut1.PlayBack(data,size);
  29. end;
  30. ...
  31. {{/code}}
  32. ______________________________________________________________________________
  33.  
  34.  
  35.  
  36. {{code}}
  37. ...
  38. procedure TForm1.Button1Click(Sender: TObject);
  39.  
  40.  
  41. end;
  42.  
  43. procedure TForm1.Button2Click(Sender: TObject);
  44.  
  45. end;
  46.  
  47. procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  48. ABinding: TIdSocketHandle);
  49. begin
  50. idudpserver1.ReceiveBuffer(data,size);
  51. ACMWaveOut1.PlayBack(data,size);
  52. end;
  53. ...
  54. {{/code}}


Чеботок Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Чеботок (статус: Посетитель)
Вопрос отправлен: 30 сентября 2010, 00:11
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:31
Выполнено за 0.03 сек.