.NET

16 abr, 2010

MP3 player com DirectX

Publicidade

Ao menos uma vez você já deve ter tentando executar um MP3 utilizando .NET. Você vai lá e adiciona um objeto SoundPlayer do namespace System.Media, utilizando o método Play() e… não é possível executar o arquivo, pois o SoundPlayer não suporta o MP3.

Vamos usar o DirectX para nos auxiliar com isso, então,
baixe

o DirectX Software Development Kit no site do Microsoft, são apenas
443
MB.

No meu caso, eu tive que executar um mp3 em um dashboard de Call
Center. O cliente queria colocar um telão no Call Center e, toda vez que
o nível de atendimento estava abaixo do mínimo aceitável, o sistema
tinha que tocar uma sirene. Bom, fizemos um esquema para ler wav, mas
nossa vontade era fazer com mp3! Coisas de desenvolvedor… Bem,
fizemos, mas não foi para produção, não deu tempo. Mas não importa – a
questão é que o DirectX vai nos ajudar com o nosso MP3.

Requisitos

  • Windows XP com framework 2.0 ou superior
  • DirectX SDK 2006 ou  superior
  • Visual Studio 2005 ou compatível

Criando o projeto Windows Forms Application

Agora com o DirectX SDK, crie um novo projeto do tipo Windows Forms Application, com o nome que você achar melhor. Não vou mostrar aqui com usar o OpenFileDialog, isso fica para outro artigo.

Adicione as referências

Vá ao menu “Project”, clique em “Add Reference”, na aba “.NET”, adicione as referências “Microsoft.DirectX” e “Microsoft.DirectX.AudioVideoPlayback”.

Adicione o caminho do mp3

Dê um clique duplo no formulário. No método Form_Load, crie uma variável do tipo string com o nome musica e sete o valor dela como o caminho para o seu arquivo mp3 (pois é, um arquivo mp3!!!! Hehe).

Adicione objeto Microsoft.DirectX.AudioVideoPlayback.Audio

Adicione um objeto do tipo Áudio (Microsoft.DirectX.AudioVideoPlayback.Audio) com o nome áudio. Instancie áudio como um novo Áudio e passe como parâmetro o objeto música no construtor.

Execute “Play”

Agora execute o método “Play” do objeto áudio.

Código fonte

Abaixo estão os códigos-fonte em VB.NET e C#:

VB.NET

Imports Microsoft.DirectX.AudioVideoPlayback
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim musica As String = "C:\Documents and Settings\oscar\Meus documentos\Minhas músicas\Top Gun - Danger Zone.mp3"
Dim audio As Audio
audio = New Audio(musica)
audio.Play()
End Sub
End Class

C#

using System;
using System.Windows.Forms;
using Microsoft.DirectX.AudioVideoPlayback;
namespace DirectXPlayer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string musica = @"C:\Documents and Settings\oscar\Meus documentos\Minhas músicas\Top Gun - Danger Zone.mp3";
            Audio music;
            music = new Audio(musica);
            music.Play();
        }
    }
}

Referências

http://msdn.microsoft.com/en-us/directx/aa937788.aspx
http://msdn.microsoft.com/en-us/directx/default.aspx
http://msdn.microsoft.com/en-us/aa937791.aspx

Como você pode ver, não é uma situação tão difícil. Espero que tenha agregado conhecimento. Até a próxima.