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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2010, 23:42   #41
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
procedure Tipt.nmDataReceived(Sender: TComponent; NumberBytes: integer;
  FromIP: string; Port: integer);
var 
  k: tmemorystream;
  p: pointer;
begin
 try
  k:= Tmemorystream.Create; k.Clear;
  nm.ReadStream(k);
  acmout1.Play(k.memory, k.size);

  finally
   k.Clear;
   k.Free
  end
end;
Код:
procedure TACMOut.Play(Buffer:pointer; Size: Integer);
var
  TempHeader                  : PWaveHdr;
  Data                        : Pointer;

  procedure PlayHeader(Header : PWaveHDR);
  begin
    WaveOutPrepareHeader(FWaveOutHandle,Header,SizeOf(TWaveHDR));
    WaveOutWrite(FWaveOutHandle, Header, SizeOf(TWaveHDR));
  end;

begin
  if Size = 0 then exit;
  GetMem(TempHeader, SizeOf(TWaveHDR));
  GetMem(Data, Size);
  Move(Buffer^,Data^,Size);
  with TempHeader^ do begin
    lpData := data;
    dwBufferLength := Size;
    dwBytesRecorded :=0; 
    dwUser := 0;
    dwFlags := 0;
    dwLoops := 1;
  end;

  {вот тут должен стоять обработчик воспроизведения пакетов, которые мы не успели воспроизвести}

  PlayHeader(TempHeader);
end;
все предложенные мной способы, это один и тот-же способ и он прекрасно работает >>> VoIP шлюз
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 11.04.2010, 02:34   #42
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Ошибка какая-то появляется: Stream write error... Это из-за отсутствия обработчика?
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 12.04.2010, 12:21   #43
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Код:
procedure TForm1.Play(Buffer:pointer; Size: Integer);
var
  hdr                  : PWaveHdr;
  Data                        : Pointer;

  procedure PlayHeader(Header : PWaveHDR);
  begin
    WaveOutPrepareHeader(WaveOut,Header,SizeOf(TWaveHDR));
    WaveOutWrite(WaveOut, Header, SizeOf(TWaveHDR));
  end;

begin
  if Size = 0 then exit;
  GetMem(hdr, SizeOf(TWaveHDR));
  GetMem(Data, Size);
  Move(Buffer^,Data^,Size);
If hdr=@WaveOut then
begin
with WaveHdrOut2 do
begin
lpdata:=data;
dwBufferLength:=Size;
dwBytesRecorded :=0;
dwUser := 1;
dwFlags := 0;
dwLoops := 1;
end;
hdr:=@WaveHdrOut2;
end
else
begin
with WaveHdrOut do
begin
lpdata:=data;
dwBufferLength:=Size;
dwBytesRecorded :=0;
dwUser := 0;
dwFlags := 0;
dwLoops := 1;
end;
hdr:=@WaveHdrOut;
end;
  PlayHeader(hdr);
end;
---------------------
Код:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
begin
Form1.Play(Adata,Adata.Size);
end;
Посмотрите пожалуйста, где тут ошибка? В колонках шуршание с переодичностью, равной размеру буффера. Мне больше не у кого спросить, а решить до конца надо, нельзя осталять. Может мне исходники выложить?
Код:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
Var
k:TMemoryStream;
begin
k:= Tmemorystream.Create; k.Clear;
k.write(Adata,adata.Size);
Form1.Play(k.memory,k.Size);
k.Clear;
k.Free;
end;
Чуть-чуть исправил код, но теперь звук - не короткое шипение, а длинное... в чем дело не могу понять!!!
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 12.04.2010 в 12:36.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 12.04.2010, 12:52   #44
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...просмотри еще раз генофонд asmout/
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 14.04.2010, 17:08   #45
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

raxp, спасибо большущее за помощь с кодом и за наводящие ответы С меня причетается за такой долгий и нудный "допрос". Генофонд acm "зарешал". Подробно до мелочей изучил его, на его подобии сворганил пока ещё простейший код воспроизведения с восьмью буфферами Спасибо ещё раз. У меня есть идея, написать по этой теме статью, так как я знаю, что многие интересуются вводом выводом через wavein/out, а лично я порядочных объяснений (подчеркиваю! до того, как начал работать с вами и содержимым acm) не нашел или не понял, а если и понял, то там было не совсем то, что нужно. Вобщем... спасибо ещё раз!
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 14.04.2010, 17:12   #46
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

ммм... советую сделать динамический буфер, по типу List и в нем добавлять опоздавшие пакеты ...по крайней мере у меня при битрейте 11кбит/с и кодеке GSM6.11 кол-во пакетов для воспроизведения было от 5 до 20 в зависимости от линии связи... самая большая величина - это через utel-вскую сеть/
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 14.04.2010, 17:16   #47
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Да я тоже об этом задумался... Надо будет заняться доработкой... Но это позже уже. А то совсем CompMan'ом стал
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 29.09.2010, 08:16   #48
Jacobson
Пользователь
 
Аватар для Jacobson
 
Регистрация: 26.01.2010
Сообщений: 47
По умолчанию

А, как собственно предоставить выбор источников ввода для записи? То есть я хочу спросить, как сделать список аудио устройств на пример звуковая карта, список линий на пример микрофон или CD-Плеер. Ну и список допустимых форматов для записи.
Было бы очень интересно узнать!
Всё не то чем кажется...

Последний раз редактировалось Jacobson; 29.09.2010 в 08:24.
Jacobson вне форума Ответить с цитированием
Старый 14.10.2010, 22:06   #49
h2698028
Заблокирован
 
Регистрация: 03.08.2010
Сообщений: 1
По умолчанию

  作者:徐冰

  【山东行情】 徕卡D-LUX 4(资料 报价 图片 论坛)是一款拥有千万像素成像才能、24mm广角防抖镜头的便携型数码相机 ,其外观设计有点老式手动胶片机的复古的味道,非常抢眼。目前该相机在经销 商“青岛摄苑网”的最新报价为7400元(含税),Tory Burch for sale,感兴致的朋友不妨关注一下。

点击图片查看徕卡D-LUX 4具体材料

  徕卡D-LUX 4与松LX3数码相机极为接近。从外观上看,D-LUX 4相比前作D-LUX 3来说转变并不是很大。尺寸为108.7x59.5x27.1mm、重量2 65克。它的LCD屏升级到了3英寸46万像素,信任在取景后果上会有所进 步,同时,为了保证专业玩家的需求,松下特殊筹备了外接的外部 光学观景器,Discount Tory Burch Shoes,以及闪光灯热靴插座。

点击图片查看徕卡D-LUX 4具体材料

  D-LUX 4采取最新开发的1/1.63英寸1000万像素CCD最大辨别率为3648x2736;据官方 说法在饱和度上晋升了35%,连同一起在ISO感光度上供给了较传统高40 %的敏锐性。镜头部分的改良较大:D-LUX 4配置了德国徕卡的DC VARIO-SUMMICRON 2.5x光学变焦镜头,搭配OIS影像防手振稳固体系。物理实际焦距5 .1-12.8mm,换算传统焦距为24-60mm、光圈范畴f/2.0(广角)-f/2.8(看远)。不管是从焦距还是最大光圈上都有了相当大的晋升。新镜头构 成由8枚6群与4片非球面镜片组成,产品供给了高解析度和最小的变形和色差 表示。D-LUX 4也具备了人脸辨认和目的追踪等多区域主动对焦体系。ISO感光100到3 200,高敏锐模式下可达ISO 6400。


点击图片查看徕卡D-LUX 4详细资料


点击图片查看徕卡D-LUX 4具体材料

  编纂点评:徕卡 D-LUX4外观设计中规中矩,有点老式手动胶片机的复古的味道。与前代产 品D-LUX3相比,Tory Burch Handbags,D液晶屏升级到3.0英寸46万像素,取景后果更加优胜。镜头方面配备德 国徕卡DC VARIO-SUMMICRON 2.5倍光学变焦镜头,最高快门速度1/2000秒,OIS防抖体系,F2.0大光圈和24mm广角,不管是在焦距 还是光圈方面都有了很大晋升。徕卡品德的成像毋庸置疑,摄影发热又快斟酌一 下吧。

[参考价钱] 7400元(含税)
[接洽方法]
[接洽地址] 山东省青岛市市南区天津路18号-乙
h2698028 вне форума Ответить с цитированием
Старый 27.11.2010, 16:09   #50
AlxUT4
Новичок
Джуниор
 
Регистрация: 27.11.2010
Сообщений: 1
По умолчанию Передача звука по сети. Пример из журнала «ПРОграммист» №2

Тоже заинтересовала меня задача создания подобия голосового сетевого чата. Попробовал пример из журнала «ПРОграммист» №2. Но пример как надо не заработал: с передачей нормально, а вот с буферизация пакетов на приёмной стороне не работает. Там даже по листингу видно, что что-то не дописано и цикличного накопления не будет происходить в принципе, хотя идея правильная и понятная. Передача работает. Приём работает но без всякой идеи буферизации, т.е. принял буфер и сразу его выбрасывает на проигрывание. Звук при этом прерывается на время примерно равное задержки передачи одного буфера по сети.
Может я чего-то не допонял, но, например, вот тут в коде:

Код:
// обнуляем флаги буфера/ов в цикле
FHeaders[a].dwFlags:= 0;
// уже знакомая нам структура
With FHeaders[a] do begin
dwBufferLength := bufsize;
dwBytesRecorded:= 0;
dwUser := 0;
dwLoops := 1;
// А вот здесь мы присваиваем флагу только что
// воспроизведенного буфера значение, которое отвечает за то
// что буфер установлен в очередь, т.е. мы как бы
// циклично используем эти 8 буферов
dwFlags:= WHDR_INQUEUE
зачем делать FHeaders[a].dwFlags:= 0 и потом ему присваивать WHDR_INQUEUE ниже в with ? Где присваивается не нулевое значение полю dwUser ?

По незадействованным, но объявленным, переменным WaveHdrOut, WaveHdrOut2 мне понятно, что автор сначала делал жёстко два приёмных буфера, но потом перешёл на массив.
Безусловно Александр Владимирович (ImmortalAlexSan) сделал отличную работу для таких как я, которые только начинают осваивать тему IPsound. За это ему большое спасибо.
Вопрос. Если существует сырой, но рабочий вариант, алгоритма приёма с динамическим буфером (их количеством) хотелось бы глянуть и протестировать для своих задач.
AlxUT4 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WEB - программист. Временный сотрудник - работа дому. Julia G Фриланс 2 23.03.2010 21:45
Как найти временный файл bakabul JavaScript, Ajax 1 01.11.2008 09:44
Временный проект по DirectX (Москва) _HR Фриланс 1 19.02.2008 13:14
Запись в буфер Delphi & Asm SteelRat Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 27.02.2007 22:49