|
Вопрос # 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).
Как быть, подскажите, пожалуйста.
Приложение: Переключить в обычный режим-
- {{code}}....
- procedure TForm1.Button1Click(Sender: TObject);
- var format:pointer;
- begin
- idudpclient1.Active:=true;
- format:=ACMDialog1.OpenDialog;
- if format=nil then exit;
- ACMWaveOut1.Open(format);
- ACMWaveIn1.Open(format);
- Button1.Enabled:=false;
- Button2.Enabled:=true;
- end;
-
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- idudpclient1.Active:=false;
- ACMWaveIn1.Close;
- ACMWaveOut1.Close;
- Button1.Enabled:=true;
- Button2.Enabled:=false;
- end;
-
- procedure TForm1.ACMWaveIn1Data(data: Pointer; size: Integer);
- begin
- label1.Caption:=inttostr(size);
- idudpclient1.SendBuffer(data,size);
- if checkbox1.Checked then ACMWaveOut1.PlayBack(data,size);
- end;
- ...
- {{/code}}
- ______________________________________________________________________________
-
-
-
- {{code}}
- ...
- procedure TForm1.Button1Click(Sender: TObject);
-
-
- end;
-
- procedure TForm1.Button2Click(Sender: TObject);
-
- end;
-
- procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
- ABinding: TIdSocketHandle);
- begin
- idudpserver1.ReceiveBuffer(data,size);
- ACMWaveOut1.PlayBack(data,size);
- end;
- ...
- {{/code}}
 |
Вопрос задал: Чеботок (статус: Посетитель)
Вопрос отправлен: 30 сентября 2010, 00:11
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|