Media Player

Delphi

12/03/2004

Alguém sabe como fazer um tocador de músicas (mais ou avançado)?

Tenho um sistema de gerenciamento de telemensagens, e neste sistema tem uma rotina para enviar a telemensagem ao destinatário, o usuário seleciona a telemensagem (em mp3, ou qq outro tipo de audio) e tem os botões Play, Pause e Stop para o seu gerenciamento.

Só que eu preciso de algo mais sofisticado, tipo mostrar o andamento do tempo da música, avançar para o meio da música, limitar o tempo de execução da música (isso para mostrar um pedaço da música para o cliente, ex: 20 segundos), etc...

Alguém tem algum exemplo disso pra mim ajudar?


Marco

Marco

Curtidas 0

Respostas

Cebikyn

Cebikyn

12/03/2004

Vc pode usar a BASS.dll, ela só suporta MP3, MP2, MP1, OGG, WAV e WMA, permite que vc faça tudo o que vc quer e mais um pouco (como equalizadores, osciloscópios e mais). Está disponível em:

http://www.un4seen.com/

Tb tem a DSPack 1.05, suporta bem mais formatos de áudio (MP3, WMA, WAV, SND, AU, AIF, entre outros). Tb faz tudo o que vc quer, mas é mais difícil de ser usada e demora um pouco para carregar arquivos. Está disponível em:

http://www.progdigy.com/

Se quiser um exemplo, tem o PBB Player, um tocador de mídias (áudio e vídeo, incluindo CDs e DVDs) que usa as duas opões citadas, o código fonte e o programa compilado podem ser obtidos em:

http://paginas.terra.com.br/informatica/cebikyn/setup.exe (1,98 Mb)
[size=9:700486e8dd](clicar com o botão diretio do mouse e selecionar ´Salvar Destino como...´, caso contrário aparecerá uma msg de erro)[/size:700486e8dd]

Qualquer dúvida sobre qualquer uma das opções citadas, pode deixar uma msg como resposta a este tópico.


GOSTEI 0
Marco

Marco

12/03/2004

Obrigado pela resposta!

Consegui baixar essa biblioteca Bass, vi os exemplos... mas queria algo mais objetivo... precisava mesmo só por um indicador de tempo da música, e tb conseguir determinar o quanto tempo a música será tocada (ex: 20 segundos).

Tem alguma sugestão ou exemplo?


GOSTEI 0
Sherikan

Sherikan

12/03/2004

dá uma analisada aqui http://msdn.microsoft.com/library/en-us/wmplay/mmp_sdk/windowsmediaplayer9seriessdk.asp


GOSTEI 0
Cebikyn

Cebikyn

12/03/2004

Usando a BASS, fica fácil, é só usar o seguinte:

Supondo que há 1 Timer (Enabled := False; Interval := 500), 1 ScrollBar e um Botão no Form:

uses
  BASS;

var
  Channel: DWORD;

{ No OnCreate de seu form principal: }
procedure TForm1Create(Sender: TObject);
begin
  BASS_Init(1,44100,0,Handle,nil);
end;

{ No OnDestroy do mesmo form: }
procedure TForm1Destroy(Sender: TObject);
begin
  BASS_Free;
end;

{ Para abrir a música e toca-la: }
procedure TForm1.Button1Click(Sender: TObject);
begin
  Channel :=  BASS_StreamCreateFile(False, PChar(´C:\Arquivo.mp3´),0,0,BASS_STREAM_AUTOFREE);
  BASS_StreamPlay(Channel, False, 0);
  Timer1.Enabled := True;
end;

{ Coloque em um Timer, para indicar o Progresso da música, usando um TScrollBar }
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  ScrollBar1.Max := Trunc(BASS_ChannelBytes2Seconds(BASS_StreamGetLength(Channel)));

  ScrollBar1.Position := Trunc(BASS_ChannelBytes2Seconds(BASS_ChannelGetPosition(Channel)));
end;

{ Coloque em um Timer (pode ser o mesmo), para limitar a execução da música: }
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if BASS_ChannelBytes2Seconds(BASS_ChannelGetPosition(Channel)) >= 20 then // 20 segundos
    BASS_ChannelStop(Channel);
end;


Para Pausar a música, use BASS_ChannelPause(Channel), para voltar do Pause: BASS_ChannelResume(Channel), e para dar Stop: BASS_ChannelStop(Channel).

Eu escrevi isso ´de cabeça´, então pode haver algum erro.

Qualquer dúvida, deixe como resposta a este tópico.


GOSTEI 0
POSTAR