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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2009, 20:37   #1
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
Вопрос Перемещение ТрэкБара при воспоизведении

Люди, объясните кто нибудь:
Как получить точную длинну трека, нету списка воспроизведения, трек всегда один.
У меня это выглядит так, но не правильно всё равно получается.
Код:
Код:
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);
Если найдётся человек знающий ответ, то код пишите пожалуйста хотябы немного с коментариями
Casper-SC вне форума Ответить с цитированием
Старый 15.11.2009, 20:52   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Поиском по форуму по слову "плеер" не пробовали?
Просто достали уже с одними и теми же вопросами...
http://www.programmersforum.ru/showt...EF%EB%E5%E5%F0
http://www.programmersforum.ru/showt...EF%EB%E5%E5%F0
Может, дальше самостоятельно?
mihali4 вне форума Ответить с цитированием
Старый 15.11.2009, 22:48   #3
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Да там нету решения проблемы! У меня тут вопроса 2 по одной теме. В тех темах есть исходники скачал, ну да идея не плохая изменять размер картинки, но это совершенно не отвечает на мой вопрос. Я сам вкурсе какой компонент, какие события ставить, тут ничего вроде сложного нету. но вот с этим не могу разобраться, да и длинна трека не правильно просчитывается, я и спрашиваю, почему, что не правильно? MediaPlayer.Length почему-то не правильно длинну трека выдаёт, как можно посчитать моим алгоритмом, что песня длиной 24 сек. у меня показывает 18. А другие правильно, одну вообще на половину ошибается. Чё-то не могу понять.
Casper-SC вне форума Ответить с цитированием
Старый 15.11.2009, 22:58   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

медиаплеер плох, он плохо расчитывает длину при переменном битрейте.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.11.2009, 23:05   #5
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
Вопрос

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
медиаплеер плох, он плохо расчитывает длину при переменном битрейте.
А чем тогда пользоваться? Если дадите ссылку на компонент, то и напишите пожалуйста, как его устанавливать в Delphi 2006?
Casper-SC вне форума Ответить с цитированием
Старый 15.11.2009, 23:15   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если на то пошло, то есть TBassPlayer.
и соответственно Bass.dll
ставим как обычно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.11.2009, 23:31   #7
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
Лампочка

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
если на то пошло, то есть TBassPlayer.
и соответственно Bass.dll
ставим как обычно.
Я конечно понимаю, что как обычно, но я вообще в жизни не устанавливал сторонние компоненты.
Casper-SC вне форума Ответить с цитированием
Старый 16.11.2009, 02:38   #8
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Там все просто кидаешь файлы bass.dll,bass.pas например в папку C:\bass затем в Delphi выбираешь Tools->Envirounment Options->Library->Lybrary Path и прописываешь пути к папке bass.После этого выбираешь Component->Install Component->Browse и выбираешь файл bass.pas
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перемещение в форме bosston Общие вопросы Delphi 2 17.09.2009 10:47
перемещение формы CraZZy RabbIt Общие вопросы Delphi 1 16.03.2009 01:38
Перемещение столбцов Janny Microsoft Office Excel 6 10.11.2008 07:58
Перемещение файлов Nasya Microsoft Office Excel 2 13.10.2007 20:37
Как реализовать перемещение ползунка при проигрывании mp3 файла компонент mediaplayer, в нужную позицию? strannik Компоненты Delphi 5 12.12.2006 05:23