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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2010, 05:04   #1
Jacobson
Пользователь
 
Аватар для Jacobson
 
Регистрация: 26.01.2010
Сообщений: 47
Сообщение Поиск аудио устройств и их параметров API

Как мне используя "API" найти в системе все установленные аудио устройства: Сама звуковая плата или аналог, устройства ввода, например это микрофон или "CD-Плеер", и параметры записи которые поддерживаются тем или иным аудио устройством для записи? Как получить звук с микрофона это понятно! Но вот что делать если надо получить звук не с микрофона, а к примеру с "CD-Плеера" и выбрать для этого формат записи я пока не знаю... Посоветуйте оптимальный пример или источник, пожалуйста!
P.S.: Полистав имеющуюся у меня литературу по "API" в "Delphi" особо не чего не нашёл...
Всё не то чем кажется...

Последний раз редактировалось Jacobson; 01.10.2010 в 05:06.
Jacobson вне форума Ответить с цитированием
Старый 01.10.2010, 10:19   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

mixerGetLineControls(), mixerGetLineInfo(), mixerGetDevCaps(), mixerSetControlDetails() модуля mmsystem.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 01.10.2010, 10:31   #3
Jacobson
Пользователь
 
Аватар для Jacobson
 
Регистрация: 26.01.2010
Сообщений: 47
Сообщение

Цитата:
Сообщение от raxp Посмотреть сообщение
mixerGetLineControls(), mixerGetLineInfo(), mixerGetDevCaps(), mixerSetControlDetails() модуля mmsystem.
Большое спасибо за ответ! Даже и не знаю ка вас благодарить...
Всё не то чем кажется...
Jacobson вне форума Ответить с цитированием
Старый 23.10.2010, 01:19   #4
Jacobson
Пользователь
 
Аватар для Jacobson
 
Регистрация: 26.01.2010
Сообщений: 47
Сообщение

Не получается корректно проверить и получить список линий с устройства. Хочу проверить выбранное устройство на наличие линий ввода и загрузить данные в список. Набросал некий код, но работает не корректно! Что-то не так...
Код:
var
  Mixer: HMixer;
  MixerCaps: TMixerCaps;
  MixerControl: TMixerControl;
  MixerLine: TMixerLine;
  MixerLineControls: TMixerLineControls;
  MixerLineInPutList: array [0..12] of Integer = (MIXERLINE_COMPONENTTYPE_SRC_FIRST,
                                                 MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED,
                                                 MIXERLINE_COMPONENTTYPE_SRC_DIGITAL,
                                                 MIXERLINE_COMPONENTTYPE_SRC_LINE,
                                                 MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE,
                                                 MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER,
                                                 MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC,
                                                 MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE,
                                                 MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER,
                                                 MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT,
                                                 MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY,
                                                 MIXERLINE_COMPONENTTYPE_SRC_ANALOG,
                                                 MIXERLINE_COMPONENTTYPE_SRC_LAST);
  Integral, LineIndex: Integer;
begin
  ComboAudioLines.Clear;
  if ListAudioDevices.ItemIndex <> - 1 then
  begin
    if (MixerOpen(@Mixer, 0, 0, 0, 0) = MMSYSERR_NOERROR) then
    begin
      LineIndex := MixerLine.cConnections;
      for Integral := 0 to (LineIndex - 1) do
      begin
        MixerLine.dwComponentType := MixerLineInPutList[Integral];
        MixerLine.cbStruct := SizeOf(MixerLine);
        if (MixerGetLineInfo(Mixer, @MixerLine, MIXER_GETLINEINFOF_COMPONENTTYPE) = MMSYSERR_NOERROR) then
        begin
          ZeroMemory(@MixerLine, SizeOf(MixerLineControls));
          MixerLineControls.cbStruct := SizeOf(MixerLineControls);
          MixerLineControls.dwLineID := MixerLine.dwLineID;
          MixerLineControls.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME;
          MixerLineControls.cControls := 1;
          MixerLineControls.cbMxCtrl := SizeOf(MixerControl);
          MixerLineControls.paMxCtrl := @MixerControl;
          if (MixerGetLineControls(Mixer, @MixerLineControls, 
            MIXER_GETLINECONTROLSF_ONEBYTYPE) = MMSYSERR_NOERROR) then
          begin
            ComboAudioLines.Items.Append(MixerLine.szName);
          end;
        end;
      end;
    end;
  end;
  Exit;
end;
Имеются мало, но полезные ссылки: http://www.delphimaster.ru/articles/mixer.html и http://cbuilder.ru/index.php?topic=3830.0 в последнем варианте описывается метод на языке, "C++". Но тем всё же на "Borland"!
Всё не то чем кажется...

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск сетевых устройств Litok Общие вопросы .NET 11 13.05.2010 21:32
Детектирование устройств. Devourer12345 Помощь студентам 5 12.04.2010 23:21
поиск параметров в строке C# Лубышев Общие вопросы .NET 5 10.03.2010 20:08
Список устройств CraZZy RabbIt Win Api 5 10.03.2009 13:15
Поиск параметров реестра Лубышев Общие вопросы Delphi 1 08.06.2008 22:11