-
каким самым простым способом можна снять звук с микрофона и сразу же его воспроизводить
-
Два проводка, соединяющие микрофон с колонками, - куда уж проще)
-
> самым простым способом
имеется ввиду програмно! с помощью Delphi! )
-
> имеется ввиду програмно
Для этого и программу писать не надо - все это настраивается в виндовом микшере двумя кликами мыши.
-
> Сергей М. © (07.11.07 16:38) [3] > > > > имеется ввиду програмно > > > Для этого и программу писать не надо - все это настраивается > в виндовом микшере двумя кликами мыши.
??????????????????????
-
Правда, такая возможность напрямую зависит от возможностей конкретного аудиочипсета
-
С помощью DirectSHow строите граф - на входе мкрофон, на выходе SoundDevice
-
с микрофона я снял, хоть криво но для начала неплохо и снова проблема, все что снимается с микрофона пуляем по UDP а вот как его там воспроизвести по получению, толком ничего не получается! никогда не приходилось со звуком играться, извините! намекните или ответом или ссылкой!
-
> как его там воспроизвести по получению, толком ничего не > получается
Показывай как пробовал ..
-
примерно так, хотя как он работает понял еще смутно) var
Evt:THandle;
Fmt:tWAVEFORMATEX;
Hdr:TWaveHdr;
WO:HWAVEOUT;
FS:TFileStream;
Data:Pointer;
Size,i:Integer;
ch:PChar;
begin
FS:=TFileStream.Create('data.txt',fmOpenRead);
Size:=FS.Size;
GetMem(Data,Size);
try
FS.ReadBuffer(Data^,Size);
FS.Free;
Evt:=CreateEvent(nil,False,False,nil);
ZeroMemory(@Fmt,SizeOf(Fmt));
ZeroMemory(@Hdr,SizeOf(Hdr));
Fmt.wFormatTag:=WAVE_FORMAT_PCM;
Fmt.nChannels:=1;
Fmt.nSamplesPerSec:=44100;
Fmt.nAvgBytesPerSec:=44100;
Fmt.wBitsPerSample:=16;
Fmt.nBlockAlign:=4;
Fmt.cbSize:=SizeOf(Fmt);
if waveOutOpen(@WO,0,@Fmt,Evt,0,CALLBACK_EVENT)<>MMSYSERR_NOERROR then Halt(1);
Hdr.lpData:=Data;
Hdr.dwBufferLength:=Size;
waveOutPrepareHeader(WO,@Hdr,SizeOf(Hdr));
ResetEvent(Evt);
waveOutWrite(WO,@Hdr,SizeOf(Hdr));
WaitForSingleObject(Evt,Infinite);
waveOutUnprepareHeader(WO,@Hdr,SizeOf(Hdr));
waveOutClose(WO);
CloseHandle(Evt);
finally
FreeMem(Data,Size);
end;
-
> zvukoff (09.11.07 10:49) [9]
И где в этом коде хоть какое-либо упоминание о UDP ?
-
> И где в этом коде хоть какое-либо упоминание о UDP ?
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); var .... begin Size:=AData.size; GetMem(Data,Size); try AData.ReadBuffer(Data^,Size); ............... ну и далее уже все было... подозреваю что все ето нужно вынести в отдельный поток
-
> zvukoff (09.11.07 11:13) [11]
Ты осознаешь, что UDP - протокол без гарантии доставки и без гарантии соблюдения исходного порядка отправляемых дейтаграмм в последовательности принимаемых ?
-
Зато он быстрый, а потеря скажем десяти из 44 уровней сигнала, которые замеряются на микрофоне каждую 1/1000 секунды, не сможет на слух очень уж сильно ухудшить качество.
-
> Dib@zol © (09.11.07 11:29) [13] > > Зато он быстрый, а потеря скажем десяти из 44 уровней сигнала, > которые замеряются на микрофоне каждую 1/1000 секунды, > не сможет на слух очень уж сильно ухудшить качество.
хотел тоже самое сказать, но уже нет сил) да даже если убить каждый второй байт, да даже из четырех три то все равно качество звука для голоса сносно)
> Сергей М. © (09.11.07 11:27) [12] > > > > zvukoff (09.11.07 11:13) [11] > > > Ты осознаешь, что UDP - протокол без гарантии доставки и > без гарантии соблюдения исходного порядка отправляемых дейтаграмм > в последовательности принимаемых ?
при чем протоколы в разделе MEDIA ????????????????????????
-
> при чем протоколы в разделе MEDIA ?
А я откуда знаю при чем они тут ?
Судя по содержимому файла и по коду обработчика UDPRead ты не используешь никакие медиапротоколы - гоняешь по сети никак не обработанные PCM-данные
-
-
> Сергей М. © (09.11.07 12:12) [16] > > > > zvukoff > > > Жми сюда > http://www.droopyeyes.com > > качай готовые компоненты и будь счастлив)
организовал в потоке, заработало и звук нормальный и протокол ненадежный и нет качества доставки и без сторонних компонентов, прикол да нет подсказать сразу звук в отдельный поток, так протокол какой, а негарантированная доставка, медиапротоколы, компоненты, код, про микшер и два проводка особенно мне понравилось) хотя все равно спасиба за потраченное время!
-
> организовал в потоке
Можно подумать, что изначально ты организовал всю эту петрушку не в потоке, а на Луне)
> звук в отдельный поток
Какая нафих разница, в каком потоке "звук" ?)
> прикол да
Угу.
Когда разведешь своего клиента и сервера по разным углам Тырнета, или когда поднагрузишь чем-нибудь свою ЛВС посерьезней - вот тогда и будет "прикол")
|