Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопросы по компоненту MediaPlayer [D2005, XP]


Flood_control ©   (2007-02-13 15:12:00) 

Здравствуйте у меня такой вопрос, как сделать так что бы мой компонент MediaPlayer1 воспроизводил медиафайл не однократно, либо указаное число раз, либо бесконечно? (медиафайл с вспике 1)
И возможно ли както сделать так что бы громкость воспроизведения с начала воспроизведение пошагово увеличивалась до определенного максимума?


Tifon   (2007-02-13 17:56:00) [1]

если тебе все равно каким методо увеличивать громкость тогда держи


INT GetMasterVolumeControlID()
{
 // get dwLineID
 MIXERLINE mxl;
 mxl.cbStruct = sizeof(MIXERLINE);
 mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
 if (::mixerGetLineInfo((HMIXEROBJ)ghmx, &mxl,
   MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE)
   != MMSYSERR_NOERROR)
   return 34;
 // get dwControlID
 MIXERCONTROL mxc;
 MIXERLINECONTROLS mxlc;
 mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
 mxlc.dwLineID = mxl.dwLineID;
 mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
 mxlc.cControls = 1;
 mxlc.cbmxctrl = sizeof(MIXERCONTROL);
 mxlc.pamxctrl = &mxc;
 if (::mixerGetLineControls((HMIXEROBJ)ghmx, &mxlc,
   MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)
   != MMSYSERR_NOERROR)
   return 34;
 return mxc.dwControlID;
}

BOOL SetMasterVolume(DWORD dwVolume)
{
  MIXERCONTROLDETAILS mxcd;
  MIXERCONTROLDETAILS_UNSIGNED mxcd_u;
  mxcd.cbStruct = sizeof(mxcd);
  mxcd.dwControlID = MasterVolumeControlID;
  mxcd.cChannels = 1;
  mxcd.cMultipleItems = 0;
  mxcd.cbDetails = 4;
  mxcd.paDetails = &mxcd_u;
  mmr = mixerGetControlDetails((HMIXEROBJ)ghmx, &mxcd, 0L);
  if (MMSYSERR_NOERROR != mmr) return FALSE;
  mxcd_u.dwValue = dwVolume;
  mmr = mixerSetControlDetails((HMIXEROBJ)ghmx, &mxcd, 0L);
  if (MMSYSERR_NOERROR != mmr) return FALSE;
  return TRUE;
}

Переписывать на Delphi, думаю, ни к чему. Надо лишь не забыть добавить uses MMSystem; Громкость отдельных каналов очень просто устанавливается через auxSetVolume и аналогичные.

Код не мой, но думаю рабочий


Flood_control   (2007-02-13 17:02:00) [2]

Observer ©
Благодарствую за помощь, а на счет постепенного увеличения звука не подскажешь? К примеру как только начинается медиафайл воспроизводиться звук к примеру составляет 30% и через каждую секунду увеличивался на 1-2%?


Сергей М.   (2007-02-13 16:40:00) [3]

ну а что такими "мелочами" заниматься ?
Сразу - ОС. что уж там мелочиться)... Да сразу на АСМ, иначе никак)

Не ты ли, чудо, трындел намедни в "Прочее" про ОС на "чем-то там" написанную ?)

Ты, дружок, ты)


Observer   (2007-02-13 16:34:00) [4]

Зачем сразу ОС?


Сергей М.   (2007-02-13 16:33:00) [5]


> [1]


Новая ОС - в действии)


Observer   (2007-02-13 16:30:00) [6]

procedure TForm1.Timer1Timer(Sender: TObject);
begin
with MediaPlayer1 do
if FileName<>'' then
Gauge1.Progress:=Round(100*Position/Length);
end;
if Gauge1.Progress:=100 then MediaPlayer1.Play;

Gauge1 находится на вкладке Samples


Наверх

Титульная страница Поиск, карта сайта Написать письмо