Показано с 1 по 1 из 1
  1. #1
    Гость форума
    Регистрация
    06.11.2009
    Сообщений
    7
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию TMediaPlayer и TTrackBar - перемещение при воспроизведении

    Люди, объясните кто нибудь:
    Как получить точную длинну трека, нету списка воспроизведения, трек всегда один.
    У меня это выглядит так, но не правильно всё равно получается.
    Код:
    procedure TForm1.BitBtn4Click(Sender: TObject);
    begin
      if OpenDialog1.Execute then //нажатие по кнопке Выбрать песню/сигнал
      begin
      if MediaPlayer1.Mode = mpPlaying then
       begin
         MediaPlayer1.Stop;
         LEditWayMusic.Text := OpenDialog1.FileName;
         MediaPlayer1.FileName := OpenDialog1.FileName;
         ButPlayMusic.Glyph := StopBMP;
         ButPlayMusic.Tag := 1;
         MediaPlayer1.Open;
         TrackBar1.Max := MediaPlayer1.TrackLength[1] div 1000;
         TrackBar1.Position := TrackBar1.Min;
         ShowTrackLenth;
         MediaPlayer1.Play;
       end;
    
      if MediaPlayer1.Mode = mpStopped then
       begin
         MediaPlayer1.Stop;
         LEditWayMusic.Text := OpenDialog1.FileName;
         MediaPlayer1.FileName := OpenDialog1.FileName;
         ButPlayMusic.Glyph := PlayBMP;
         ButPlayMusic.Tag := 0;
         MediaPlayer1.Open;
         TrackBar1.Max := MediaPlayer1.TrackLength[1] div 1000;
         TrackBar1.Position := TrackBar1.Min;
         ShowTrackLenth; //расчитать длинну трэка
       end;
      end;
    end;

    Код:
    procedure TForm1.TimerPlaySoundTimer(Sender: TObject);
    begin
      TrackBar1.Position := TrackBar1.Position + 1;
      if MediaPlayer1.Mode = mpStopped then 
      begin
        TrackBar1.Position := TrackBar1.Min;
        ButPlayMusic.Tag := 0; //кнопка становиться не стоп, а плэй
        ButPlayMusic.Glyph := PlayBMP; //соответсвующая картинка
        TimerPlaySound.Enabled := False;
      end;
    end;
    Чё не верно? в одной песне у меня показывает, что песня длиться 18 секунд, хотя на самом деле 24. В других многих песнях, показывает точно, в одной вообще не хило ошибается пишет, что песня длиться 7 с чемто минут, хотя на самом деле 3 с чем-то.

    Код расчёта продолжительности сигнала:
    Код:
    procedure ShowTrackLenth;
    var resS, resM, resH : integer;
        StrSec, StrMin, StrHour : string[2];
    begin
      resS := 0;
      resM := 0;
      resH := 0;
      if FileExists(Form1.LEditWayMusic.Text) then
      begin
        Form1.MediaPlayer1.FileName := Form1.LEditWayMusic.Text;
        Form1.MediaPlayer1.Open;
        resS := (Form1.MediaPlayer1.TrackLength[1]);
        resS := resS div 1000;
       { Form1.LTrack.Caption := IntToStr(Form1.TrackBar1.Max div 60)
         + ':' + IntToStr(Form1.TrackBar1.Max - (Form1.TrackBar1.Max div 60)*60);}
          while resS > 59 do
          begin
            resS := resS - 60;
            resM := resM + 1;
            if resM > 59 then
            begin
              resM := resM - 60;
              resH := resH + 1;
            end;
           // resS := Int(resS); //получить количество секунд без остатка (целое)
          end;
          if resS < 10 then StrSec := '0'+ FloatToStr(resS)
                       else StrSec := FloatToStr(resS);
          if resM < 10 then StrMin := '0'+ FloatToStr(resM)
                       else StrMin := FloatToStr(resM);
          StrHour :=  FloatToStr(resH);
    
    
        Form1.LTrack.Caption := 'Продолжительность трэка: '+StrHour+': '+
                          StrMin+': '+ StrSec;
    
      end else Form1.LTrack.Caption := 'Не удалось расчитать продолжительность трэка, так как файл не существует';
    end;
    Добавлено через 46 часов 55 минут 19 секунд
    Ну в очередной раз сам дополню тему
    Оказывается TMediaPlayer по разному расчитывает продолжительность взависимости от бит рейта звукового файла. Можно воспользоваться TBassPlayer и Bass.dll где качать незнаю, но поисковик в инете и всё найдётся.
    Тут скачать можно с исходником, посмотрел, вообще тема. [Только зарегистрированные пользователи могут видеть ссылки. ]
    Последний раз редактировалось [email protected]$PeR=-; 16.11.2009 в 01:36. Причина: Добавлено сообщение

Похожие темы

  1. Проблемы при работе с почтой
    от roadtoheaven в разделе Интернет и сети
    Ответов: 2
    Последнее сообщение: 18.04.2010, 23:29
  2. Ошибка при установке винды...
    от Mirvays в разделе Windows XP
    Ответов: 3
    Последнее сообщение: 07.09.2009, 14:59
  3. Зависание системы при загрузке!
    от CHeetahSPB в разделе Общие вопросы
    Ответов: 1
    Последнее сообщение: 29.07.2009, 09:19
  4. Зависает при загрузке
    от CHeetahSPB в разделе Железо (hardware)
    Ответов: 0
    Последнее сообщение: 11.04.2009, 18:41
  5. Ответов: 2
    Последнее сообщение: 17.08.2008, 22:23

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •