Форум: "Сети";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизПередача аудио по сети Найти похожие ветки
← →
S@shka (2003-11-18 15:30) [0]Необходимо передавать аудио по сети.
ТО есть
говорим в микрофон на одном компе слышим на другом.
Если кто-что может посоветовать.
Буду рад.
← →
Карелин Артем (2003-11-18 15:54) [1]Совет такой: передавать звук исключительно по протоколу UDP.
← →
Almax (2003-11-18 16:06) [2]Ваще, был такой вопрос уже, посмотри где-то в форуме. Там вроде немало ответов было.
Успехов!!!
← →
Fredericco (2003-11-18 18:36) [3]Самый первый совет:
Начни делать сам, например с оцифровки звука. Столкнешся с проблемами - тогада пость.
← →
S@shka (2003-11-18 18:42) [4]Гы :)
очень дельные советы. Особенно послений.
← →
Fredericco (2003-11-18 19:50) [5]Дельнее?
Оцифровка, вывод звука:
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
← →
DelphiN! (2003-11-18 20:05) [6]>Fredericco Меня тоже страшно интересует этот вопрос, не могли бы вы привести маленький примерчик по использованию выше приведенных вами функций(если не трудно), просто самому сейчас нет времени разбираться
← →
Fredericco (2003-11-18 20:24) [7]Оцифровка:
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
//
← →
Fredericco (2003-11-18 20:29) [8]Отправка по сети от сервера клиенту:
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 вернула Ложь, надо сохранить то, что пытались отправить, приостановить любую отправку этому клиенту, до тех пор пока флаг не будет сброшен.
← →
S@shka (2003-11-18 23:01) [9]To Fredirico BIG THANKS
Я сегодня перерыл MSDN и по тихоньку
от
mciSendString
дошел приблизительно до того же.
Правда для сетки исп-льзовал UDP-компоненты.
Еще раз огромное спасибо.
Если не секрет откуда исходниги и есть ли инфа по данному вопросу или это все из MSD...
← →
S@shka (2003-11-19 10:06) [10]To FREDERICO
Не мог бы расшифровать комментарии в WNDProc ()
А то не читаемы.
Большое спасибо
← →
Fredericco (2003-11-19 11:14) [11]Там три нечитаемых комментария:
1) Начало оцифровки
2) Завершение оцифровки
3) В массиве Bufi1 лежит оцифрованный звук.
> Если не секрет откуда исходниги и есть ли инфа по данному
> вопросу или это все из MSD
Источники: F1, книги, голова, инет, Digitman © .
← →
S@shka (2003-11-19 12:34) [12]Чтобы не раздувать форум написал по почте.
Тема закрыта
← →
DelphiN! (2003-11-19 13:33) [13]>S@shka ©
Эгоист
← →
Fredericco (2003-11-19 13:34) [14]2 DelphiN! © (19.11.03 13:33) [13]
А чего в примере непонятного?
← →
DelphiN! (2003-11-19 21:21) [15]Fredericco ©> При InitWaveIn(true) у меня выполняется: if (openError<>0)or(PrepareError<>0)or(BufferAddError<>0)or(StartError<>0)then, тоесть ошибка!
← →
Fredericco (2003-11-20 12:24) [16]DelphiN! © (19.11.03 21:21) [15]
Сам по себе микрофон работает?
← →
Fredericco (2003-11-20 12:25) [17]Да, и приведи коды ошибок.
← →
Digitman (2003-11-20 12:36) [18]
> Fredericco
> Сам по себе микрофон работает?
да бог с тобой)
микрофон-то причем здесь ?)
его можно вообще выкинуть в мусор, AЦП-то встроенному без разницы источник аудиосигнала, будь то микрофон или еще что-то ... сигнал АЦП берет с текущего подключенного канала микшера вход.сигналов, каковым может быть и Mic-канал и LineIn-канал и любой другой... даже если к карте не подлючено ничего ко входу, АЦП сделает свое дело, если алгоритм старта АЦП правильно сработал
> DelphiN!
ты код для чего получил ?
для анализа правильной программной последовательности работы с АЦП, а не для бездумного сдирания с последующим забрасыванием помогающего тебе дурацкими вопросами)
← →
Fredericco (2003-11-20 12:48) [19]2 Digitman © (20.11.03 12:36) [18]
По дурости спросил )))
Я тока из института приехал... а у нас сегодня к нулевой паре было ...
← →
Digitman (2003-11-20 13:13) [20]
> Fredericco
> а у нас сегодня к нулевой паре было
в смысле, "а у нас с собой было уже к нулевой паре" ?
))
← →
Fredericco (2003-11-20 13:23) [21]В смысле: сонный я, сижу носом клюю, жду когда проснусь :-)))))
← →
S@shka (2003-11-24 11:51) [22]Народ а по делу можно получить ответ на вопрос?
Без излишней демагогии :)
Кстати я нашел исходник тот что прислал.
У меня вот какой вопрос.
Звук оцифровывается на
44100
8 bit
MONO канал
Но по udp максимум кидается по 1500 байт. Соответственно
Размер буфера 1500 байт.
А вот как бы на стороне приемника хитро склеивать чтобы повысить качество???
← →
Polevi (2003-11-24 12:37) [23]хитрым клеем
← →
DelphiN! (2003-11-24 21:52) [24]Народ plzzz, не мог бы кто мне на мыло скинуть исходник работающего примера, для общения через микрофон по сети. Очень очень нужно, ото до меня чего-то не доходит в чем у меня ошибка.
Буду очень признателен. delphin1986@yandex.ru
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.007 c