Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Mostrando el tiempo de una canción con TMediaPlayer (Ayuda) (https://www.clubdelphi.com/foros/showthread.php?t=60717)

enecumene 11-10-2008 05:00:51

Mostrando el tiempo de una canción con TMediaPlayer (Ayuda)
 
Pues eso, tengo el siguiente código:

Código Delphi [-]
procedure TFMain.Timer1Timer(Sender: TObject);
begin
MediaPlayer1.TimeFormat := tfMilliseconds;
  if Progreso.MaxValue <> 0 then
    Progreso.Progress := MediaPlayer1.Position;
    Label2.Caption := FloatToStr(Trunc(MediaPlayer1.Position / 1000) div 60 )+ ' : ' +FloatToStr(Trunc(MediaPlayer1.Length / 1000));
end;

El tiempo me muestra de esta manera:

01 : 197

No logro que la parte de los segundos llegue a los 60 y vuelva a empezar, la de los minutos trabaja correctamente por cada 60 segundos que pasa, ¿alquien me pude ayudar con esto?. :o

Saludos.

Khronos 11-10-2008 10:41:53

Hola,

Código Delphi [-]
function FMain.GetCurrentPosition: string;
var
mil, min, sec, hor: integer;
segundos, minutos: string;
begin
MediaPlayer1.TimeFormat:=tfMilliseconds;
mil:= MediaPlayer.Length;
sec:= mil div 1000;
min:= sec div 60;
hor:= min div 60;
sec:= sec mod 60;
segundos:=inttostr(sec);
minutos:=inttostr(min);
if min<10 then begin
minutos:='0' + inttostr(min);
end;
if sec<10 then begin
segundos:='0' + inttostr(sec);
end;
result:= inttostr(hor) +':' +minutos + ':' + segundos;
end;

En el TTimer,

Código Delphi [-]
procedure TFMain.Timer1Timer(Sender: TObject);
begin
MediaPlayer1.TimeFormat := tfMilliseconds;
  if Progreso.MaxValue <> 0 then
    Progreso.Progress := MediaPlayer1.Position;
    Label2.Caption := FMain.GetCurrentPosition;
end;

Salu2

enecumene 11-10-2008 17:01:51

Hola, Muchas gracias Khronos, pero la función que me envias sólo me muestra el total que dura la canción y se queda fija, yo sólo quiero que los segundos empiecen desde 0 cada 60 segundos :)

Saludos.

enecumene 11-10-2008 22:14:30

Gracias a la ayuda de eduarcol, el código quedó funcionando de pelos de esta manera:

Código Delphi [-]
procedure TFMain.Timer1Timer(Sender: TObject);
var min, sec: String;
begin
MediaPlayer1.TimeFormat := tfMilliseconds;
  if Progreso.MaxValue <> 0 then
    Progreso.Progress := MediaPlayer1.Position;
    sec := InttoStr((MediaPlayer1.Position div 1000) - (((MediaPlayer1.Position div 1000) div 60) * 60));
    min := InttoStr((MediaPlayer1.Position div 1000) div 60);
    Label2.Caption := FormatFloat('00', StrtoFloat(min));
    Label4.Caption := FormatFloat('00', StrtoFloat(sec));
end;

Saludos.

PD. Eduarcol eres un duro ;) (Para los mal pensados no es lo que piensan)

Khronos 12-10-2008 13:17:02

Si tienes razón enecumene no me di cuenta. Pero si en la función le pones esto:

Código Delphi [-]
mil:= MediaPlayer.Position; //mil:= MediaPlayer.length;

Te funcionaría como buscabas, la primera función era para obtener la duración de una canción y de esta manera consigues la posición actual en el formato x:xx:xx.

Salu2

thebignico 14-10-2008 22:48:38

Retomo en este post para no abrir uno nuevo ya q es lo q estoy buscando, pero me interesaria saber como hacer para q me muestre tambien las milesimas de segundos porq lo estoy usando para edicion de video Es decir el formato q tendria q verse seria HH:MM:SS:ZZZ. Saludoss.

enecumene 14-10-2008 22:54:31

Cita:

Empezado por thebignico (Mensaje 320085)
Retomo en este post para no abrir uno nuevo ya q es lo q estoy buscando, pero me interesaria saber como hacer para q me muestre tambien las milesimas de segundos porq lo estoy usando para edicion de video Es decir el formato q tendria q verse seria HH:MM:SS:ZZZ. Saludoss.

Deberías al menos aportar algo de código y qué componentes usas.

Saludos.

eduarcol 14-10-2008 22:56:55

los milisegundos salen de la diferencia entre la position y los segundos mostrados, asi de sencillo :D

enecumene 14-10-2008 22:59:22

Cita:

Empezado por eduarcol (Mensaje 320088)
los milisegundos salen de la diferencia entre la position y los segundos mostrados, asi de sencillo :D

Es que el no ha dicho qué componentes usa ya que habla de "edición de videos" y es muy probable que no use el MediaPlayer.

sultan 27-10-2008 20:21:07

buenas señores.

os queria preguntar a cerca de este post sobre el tmediaplayer, ya que yo tengo que hacer uno, en un programa, como ampliacion, pero aun no nos han explicado como va.

tengo varios botones del tmediaplayer habilitados( play, pause, avanzar, retroceder)pero no me sale el de expulsar ni el de grabar. como los habilito para que me funcionen??

tambien queria, si se puede, hacerte una pregunta enecumene: ese "progreso.progress", de donde lo sacas?? es una variable tuya o es algun objeto que pones del tool palete?

os agradezco la ayuda de antemano

gracias

enecumene 27-10-2008 20:28:00

Hola Sultan, Progreso.Progress es un componente TGauge, lo puedes encontrar en la paleta Samples de Delphi, también lo puedes cambiar por un progressBar, para habilitar los botones faltantes date un miradita a la propiedad EnabledButtons del TMediaPlayer, ahí encontrarás lo que buscas.

Saludos.

sultan 27-10-2008 21:04:53

muchas gracias enecumene.el problema es que no tengo, o no encuentro la paleta samples del delphi, pero lo cambio por un progresbar i listo.

referente a los botones del media player, en el enabled buttons tengo todos los buttons habilitados, pero me sigue mostrando solo los play pause etc...

probare lo del progres bar para ver si lo puedo hacer bien, y si sigo teniendo problemas con los buttons ya te contare mas detalladamente el problema, haber si hay solucion.

muchas gracias.


La franja horaria es GMT +2. Ahora son las 04:33:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi