![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача аудио по сети [D5, D6, Win95/98, Win2k]
S@shka © (2003-11-18 15:30:00)
Необходимо передавать аудио по сети.
ТО есть
говорим в микрофон на одном компе слышим на другом.
Если кто-что может посоветовать.
Буду рад.
DelphiN! (2003-11-24 21:52:00) [1]
Народ plzzz, не мог бы кто мне на мыло скинуть исходник работающего примера, для общения через микрофон по сети. Очень очень нужно, ото до меня чего-то не доходит в чем у меня ошибка.
Буду очень признателен. delphin1986@yandex.ru
Polevi (2003-11-24 12:37:00) [2]
хитрым клеем
S@shka (2003-11-24 11:51:00) [3]
Народ а по делу можно получить ответ на вопрос?
Без излишней демагогии :)
Кстати я нашел исходник тот что прислал.
У меня вот какой вопрос.
Звук оцифровывается на
44100
8 bit
MONO канал
Но по udp максимум кидается по 1500 байт. Соответственно
Размер буфера 1500 байт.
А вот как бы на стороне приемника хитро склеивать чтобы повысить качество???
Fredericco (2003-11-20 13:23:00) [4]
В смысле: сонный я, сижу носом клюю, жду когда проснусь :-)))))
Digitman (2003-11-20 13:13:00) [5]
> Fredericco
> а у нас сегодня к нулевой паре было
в смысле, "а у нас с собой было уже к нулевой паре" ?
))
Fredericco (2003-11-20 12:48:00) [6]
2 Digitman © (20.11.03 12:36) [18]
По дурости спросил )))
Я тока из института приехал... а у нас сегодня к нулевой паре было ...
Digitman (2003-11-20 12:36:00) [7]
> Fredericco
> Сам по себе микрофон работает?
да бог с тобой)
микрофон-то причем здесь ?)
его можно вообще выкинуть в мусор, AЦП-то встроенному без разницы источник аудиосигнала, будь то микрофон или еще что-то ... сигнал АЦП берет с текущего подключенного канала микшера вход.сигналов, каковым может быть и Mic-канал и LineIn-канал и любой другой... даже если к карте не подлючено ничего ко входу, АЦП сделает свое дело, если алгоритм старта АЦП правильно сработал
> DelphiN!
ты код для чего получил ?
для анализа правильной программной последовательности работы с АЦП, а не для бездумного сдирания с последующим забрасыванием помогающего тебе дурацкими вопросами)
Fredericco (2003-11-20 12:25:00) [8]
Да, и приведи коды ошибок.
Fredericco (2003-11-20 12:24:00) [9]
DelphiN! © (19.11.03 21:21) [15]
Сам по себе микрофон работает?
DelphiN! (2003-11-19 21:21:00) [10]
Fredericco ©> При InitWaveIn(true) у меня выполняется: if (openError<>0)or(PrepareError<>0)or(BufferAddError<>0)or(StartError<>0)then, тоесть ошибка!
Fredericco (2003-11-19 13:34:00) [11]
2 DelphiN! © (19.11.03 13:33) [13]
А чего в примере непонятного?
DelphiN! (2003-11-19 13:33:00) [12]
>S@shka ©
Эгоист
S@shka (2003-11-19 12:34:00) [13]
Чтобы не раздувать форум написал по почте.
Тема закрыта
Fredericco (2003-11-19 11:14:00) [14]
Там три нечитаемых комментария:
1) Начало оцифровки
2) Завершение оцифровки
3) В массиве Bufi1 лежит оцифрованный звук.
> Если не секрет откуда исходниги и есть ли инфа по данному
> вопросу или это все из MSD
Источники: F1, книги, голова, инет, Digitman © .
S@shka (2003-11-19 10:06:00) [15]
To FREDERICO
Не мог бы расшифровать комментарии в WNDProc ()
А то не читаемы.
Большое спасибо
S@shka (2003-11-18 23:01:00) [16]
To Fredirico BIG THANKS
Я сегодня перерыл MSDN и по тихоньку
от
mciSendString
дошел приблизительно до того же.
Правда для сетки исп-льзовал UDP-компоненты.
Еще раз огромное спасибо.
Если не секрет откуда исходниги и есть ли инфа по данному вопросу или это все из MSD...
Fredericco (2003-11-18 20:29:00) [17]
Отправка по сети от сервера клиенту:
function TSendToSocketTh.SendTextToHandleEx(sHandle:integer;Text:string):boolean;
var
i:integer;
s2:Pstring;
s:string;
b:PChar;
LReal,LNeed:integer;
begin
try
Result:=False;
New(s2);
s:=Text;
for i:=0 to Form1.ssDrv.Socket.ActiveConnections-1 do begin
if Form1.ssDrv.Socket.Connections[i].SocketHandle=sHandle then begin
LReal:=Form1.ssDrv.Socket.Connections[i].SendBuf(Pointer(s)^,Length(s));
if LReal>-1 then begin
Delete(s,1,LReal);
LNeed:=Length(s);
while LNeed>0 do begin
LReal:=Form1.ssDrv.Socket.Connections[i].SendBuf(Pointer(s)^,Length(s));
Delete(s,1,LReal);
LNeed:=Length(s);
end;
Result:=True;
Break;
end Else begin
Client[i].WaitingOnWrite:=True;
Result:=False;
Break;
end;
end;
end;
s:="";
s2^:="";
SetLength(s,0);
SetLength(s2^,0);
Dispose(s2);
except
Result:=False;
end;
end;
Флаг Client[i].WaitingOnWrite сбрасывается для каждого клиента отдельно в событии OnClientWrite. Если функция SendTextToHandleEx вернула Ложь, надо сохранить то, что пытались отправить, приостановить любую отправку этому клиенту, до тех пор пока флаг не будет сброшен.
Fredericco (2003-11-18 20:24:00) [18]
Оцифровка:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes,graphics, Forms,
Dialogs,mmsystem, StdCtrls,shellapi, Controls;
type
TArrayBuf = array[0..1023]of byte;//1 KByte
PArrayBuf = ^TArrayBuf;
TForm1 = class(TForm)
private
{ Private declarations }
public
WaveFormat:TWaveFormatEx;
WaveIn:PHWaveIn;
IsOn:boolean;
Procedure WNDPROC(var msg:TMessage);override;
Procedure InitWaveIn(MyBool:boolean);
{ Public declarations }
end;
var
Form1: TForm1;
Bufi1:Array[0..1023] of double;
implementation
{$R *.dfm}
Procedure Tform1.WNDPROC(var msg:TMessage);
var
Hdr:PWaveHdr;
i,j,toI,fromI,k,p:integer;
// r:real;
begin
INHERITED;
case msg.Msg of
MM_WIM_OPEN:
begin
//
DelphiN! (2003-11-18 20:05:00) [19]
>Fredericco Меня тоже страшно интересует этот вопрос, не могли бы вы привести маленький примерчик по использованию выше приведенных вами функций(если не трудно), просто самому сейчас нет времени разбираться
Fredericco (2003-11-18 19:50:00) [20]
Дельнее?
Оцифровка, вывод звука:
function waveInAddBuffer; external mmsyst name "waveInAddBuffer";
function waveInClose; external mmsyst name "waveInClose";
function waveInGetDevCapsA; external mmsyst name "waveInGetDevCapsA";
function waveInGetDevCapsW; external mmsyst name "waveInGetDevCapsW";
function waveInGetDevCaps; external mmsyst name "waveInGetDevCapsA";
function waveInGetErrorTextA; external mmsyst name "waveInGetErrorTextA";
function waveInGetErrorTextW; external mmsyst name "waveInGetErrorTextW";
function waveInGetErrorText; external mmsyst name "waveInGetErrorTextA";
function waveInGetID; external mmsyst name "waveInGetID";
function waveInGetNumDevs; external mmsyst name "waveInGetNumDevs";
function waveInGetPosition; external mmsyst name "waveInGetPosition";
function waveInMessage; external mmsyst name "waveInMessage";
function waveInOpen; external mmsyst name "waveInOpen";
function waveInPrepareHeader; external mmsyst name "waveInPrepareHeader";
function waveInReset; external mmsyst name "waveInReset";
function waveInStart; external mmsyst name "waveInStart";
function waveInStop; external mmsyst name "waveInStop";
function waveInUnprepareHeader; external mmsyst name "waveInUnprepareHeader";
function waveOutBreakLoop; external mmsyst name "waveOutBreakLoop";
function waveOutClose; external mmsyst name "waveOutClose";
function waveOutGetDevCapsA; external mmsyst name "waveOutGetDevCapsA";
function waveOutGetDevCapsW; external mmsyst name "waveOutGetDevCapsW";
function waveOutGetDevCaps; external mmsyst name "waveOutGetDevCapsA";
function waveOutGetErrorTextA; external mmsyst name "waveOutGetErrorTextA";
function waveOutGetErrorTextW; external mmsyst name "waveOutGetErrorTextW";
function waveOutGetErrorText; external mmsyst name "waveOutGetErrorTextA";
function waveOutGetID; external mmsyst name "waveOutGetID";
function waveOutGetNumDevs; external mmsyst name "waveOutGetNumDevs";
function waveOutGetPitch; external mmsyst name "waveOutGetPitch";
function waveOutGetPlaybackRate; external mmsyst name "waveOutGetPlaybackRate";
function waveOutGetPosition; external mmsyst name "waveOutGetPosition";
function waveOutGetVolume; external mmsyst name "waveOutGetVolume";
function waveOutMessage; external mmsyst name "waveOutMessage";
function waveOutOpen; external mmsyst name "waveOutOpen";
function waveOutPause; external mmsyst name "waveOutPause";
function waveOutPrepareHeader; external mmsyst name "waveOutPrepareHeader";
function waveOutReset; external mmsyst name "waveOutReset";
function waveOutRestart; external mmsyst name "waveOutRestart";
function waveOutSetPitch; external mmsyst name "waveOutSetPitch";
function waveOutSetPlaybackRate; external mmsyst name "waveOutSetPlaybackRate";
function waveOutSetVolume; external mmsyst name "waveOutSetVolume";
function waveOutUnprepareHeader; external mmsyst name "waveOutUnprepareHeader";
function waveOutWrite; external mmsyst name "waveOutWrite";
Передача по сети:
TServerSocket
TClientSocket