Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2015, 12:40   #11
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

У меня нормально работает. Выдает ошибку сразу? Я еще раз перепроверю у себя. Не хотел делать через буфер но наверное через него придется сделать. Попробуйте запустить программу через администратора возможно доступ к файлу ограничен и если вы сохраняете на диске C:\. Проверти путь сохранения у меня там D:\

Последний раз редактировалось Aliens_wolfs; 19.06.2015 в 12:45.
Aliens_wolfs вне форума Ответить с цитированием
Старый 22.06.2015, 12:44   #12
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Еще можно задержку записи сделать вот здесь должно помочь с ошибкой но у меня ее и так нет.

Код:
function RecordingCallback(hChan: HRECORD; buffer: Pointer; Size, user: DWord):
 boolean; stdcall;
 var
 pPos, Postime: integer;
begin

  //Пройденное время
  pPos:= BASS_ChannelGetPosition(hChan, 0);
     if (pPos > 0) then
  begin
    Postime := Trunc(BASS_ChannelBytes2Seconds(hChan, pPos));
    Form1.Caption := (Format(' %d:%.2d', [Postime div 60, Postime mod 60]));
  end;

//Вот здесь делаем задержку на 2 сек и запись но можно поставить свое время и объявите глобальной var TimeSave: Integer 
  if Postime  > TimeSave + 2 then
  begin
  TimeSave := Postime;
  SaveWav(hChan, 'D:\1111.wav', buffer, Size);
  end;

 //Воспроизводим звук
 BASS_StreamPutData(chanPlay, Buffer, Size);
 BASS_ChannelPlay(chanPlay, false);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TimeSave:= 0;
BASS_RecordInit(-1);
chanMic:=BASS_RecordStart(8000, 2, BASS_DEVICE_8BITS, @RecordingCallback, nil);
chanPlay:= BASS_StreamCreate(8000, 2, BASS_DEVICE_8BITS, STREAMPROC_PUSH, nil);
end;

Последний раз редактировалось Aliens_wolfs; 22.06.2015 в 13:03.
Aliens_wolfs вне форума Ответить с цитированием
Старый 23.06.2015, 22:31   #13
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Еще можно задержку записи сделать вот здесь должно помочь с ошибкой но у меня ее и так нет.
Подправил через TMemoryStream
Изменения для кода запись сразу в файл

Код:

Код:
function RecordingCallback(hChan: HRECORD; buffer: Pointer; Size, user: DWord):
 boolean; stdcall;
 var
 pPos, Postime: integer;
begin

  //Пройденное время
  pPos:= BASS_ChannelGetPosition(hChan, 0);
     if (pPos > 0) then
  begin
    Postime := Trunc(BASS_ChannelBytes2Seconds(hChan, pPos));
    Form1.Caption := (Format(' %d:%.2d', [Postime div 60, Postime mod 60]));
  end;

//Вот здесь делаем задержку на 2 сек и запись но можно поставить свое время и объявите глобальной var TimeSave: Integer и  
//MemoryStream: TMemoryStream и создать в procedure TForm.Create
  MemoryStream.Write(buffer^, Size);
  if Postime  > TimeSave + 2 then
  begin
  TimeSave := Postime;
  MemoryStream.Position:= 0;
  SaveWav(hChan, 'D:\1111.wav', MemoryStream.Memory, MemoryStream.Size);
  MemoryStream.Clear;
  end;

 //Воспроизводим звук
 BASS_StreamPutData(chanPlay, Buffer, Size);
 BASS_ChannelPlay(chanPlay, false);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TimeSave:= 0;
BASS_RecordInit(-1);
chanMic:=BASS_RecordStart(8000, 2, BASS_DEVICE_8BITS, @RecordingCallback, nil);
chanPlay:= BASS_StreamCreate(8000, 2, BASS_DEVICE_8BITS, STREAMPROC_PUSH, nil);
end;

Последний раз редактировалось Aliens_wolfs; 23.06.2015 в 22:47.
Aliens_wolfs вне форума Ответить с цитированием
Старый 21.09.2015, 16:42   #14
lis777sergei063
Новичок
Джуниор
 
Регистрация: 21.09.2015
Сообщений: 2
По умолчанию

А как принять звук с MemoryStream?
lis777sergei063 вне форума Ответить с цитированием
Старый 21.09.2015, 16:44   #15
lis777sergei063
Новичок
Джуниор
 
Регистрация: 21.09.2015
Сообщений: 2
По умолчанию

Марина, а как принять звук с MemoryStream?
lis777sergei063 вне форума Ответить с цитированием
Старый 19.12.2015, 00:50   #16
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

SaveWav(hChan, 'D:\1111.wav', MemoryStream.Memory, MemoryStream.Size);
смотрите пост #9 в этой же теме
Aliens_wolfs вне форума Ответить с цитированием
Старый 03.03.2017, 13:13   #17
6667
Новичок
Джуниор
 
Регистрация: 17.10.2010
Сообщений: 2
По умолчанию

Aliens_wolfs просьба скинуть исходник программы на мыло Jonny2000@inbox.ru. Заранее благодарен
6667 вне форума Ответить с цитированием
Старый 03.03.2017, 13:59   #18
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Цитата:
Сообщение от 6667 Посмотреть сообщение
просьба скинуть исходник программы
И выложить на сайт в открытом доступе !
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 05.03.2017, 12:23   #19
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Цитата:
Aliens_wolfs просьба скинуть исходник программы на мыло
Что именно хотите сделать?

Вот мой пример разбирайтесь
Изображения
Тип файла: jpg Микрофон.jpg (23.6 Кб, 103 просмотров)
Вложения
Тип файла: rar Пример микрофон Bass.rar (294.2 Кб, 76 просмотров)

Последний раз редактировалось Aliens_wolfs; 05.03.2017 в 15:01.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись видео с Web камеры и звука с микрофона в Delphi mzuko Мультимедиа в Delphi 5 07.03.2012 23:02
Вывод звука с микрофона на колонки ZBEP Помощь студентам 3 28.01.2011 17:14
Программа записи с микрофона+воспроизведение записанного Фанат_Муравьева Мультимедиа в Delphi 11 08.08.2010 20:33
Построение кривой звука и приём с микрофона TwiX Мультимедиа в Delphi 5 12.11.2009 19:02