Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2010, 18:12   #1
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Печаль Передача звука IdTCPClient1 и IdTCPServer1

!Здравствуйте!

Извините знаю такая тема уже обсуждалась на форуме, ну там не все так как хотелось бы!
Пытаюсь передать звук по сети с помощью IdTCPClient1 и IdTCPServer1
Вот код:
Код:
//Принимаем звук.

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
Var
 S: TStream;
begin
 S:=TFileStream.Create(ExtractFilePath(Application.ExeName)+'1.wav', fmCreate);
 AThread.Connection.Socket.Recv(S, S.Size);
 Application.ProcessMessages;
 AThread.Connection.Disconnect;
 S.Free;
end;

//Передаем звук.

procedure TForm1.Button1Click(Sender: TObject);
Var
 S: TStream;
begin
 S:=TFileStream.Create('1.wav', fmOpenRead);
 IdTCPClient1.Port:=5060;
 IdTCPClient1.Host:='10.8.1.85';
 IdTCPClient1.Connect;
 IdTCPClient1.Socket.Send(S, S.Size);
 IdTCPClient1.Disconnect;
 S.Free;
end;
Знаю что код кривой, с сетью столкнулся впервые
Мне нужно как-то реализовать передачу звука прямо с памяти не записывая в файл если это возможно и воспроизводить на том конце также ( не записывая в файл ), после чего память должна освобождаться и передавать следующая часть звук.
!Заранее очень благодарен!
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 30.01.2010, 18:32   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

не вижу кода работы со звуком...
Код:
procedure TACMWaveIn.WaveInCallback(var msg:TMessage);  //this is called when is buffer full 
var
   Header:PWaveHdr;
   i,bytesrecorded:integer;
   data:PChar;
begin

     Header:=PWaveHdr(msg.lparam);
     if closed=false then
     begin
     i:=waveInUnPrepareHeader(HWaveIn1^,Header,sizeof(TWavehdr));
     if i<>0 then showmessage('In Un Prepare error');
     bytesrecorded:=header.dwbytesrecorded;
     getmem(data,bytesrecorded); //allocate memory
     move(header.lpdata^,data^,bytesrecorded); //copy data
     if assigned(FOnData) then
     begin
      FOnData(data,bytesrecorded);
     end;
тема действительно обсуждалась... загляните в генофонд модулей ACMWaveIn, ACMWaveOut, там все прозрачно.
TCP не рекомендую, лучше UDP... "подвисонов" будет меньше.

сопутствующие темы 1 2 3 статья
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.11.2010, 21:54   #3
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Восклицание

Так оно у меня даже файл передать не может.

Вот код :
Клиент :
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
 MS:TMemoryStream;
begin
 MS:=TMemoryStream.Create;
 MS.LoadFromFile('1.wav');
 IdTCPClient1.Port:=5060;
 IdTCPClient1.Host:='127.0.0.1';
 IdTCPClient1.Connect;
 MS.Position:=0;
 Edit1.Text:=IntToStr(MS.Size);
 IdTCPClient1.Socket.Send(MS, MS.Size);
 IdTCPClient1.Disconnect;
 MS.Clear;
 MS.Free;
end;
Серв:
Код:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
Var
 MS: TMemoryStream;
begin
 MS:=TMemoryStream.Create;
 AThread.Connection.Socket.Recv(MS, MS.Size);
 Edit1.Text:=IntToStr(MS.Size);
 Application.ProcessMessages;
 AThread.Connection.Disconnect;
 MS.Position:=0;
 MS.SaveToFile(ExtractFilePath(Application.ExeName)+'1.wav');
 MS.Clear;
 MS.Free;
end;
Файл создает, только весит он "0"
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Старый 15.11.2010, 23:13   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

с тех пор, даже статья в журнале появилась ...№3, с.33.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.11.2010, 23:14   #5
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Есть специальный компонент для передачи звука/голоса по сети, только вот забыл как он называется, думаю в гугле можно его найти.
RIO вне форума Ответить с цитированием
Старый 15.11.2010, 23:27   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

компоненты озвучены выше.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.11.2010, 23:56   #7
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Печаль

Цитата:
Сообщение от RIO Посмотреть сообщение
Есть специальный компонент для передачи звука/голоса по сети, только вот забыл как он называется, думаю в гугле можно его найти.
Мне сейчас не нужно передавать звук, мне хоть бы файл отправить. Или текст
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности

Последний раз редактировалось SoftKoc; 16.11.2010 в 00:20.
SoftKoc вне форума Ответить с цитированием
Старый 16.11.2010, 00:32   #8
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Мне когда-то также нужно было это. Здесь на форуме я нашел полностью рабочий код, который мне подошел, но сейчас у меня его нет и на форуме не помню где найти, попробуйте поискать. А вообще мне больше нравиться использовать UDP для передачи файлов.
RIO вне форума Ответить с цитированием
Старый 16.11.2010, 01:38   #9
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
Восклицание

Цитата:
Сообщение от RIO Посмотреть сообщение
А вообще мне больше нравиться использовать UDP для передачи файлов.
Я согласен, idUDP - намного легче освоить. Через idUDP я все уже написал, текст отправляю, файлы тоже, но вот проблема с отправкой больших файлов, я думаю что их нужно по частям отправлять "но вот как это реализовать?".
Что я могу сказать еще за idUDP конечно все хорошо, одно лишь плохо - он слишком часто теряет пакеты. Потери я заметил вчера когда тестил программу, я был в шоке, где-то из 15-20 пакетов 1-2 теряет, очень обидно.
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности
SoftKoc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Балансировка звука blackstersl Мультимедиа в Delphi 1 03.07.2009 08:26
IdTCPServer1.bindings Черничный Работа с сетью в Delphi 1 12.08.2008 09:45
Воспроизведение звука Патрон Общие вопросы Delphi 21 15.07.2008 20:08
воспроизведение звука.. Kaktys v tymane Помощь студентам 1 01.05.2008 20:55
передача звука по сети и вэб Банзай Работа с сетью в Delphi 2 07.01.2008 22:21