![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| NoName |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.2.2003 Репутация: нет Всего: нет |
Нужно 2 реализации:
1) Как записать звук с линейного выхода в файл? 2) Как прослушать звук с линейного входа на удаленном компьютере и записать на клиенте? |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 1 Всего: 207 |
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| NoName |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.2.2003 Репутация: нет Всего: нет |
Это понятно, а как сделать без использования MediaPlayer?
|
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: нет Всего: 48 |
unit receiver;
interface uses mmsystem, classes; const samp_per_sec = 44100; samp_cnt = samp_per_sec div 5; buf_len = samp_cnt * 2; type PSample16M = ^TSample16M; TSample16M = SmallInt; PArrayOfSample = ^TArrayOfSample; TArrayOfSample = array[1..samp_cnt] of TSample16M; TReceiver = class private hwi: Integer; fmt: tWAVEFORMATEX; whdr1: WAVEHDR; buf1: TArrayOfSample; whdr2: WAVEHDR; buf2: TArrayOfSample; FStoped: Boolean; FOnChange: TNotifyEvent; procedure SetStoped(const Value: Boolean); public Peak: Integer; Buffer: PArrayOfSample; destructor Destroy; override; procedure Start; procedure Stop; property Stoped: Boolean read FStoped write SetStoped; property OnChange: TNotifyEvent read FOnChange write FOnChange; end; var rec: TReceiver; implementation procedure waveInProc(const hwi, uMsg, dwInstance: Integer; var hdr: WAVEHDR; const dwP2: Integer); stdcall; const divs = samp_cnt div 100; var i, p: Integer; buf: PArrayOfSample; begin if rec.Stoped then Exit; case uMsg of WIM_OPEN: begin end; WIM_DATA: begin rec.Buffer := PArrayOfSample(hdr.lpData); buf := PArrayOfSample(hdr.lpData); p := 0; for i := 0 to samp_cnt div divs do p := p + Abs(buf[i * divs]); rec.Peak := p div (samp_cnt div divs); if Assigned(rec.FOnChange) then rec.FOnChange(rec); waveInUnprepareHeader(hwi, @hdr, SizeOf(WAVEHDR)); waveInPrepareHeader(hwi, @hdr, SizeOf(WAVEHDR)); waveInAddBuffer(hwi, @hdr, SizeOf(WAVEHDR)); end; WIM_CLOSE: begin end; end; end; { TReceiver } destructor TReceiver.Destroy; begin Stoped := True; inherited; end; procedure TReceiver.SetStoped(const Value: Boolean); begin FStoped := Value; if Value then begin waveInStop(hwi); waveInUnprepareHeader(hwi, @whdr1, SizeOf(WAVEHDR)); waveInUnprepareHeader(hwi, @whdr2, SizeOf(WAVEHDR)); waveInReset(hwi); waveInClose(hwi); end else begin with fmt do begin wFormatTag := WAVE_FORMAT_PCM; nChannels := 1; nSamplesPerSec := samp_per_sec; nBlockAlign := 2; nAvgBytesPerSec := nSamplesPerSec * nBlockAlign; wBitsPerSample := 16; cbSize := 0; end; waveInOpen(@hwi, WAVE_MAPPER, @fmt, Cardinal(@waveInProc), hInstance, CALLBACK_FUNCTION); with whdr1 do begin lpData := @buf1; dwBufferLength := buf_len; dwBytesRecorded := 0; dwUser := 0; dwFlags := 0; dwLoops := 0; lpNext := nil; reserved := 0; end; waveInPrepareHeader(hwi, @whdr1, SizeOf(WAVEHDR)); waveInAddBuffer(hwi, @whdr1, SizeOf(WAVEHDR)); with whdr2 do begin lpData := @buf2; dwBufferLength := buf_len; dwBytesRecorded := 0; dwUser := 0; dwFlags := 0; dwLoops := 0; lpNext := nil; reserved := 0; end; waveInPrepareHeader(hwi, @whdr2, SizeOf(WAVEHDR)); waveInAddBuffer(hwi, @whdr2, SizeOf(WAVEHDR)); waveInStart(hwi); end; end; procedure TReceiver.Start; begin Stoped := False; end; procedure TReceiver.Stop; begin Stoped := True; end; initialization rec := TReceiver.Create; finalization rec.Free; end. вот. Вся работа осуществляется через глобальную переменную rec . Возможно это не лучшая реализация с точки зрения ООП, но работает 2 Vit: засунь это в ФАК, плиз, если это не очень убого -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| NoName |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.2.2003 Репутация: нет Всего: нет |
Тогда еще два вопроса раз зашевелились люди ;) как передать звук по локалке и на клиенте записать? и второй вопрос: как писать стерео сигнал в разные файлы по каналам?
P.S. Думаю что на этот вопрос тут уже не ответят... но всякое может быть |
|||
|
||||
| NoName |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.2.2003 Репутация: нет Всего: нет |
И опять же, пример что ты кинул мне давал еще Озеров, этот пример есть в его сборнике faq, в этом примере отсутствует сохранение потока в файл, а это опять же очень интересно, я думаю
|
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: нет Всего: 48 |
в чем проблема я понять не могу?! записывать звук можешь? формат *.wav файлов знаешь? что такое сокет знаешь? или ты хочеш что б я те готовую прогу выложил?! если так то скока заплатиш
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| NoName |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.2.2003 Репутация: нет Всего: нет |
Да уж, это называется форум. Если говоришь об оплате то нефиг писать тут, я так понимаю сама концепция форума подразумевает помощь в ответе на вопрос, а не продажа какого-то кусочка программы выдранной откуда-то. Все с тобой ясно
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Форум подразумевает помощь в критических или непонятных ситуациях. Тебе дают направление - а дальше уже сам двигаешься. А ты хочешь по сути полностью готовое приложение. Если ты в целях обучения это делаешь - то пойми, что здесь часто появляются люди для которых программирование - это работа. И они не могут тратить много своего времени. Им просто надо кормить свои семьи, родителей. А если тебе по работе надо - так это ТВОЯ работа и старайся ее делать все-таки сам. Целиком такую программу написать - это достаточно долгий процесс (Если пример занимает больше 30 минут, то это уже долго). Может нам в помощь тебе и за твоей девушкой ухаживать ? Без обид. Просто хотелось донести основную идею. |
|||
|
||||
| NoName |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.2.2003 Репутация: нет Всего: нет |
Идея понятно, теперь на все вопросы буду отвечать, а сколько заплатишь. Без обид
|
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 1 Всего: 207 |
Модератор: давайте прекратим споры, тем более в этом направлении. На форуме действительно отвечают на конкретно заданный вопрос, а не на просьбу написать программу целиком. По теме было приведено 2 ответа по существу. Вопрос к автору топика - они достаточно исчерпывающие или требуются объяснения, дополнения или другие решения?
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| NoName |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.2.2003 Репутация: нет Всего: нет |
Уже ничего не требуется, добрые люди помогли
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |