Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как передать звук по сети 
:(
    Опции темы
Spiker13
Дата 7.5.2006, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 26.4.2006

Репутация: нет
Всего: нет



Проблемма в том, что мне, жуть как надо, передать голос с микрофона на другой комп и там чтобы он воспроизвелся не сохраняясь в файл. Если можно при помощи Sockets, т.к. они мне понятней будут.  smile  
PM MAIL   Вверх
Тьма
Дата 7.5.2006, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 22.1.2005
Где: Украина, Винница

Репутация: нет
Всего: 4



берешь, записываешь голос с микрофона в TMemoryStream и далее используя в TClientSocket метод SendStream(вроде так называется) пересылаешь поток  

Это сообщение отредактировал(а) Тьма - 7.5.2006, 22:28


--------------------
Vir magni ingenii                 
PM MAIL ICQ   Вверх
Spiker13
Дата 7.5.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 26.4.2006

Репутация: нет
Всего: нет



А возможно ли с примером, А? smile  
PM MAIL   Вверх
Sunr1se
Дата 8.5.2006, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 1.5.2006

Репутация: нет
Всего: 13



Отправить поток очень просто:
Код

ClientSocket1.Socket.SendStream(SoundStream);

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

procedure TForm1.Button1Click(Sender: TObject);
begin
  with MediaPlayer do
  begin
    FileName := 'C:\test.wav';
    Open;
    Wait := False;
    StartRecording;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var SoundStream: TStream;
begin
  with TMediaPlayer do
  begin
    Stop;
    FileName := 'C:\sound.wav';
    Save;
    Close;
  end;
SoundStream := TFileStream.Create(TMediaPlayer.FileName, fmOpenRead);
ClientSocket1.Socket.SendStream(SoundStream);
SoundStream.Free;
end;


И еще надо объявить глобальную переменную MediaPlayer типа TMediaPlayer.
P.S. На работоспособность я этот код особо не тестировал smile 
--------------------
IRC-канал Винграда 
PM MAIL ICQ   Вверх
Spiker13
Дата 8.5.2006, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 26.4.2006

Репутация: нет
Всего: нет



Спасибо за советик. smile  
PM MAIL   Вверх
Mechanic
Дата 9.5.2006, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.5.2006
Где: Kharkov, Ukraine

Репутация: нет
Всего: 7



Кста, в DRKB, в статье "Низкоуровневые процедуры обработки звука" есть модуль "RECUNIT", в котором запись идет не в файл но в буфер.
Цитата

Код

uses 

  Windows, MMSystem, SysUtils, MSACM; 

{  Ниже определен класс TWaveRecorder для обслуживания входа звуковой    } 
{  карты. Ожидается, что новый класс будет производным от TWaveRecorder  } 
{  и перекроет TWaveRecorder.ProcessBuffer. После начала записи данная   } 
{  процедура вызывается каждый раз при наличии в буфере аудио-данных.    } 
 
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are..  ©Mch  
PM   Вверх
ZaasRanec
  Дата 5.3.2008, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.2.2008

Репутация: нет
Всего: нет



Я чесно говоря, так и не понял КУДА, КАК и в КАКОМ ВИДЕ передаетца звук через TWaveRecorder  smile 
Хелп, плиз...  smile 
PM MAIL   Вверх
elestrago
Дата 5.3.2008, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 23.8.2007
Где: runet

Репутация: 1
Всего: 3



передается стрим на серверную часть программы!!

принятие стрима реализуется примерно вот так кидаеш на форму ТServerSocket

затем на событие сервера он клиент рид кидаешь код

Код

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
S1:string;
SoundStr:TFileStream;
begin
S1:=Socket.ReceiveText;
SoundStr:=TFileStream.Create('C:\1.waw', fmOpenRead);
SoundStr.Write(S1[1], length(S1));
end;


это делается примерно вот так код кривой писал в полу сосном состоянии smile если че доделай! 

ах да ну и собствено просто потом воспроизводишь файл smile хотя если помудрить то можно сразу и поток воспроизводить без сохранения файла типа сразу попытася S1 воспроизвести без
Код

SoundStr:=TFileStream.Create('C:\1.waw', fmOpenRead);
SoundStr.Write(S1[1], length(S1));

smile хотя не знаю прокатит ли такое smile
--------------------
PM MAIL ICQ   Вверх
ZaasRanec
Дата 11.3.2008, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.2.2008

Репутация: нет
Всего: нет



я понял, что стрим нуна передавать через сокеты, но где сам этот стрим? проблема не в передаче по сети, а в том, что я не смог найти поток, в который передаетца записаный звук с самого контрола... как переслать стрим по сети я сам сделать смогу в принципе сварганить...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.