Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отслеживание свойства Position в MediaPlayer 
:(
    Опции темы
inside
  Дата 13.7.2006, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 12.7.2006

Репутация: нет
Всего: нет



Подскажите, как отслеживать сколько проиграл MediaPlayer, чтобы можно было создать полосу прокрутки. Хочется, чтобы она двигалась по мере проигрывания звука. Спасибо =) 
PM MAIL   Вверх
Paranoik
Дата 13.7.2006, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 5.6.2006

Репутация: нет
Всего: 0



На таймер вешай...  smile 

Код

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if MediaPlayer1.FileName <> '' then begin
TrackBar1.Max := MediaPlayer1.Length;
TrackBar1.Position := MediaPlayer1.Position;
end;
end;
 
PM MAIL   Вверх
inside
Дата 13.7.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 12.7.2006

Репутация: нет
Всего: нет



я тоже сделал с таймером.. только с помощью WinAPI, SetTimer. 

TrackBar1.Max := MediaPlayer1.Length;
так писать бы не хотелось, потому что Трэкбар у меня не очень большой - и при динном файле слишком много делений - они сливаются. 

А таймер не подгружает проигрывание файла - может стоит в разные потоки?
 
PM MAIL   Вверх
Alexeis
Дата 13.7.2006, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(inside @  13.7.2006,  22:59 Найти цитируемый пост)
так писать бы не хотелось, потому что Трэкбар у меня не очень большой

ну так можно писать
Код

TrackBar1.Max := MediaPlayer1.Length div 1000;
//и в таймере
TrackBar1.Position := MediaPlayer1.Position div 1000;

Цитата(inside @  13.7.2006,  22:59 Найти цитируемый пост)
А таймер не подгружает проигрывание файл

нет особенно если его ставить где-то на 200мс
 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Paranoik
Дата 22.7.2006, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 5.6.2006

Репутация: нет
Всего: 0



Цитата

так писать бы не хотелось, потому что Трэкбар у меня не очень большой - и при динном файле слишком много делений - они сливаются. 

ну дык отключи деления... 
PM MAIL   Вверх
SAVANE
Дата 6.9.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 20.7.2006
Где: Украина, Полтава

Репутация: нет
Всего: 1



Оно то пашет но у меня на проге начало подтормаживать программу!
А как сдлать так чтоб писало время до конца песни?
--------------------
Be not afraid of growing slowly, be afraid only of standing still!
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 6.9.2006, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(SAVANE @  6.9.2006,  17:05 Найти цитируемый пост)
А как сдлать так чтоб писало время до конца песни? 

Вычитать из полного времени прошедшее.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
BEST13
Дата 11.5.2008, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



У меня тоже проблемка Positeon. Мне нужно что б файл открывался с опрделёного места, но почемуто не работает, вот код:
Код

SB_playClick(Sender);
TrackBar1.Position:=StrToInt(p);

вот сама процедура play ,может в ней дело?
Код

procedure TForm1.SB_playClick(Sender: TObject);
begin

 MediaPlayer.Close;
 If ListBox.ItemIndex < 0 then
 begin
 ShowMessage('Выбирите трек');
 MediaPlayer.Close;
 end
 else
 begin
 MediaPlayer.FileName:=ListBox.Items.Strings[ListBox.ItemIndex];
 MediaPlayer.Open;
 MediaPlayer.TimeFormat := tfMilliseconds;
 MediaPlayer.Display := Form2;
 MediaPlayer.DisplayRect := Form2.ClientRect;
 Timer1.Enabled:=True;
 TrackBar1.Max := MediaPlayer.TrackLength[0];
 Form2.TB_length_Ekran.Max := MediaPlayer.TrackLength[0];
  MediaPlayer.Play;
end;


Это сообщение отредактировал(а) BEST13 - 11.5.2008, 21:51
PM MAIL ICQ GTalk   Вверх
BEST13
Дата 11.5.2008, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



Ну помогите мне, пожалуйста
PM MAIL ICQ GTalk   Вверх
Данкинг
Дата 11.5.2008, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



А что именно не работает-то? 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
BEST13
Дата 11.5.2008, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



Цитата

Мне нужно что б файл открывался с опрделёного места, но почемуто не работает,

Я записывою поизицыю трекбара в переменю s , потом считываю и вызываю процедуру плей ,а играть начинает сначало(, а не стого момента 
PM MAIL ICQ GTalk   Вверх
HEyMEXA
Дата 11.5.2008, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 24.4.2008

Репутация: нет
Всего: нет



Цитата

У меня тоже проблемка Positeon. Мне нужно что б файл открывался с опрделёного места, но почемуто не работает, вот код:



вот как с помощью трек бара можно перейти на нужно место в фильме или еще в чом нибуть

Код

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
mediaplayer1.Position:=trackbar1.Position;
mediaplayer1.Play;
end;


Это сообщение отредактировал(а) HEyMEXA - 11.5.2008, 22:00
PM MAIL   Вверх
Qu1nt
Дата 11.5.2008, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 2
Всего: 50



Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  with MediaPlayer1 do
  begin
    FileName := 'c:\cool.mp3';
    Open;
    Play;
    TrackBar1.Max := TrackLength[0];
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  e: TNotifyEvent;
begin
  with TrackBar1 do
  begin
    e := OnChange;
    OnChange := nil;
    Position := MediaPlayer1.Position;
    OnChange := e;
  end;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  MediaPlayer1.Position := TrackBar1.Position;
  MediaPlayer1.Play;
end;

Timer1 - для самостоятельного передвижения ползунка (%
PM MAIL   Вверх
BEST13
Дата 11.5.2008, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



Цитата

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  with MediaPlayer1 do
  begin
    FileName := 'c:\cool.mp3';
    Open;
    Play;
    TrackBar1.Max := TrackLength[0];
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  e: TNotifyEvent;
begin
  with TrackBar1 do
  begin
    e := OnChange;
    OnChange := nil;
    Position := MediaPlayer1.Position;
    OnChange := e;
  end;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  MediaPlayer1.Position := TrackBar1.Position;
  MediaPlayer1.Play;
end;




это у меня есть и трекбар двигаеться, и если его мышкой перемишять оно перематывает а вот чтоб он сразу начал играть с определёной точки нет. Может у меня где тов других процедурах ошибки? Вот весь код програмы:
Код

procedure TForm1.FormCreate(Sender: TObject);
var i:Integer;
begin



   p:=true;
   igrait:=false;
end;

procedure TForm1.SB_OPENClick(Sender: TObject);
var
i: integer; nam,s,p: string;  f:textfile;
begin
  OpenDialog.Title := 'Выбор клипа';
  if OpenDialog.Execute then
     if OpenDialog.DefaultExt = 'bpl' then
       begin
       ListBox.Clear;
       ListBox1.Clear;
       AssignFile(f,OpenDialog.FileName);
       Reset(f);
         While not Eof(f) do
          begin
           Readln(f,s);
           Listbox.Items.Add(s);
           Delete(s,1,LastDelimiter('\',s));
           ListBox1.Items.Add(s);
          end;
       end
     else
  begin
  for i:=0 to OpenDialog.Files.Count-1 do
    begin
    ListBox.Items.Add(OpenDialog.Files.Strings[i]);
    nam:=ExtractFileName(OpenDialog.Files.Strings[i]);
    ListBox1.Items.Add(nam);
     end;
  end;
  If OpenDialog.FilterIndex=2 then
   begin

       s:=''; p:='';
       ListBox.Clear;
       ListBox1.Clear;
       AssignFile(f,OpenDialog.FileName);
       Reset(f);
       Readln(f,s);
       Read(f,p);
       Listbox.Items.Add(s);
       ListBox.ItemIndex:=0;
       Delete(s,1,LastDelimiter('\',s));
       ListBox1.Items.Add(s);
       ListBox1.ItemIndex:=ListBox.ItemIndex;

       SB_playClick(Sender);
       TrackBar1.Position:=StrToInt(p);

    end;
  ListBox.ItemIndex:=0;
  ListBox1.ItemIndex:=ListBox.ItemIndex;
end;

procedure TForm1.SB_playClick(Sender: TObject);
begin

 MediaPlayer.Close;
 If ListBox.ItemIndex < 0 then
 begin
 ShowMessage('Выбирите трек');
 MediaPlayer.Close;
 end
 else
 begin
 MediaPlayer.FileName:=ListBox.Items.Strings[ListBox.ItemIndex];
 MediaPlayer.Open;
 MediaPlayer.TimeFormat := tfMilliseconds;
 MediaPlayer.Display := Form2;
 MediaPlayer.DisplayRect := Form2.ClientRect;
 Timer1.Enabled:=True;
 TrackBar1.Max := MediaPlayer.TrackLength[0];
 Form2.TB_length_Ekran.Max := MediaPlayer.TrackLength[0];
  MediaPlayer.Play;
end;


end;

procedure TForm1.SB_StopClick(Sender: TObject);
begin
 MediaPlayer.Stop;
 MediaPlayer.Close;
  Timer1.Enabled:=False;
end;

procedure TForm1.SB_VolumClick(Sender: TObject);
begin
  if TB_Volume.Visible=False then
    TB_Volume.Visible := True
  else
  TB_Volume.Visible := False;
end;

procedure TForm1.TB_VolumeChange(Sender: TObject);
var
  volume:LongWord;
begin

  volume := 6500* (TB_Volume.Max - TB_Volume.Position);
  volume := volume +   (volume shl 16);
  waveOutSetVolume(MIDI_MAPPER,volume);
end;
procedure TForm1.SB_NOVOLUMeClick(Sender: TObject);

begin

  if p then
   begin
    waveOutSetVolume(MIDI_MAPPER,0);
    p:=false;
   end
  else
   begin
    TB_VolumeChange(SEnder);
    p:=true
    end;
end;

procedure TForm1.MediaPlayerNotify(Sender: TObject);
begin

 if ListBox1.ItemIndex < ListBox1.Count-1  then
 if MediaPlayer.Position=MediaPlayer.Length then
 begin
  ListBox.ItemIndex:=ListBox.ItemIndex+1;
  ListBox1.ItemIndex:=ListBox.ItemIndex;
  SB_PlayClick(sender)
  end


end;

procedure TForm1.Timer1Timer(Sender: TObject);
 var e,r : tnotifyevent;    m,s :integer;
begin
 e:=TrackBar1.OnChange;
 trackBar1.OnChange:=nil;
 TrackBar1.position:=MediaPlayer.position;
  trackBar1.OnChange:=e;
 Form2.TB_length_Ekran.Position:=TrackBar1.position;

 L_time.Caption :=FormatTime(MediaPlayer.Position) + ' / '+ FormatTime(MediaPlayer.Length);
 Form2.L_Ekran_Time.Caption:=  L_time.Caption;

 if (mediaplayer.position = mediaplayer.Length)and(ListBox.Items.Count-1=ListBox.ItemIndex) then
   begin
  MediaPlayer.Stop;
  Form2.Color:=clActiveCaption;
  end;


end;


procedure TForm1.SB_PauseClick(Sender: TObject);
begin
MediaPlayer.Pause;
end;

procedure TForm1.SB_BackClick(Sender: TObject);
begin
   if ListBox.ItemIndex > 0 then
     begin
        ListBox.ItemIndex := ListBox.ItemIndex - 1;
        SB_playClick(Sender);
              end;
              ListBox1.ItemIndex:=ListBox.ItemIndex;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  ListBox.ItemIndex := ListBox1.ItemIndex;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
 MediaPlayer.position:=TrackBar1.position;
 Form2.TB_length_Ekran.Position:=TrackBar1.Position;
   MediaPlayer.Play;
end;

procedure TForm1.SB_NextClick(Sender: TObject);
begin
     if ListBox1.ItemIndex < ListBox1.Count then
     begin
        ListBox.ItemIndex := ListBox.ItemIndex + 1;
        SB_playClick(Sender);
              end;
              ListBox1.ItemIndex:=ListBox.ItemIndex;
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
SB_playClick(Sender);
end;

procedure TForm1.N1Click(Sender: TObject);
begin
SB_playClick(Sender);
end;

procedure TForm1.N2Click(Sender: TObject);
begin
SB_PauseClick(Sender);
end;

procedure TForm1.N3Click(Sender: TObject);
begin
SB_StopClick(Sender);
end;

procedure TForm1.N5Click(Sender: TObject);
begin
SB_NextClick(Sender);
end;

procedure TForm1.N6Click(Sender: TObject);
begin
SB_BackClick(Sender);
end;



procedure TForm1.N8Click(Sender: TObject);
begin

Form3.Visible:=True;

end;

procedure TForm1.N10Click(Sender: TObject);
var poz:integer;
begin
   SB_StopClick(Sender);
   form3.Close;
   ListBox.ItemIndex:=ListBox1.ItemIndex;
   ListBox1.DeleteSelected;
   ListBox.DeleteSelected;
   ListBox.ItemIndex:=poz;
   ListBox.ItemIndex:=ListBox1.ItemIndex;
end;

function TForm1.FormatTime(Time: Integer): string;
const
  sec  = 1000;
  min  = 60 * sec;
  hour = 60 * min;
var
  h, m, s : Integer;
begin
  h := Time div hour;
  m := (Time div min) mod 60;
  s := (Time div sec) mod 60;
  if Time < hour then
    Result := Format('%d:%.2d', [m, s])
  else
  Result := Format('%d:%.2d:%.2d', [h, m, s]);
end;

procedure TForm1.SB_Save_AsClick(Sender: TObject);
var i:integer;  f:textfile;
begin
    SD.DefaultExt:='bpl';
   if Sd.Execute then
     begin
       AssignFile(F, SD.FileName);
       Rewrite(f);
       For i:=0 to ListBox.Count-1  do
         begin
          writeln(f,Listbox.Items.Strings[i]);
         end;
       CloseFile(f);
      end;
end;


procedure TForm1.SB_SaveV_asClick(Sender: TObject);
var i:integer; f:textfile;
begin
 SD.DefaultExt:='bvb';
 if sd.Execute then
  begin
   AssignFile(f,SD.FileName);
   Rewrite(f);
   writeln(f,Listbox.Items.Strings[Listbox.ItemIndex]);
   Writeln(f,TrackBar1.Position);
   CloseFile(f);
 end;
end;


Это сообщение отредактировал(а) BEST13 - 11.5.2008, 22:26
PM MAIL ICQ GTalk   Вверх
HEyMEXA
Дата 11.5.2008, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 24.4.2008

Репутация: нет
Всего: нет



выложи исходники гораздо легче будет разобраься чем в этом ужасно длином коде а то не поймеш где именно там начинаеться воспроизведение
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0692 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.