Показано с 1 по 1 из 1
-
16.11.2009, 01:26 #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;
Код расчёта продолжительности сигнала:
Код: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;
Ну в очередной раз сам дополню тему
Оказывается TMediaPlayer по разному расчитывает продолжительность взависимости от бит рейта звукового файла. Можно воспользоваться TBassPlayer и Bass.dll где качать незнаю, но поисковик в инете и всё найдётся.
Тут скачать можно с исходником, посмотрел, вообще тема. http://www.programmersforum.ru/showt...5%E5%F0&page=2Последний раз редактировалось -=C@$PeR=-; 16.11.2009 в 01:36. Причина: Добавлено сообщение
Похожие темы
-
Проблемы при работе с почтой
от roadtoheaven в разделе Интернет и сетиОтветов: 2Последнее сообщение: 19.04.2010, 00:29 -
Ошибка при установке винды...
от Mirvays в разделе Windows XPОтветов: 3Последнее сообщение: 07.09.2009, 15:59 -
Зависание системы при загрузке!
от CHeetahSPB в разделе Общие вопросыОтветов: 1Последнее сообщение: 29.07.2009, 10:19 -
Зависает при загрузке
от CHeetahSPB в разделе Железо (hardware)Ответов: 0Последнее сообщение: 11.04.2009, 19:41 -
Загрузка ОС, при установленной Vista'е
от E@91e^90 в разделе Microsoft WindowsОтветов: 2Последнее сообщение: 17.08.2008, 23:23
Социальные закладки