Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.008 c
9-93319
Dead Moroz
2003-07-01 03:42
2004.01.29
Движок для текстового 3D_Shooter-а


7-93717
Михаил
2003-11-10 16:42
2004.01.29
Кто-нибудь знает как в ХР можно нажимать программно кнопки?


7-93703
Nix
2003-11-12 23:12
2004.01.29
Ring 0. Что это


3-93358
_Yanchik
2004-01-02 21:50
2004.01.29
Date, Now SQL server


4-93731
Kinder
2003-11-21 23:22
2004.01.29
Апплеты панели управления





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский