Tocar arquivos Mp3 com C# e NAudio

Bom, como eu sou inquieto e sempre gosto de fazer alguma coisa, independente do meu trabalho ou não, resolvi brincar e fazer um player pessoal. Como meu apelido é cebion, acabei dando o nome de cebiPlayer (=D). Estou apenas começando, e caso você queira acompanhar o código do projeto, eu estou hospedando ele no github. Basta clickar no link github.com/ceb10n/cebiPlayer.

O primeiro passo para ter um player, naturalmente é conseguir tocar arquivos mp3, logo, esta foi a minha primeira investida. Eu encontrei a biblioteca NAudio, e por enquanto está atendendo bem às expectativas. Neste post eu não entrarei muito em detalhes e mostrarei apenas como executar um MP3, sem muito tratamento, nem nada. Este exemplo é muito semelhante encontrado na documentação do projeto.

Primeiro, faça o download das dlls em http://naudio.codeplex.com/releases/view/79035. Adicione a referência e vamos ao código.

Crie um form, adicione um botão para abrir um arquivo e outro para dar play. Crie as seguinte variáveis:

string file;
IWavePlayer waveOutDevice;
WaveStream mainOutputStream;
WaveChannel32 volumeStream;

Eu inicializei o waveOutDevice no construtor.

        private void CebiPlayer_Load(object sender, EventArgs e)
        {
            waveOutDevice = new WaveOut();
        }

Adicione um evento para o botão criado para abrir o arquivo e o método CreateInputStream (é o método do exemplo na documentação oficial):

        private void openFileButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                if (File.Exists(openFileDialog.FileName))
                {
                    file = openFileDialog.FileName;
                    mainOutputStream = CreateInputStream(openFileDialog.FileName);
                }
            }
        }

        private WaveStream CreateInputStream(string fileName)
        {
            WaveChannel32 inputStream;
            if (fileName.EndsWith(".mp3"))
            {
                WaveStream mp3Reader = new Mp3FileReader(fileName);
                inputStream = new WaveChannel32(mp3Reader);
            }
            else
            {
                throw new InvalidOperationException("Unsupported extension");
            }
            volumeStream = inputStream;
            return volumeStream;
        }

Agora para tocar a Mp3, basta criar um evento para o botão de play e mandar tocar o arquivo:

        private void playButton_Click(object sender, EventArgs e)
        {
            waveOutDevice.Init(mainOutputStream);
            waveOutDevice.Play();
        }

Bom, eu sei que não expliquei muito sobre quase nada, apenas coloquei algum código (sendo boa parte disponibilizada na própria documentação do projeto), porém continuarei a escrever sobre o cebiPlayer a medida que eu for desenvolvendo, incluindo explicações melhores, e tudo mais.

Por hoje é só! 😉

Anúncios

Um comentário sobre “Tocar arquivos Mp3 com C# e NAudio

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s