달나라 노트

C# : WindowsMediaPlayer (C# mp3 재생, mp3) 본문

C#/C#

C# : WindowsMediaPlayer (C# mp3 재생, mp3)

CosmosProject 2022. 4. 20. 21:09
728x90
반응형

 

 

 

C#에서 mp3 파일을 재생하는 방법을 보겠습니다.

 

먼저 저는 아래의 경로에 mp3 파일을 준비해뒀습니다.

C:\Users\Public\sample.mp3

 

.mp3 파일을 재생시키기 위해서 윈도우의 기본 미디어 플레이어인 WindowsMediaPlayer 기능을 이용할겁니다.

이것은 기본적인 C# 코드에서 적용되지 않기 때문에 참조를 추가해야합니다.

 

프로젝트 -> 참조 추가 메뉴를 클릭합니다.

 

 

 

그리고 참조 관리자 창에서 왼쪽 메뉴 중 COM을 클릭합니다.

그러면 Windows Media Player라는 것이 보이는데 이것을 체크하고 확인을 눌러줍니다.

 

Windows Media Player가 2개가 보이는데 그냥 둘 중 파일 버전이 높은 것을 추가했습니다.

 

 

 

 

using System;
using WMPLib;

class MyProgram
{
    public static void Main()
    {
        WindowsMediaPlayer wmp = new WindowsMediaPlayer();
        wmp.URL = "C:\\Users\\Public\\sample.mp3";
        wmp.controls.play();
    }
}

 

기본적으로 mp3 재생은 위같이 WindowsMediaPlayer() class를 이용하여 진행됩니다.

 

- using WMPLib;

Windows Media Player의 기능을 사용하기 위한 라이브러리를 using으로 import합니다.

이 기능은 아까 참조로 추가했던 Windows Media Player의 기능입니다.

 

 

- WindowsMediaPlayer wmp = new WindowsMediaPlayer();

WindowsMediaPlayer() class를 이용하여 wmp 객체를 만듭니다.

여기서 WindowsMediaPlayer는 WMPLib.WindowsMediaPlayer에 존재합니다.

 

 

- wmp.URL = "C:\\Users\\Public\\sample.mp3";

URL 속성에 mp3 파일이 있는 경로를 지정해줍니다.

 

- wmp.controls.play();

controls의 play() method는 mp3 파일을 실행시켜줍니다.

 

이것만 알면 mp3 파일을 재생시킬 수 있습니다.

 

 

근데 이상한건 위 코드를 실행시켜봐도 소리는 나오지 않습니다.

이것은 간단하게 해결 가능한데 Form class를 이용해 window를 하나 띄워주면 됩니다.

 

using System;
using System.Windows.Forms;
using WMPLib;

class MyProgram
{
    public static void Main()
    {
        Form fm = new Form();
        fm.Width = 500;
        fm.Height = 300;


        WindowsMediaPlayer wmp = new WindowsMediaPlayer();
        wmp.URL = "C:\\Users\\Public\\sample.mp3";
        wmp.controls.play();


        Application.Run(fm);
    }
}

 

단순히 Window만 띄워줬을 뿐인데 mp3 파일이 재생됩니다.

WindowsMediaPlayer는 Form의 실행과 함께 사용되어야하나봅니다.

 

 

 

 

 

 

이제 Form과 Button을 추가해서 재생, 일시 정지, 정지 기능을 가진 간단한 mp3 player를 구성해 보겠습니다.

아래 코드를 봅시다.

 

using System;
using System.Windows.Forms;
using WMPLib;

class MyProgram
{
    public static void Main()
    {
        // Constants
        int btn_width = 100;
        int btn_height = 30;
        // Constants


        Form fm = new Form();
        fm.Width = 500;
        fm.Height = 300;


        WindowsMediaPlayer wmp = new WindowsMediaPlayer();
        wmp.URL = "C:\\Users\\Public\\sample.mp3";
        wmp.controls.stop();

        Button btn_start = new Button();
        btn_start.Parent = fm;
        btn_start.Width = btn_width;
        btn_start.Height = btn_height;
        btn_start.Text = "Start";

        Button btn_pause = new Button();
        btn_pause.Parent = fm;
        btn_pause.Width = btn_width;
        btn_pause.Height = btn_height;
        btn_pause.Text = "Pause";
        btn_pause.Left = btn_start.Right;

        Button btn_stop = new Button();
        btn_stop.Parent = fm;
        btn_stop.Width = btn_width;
        btn_stop.Height = btn_height;
        btn_stop.Text = "Stop";
        btn_stop.Left = btn_pause.Right;


        void music_start(object sender, EventArgs e)
        {
            wmp.controls.play();
        }
        btn_start.Click += new EventHandler(music_start);

        void music_pause(object sender, EventArgs e)
        {
            wmp.controls.pause();
        }
        btn_pause.Click += new EventHandler(music_pause);

        void music_stop(object sender, EventArgs e)
        {
            wmp.controls.stop();
        }
        btn_stop.Click += new EventHandler(music_stop);


        Application.Run(fm);
    }
}

 

위 코드를 실행하면 Start, Pause, Stop 3개의 버튼이 있는 Window가 뜹니다.

Start 버튼을 누르면 노래가 재생됩니다.

Pause 버튼을 누르면 노래가 멈춥니다. 그리고 다시 Start 버튼을 누르면 노래가 멈췄던 부분부터 다시 시작됩니다.

Stop 버튼을 누르면 노래가 아예 정지됩니다. 그리고 다시 Start 버튼을 누르면 노래가 처음부터 다시 재생됩니다.

 

- wmp.controls.play();

- wmp.controls.pause();

- wmp.controls.stop();

여기서 볼 새로운 controls는 위와 같습니다.

play는 재생

pause는 일시정지

stop은 정지

를 의미합니다.

 

 

 

        WindowsMediaPlayer wmp = new WindowsMediaPlayer();
        wmp.URL = "C:\\Users\\Public\\sample.mp3";
        wmp.controls.stop();

 

근데 한 가지 특이한 점이 있습니다.

WindowMediaPlayer() class를 이용하여 객체를 생성하고 URL 속성을 mp3 파일이 있는 경로로 지정해주는 부분입니다.

여기까지는 이해가가는데 URL 지정 후 wmp.controls.stop() 을 적어주었습니다.

이걸 굳이 왜 적어줬을까요?

 

한번 위 코드에서 wmp.controls.stop(); 부분을 지우고 실행해보면 Window가 켜지고 Start 버튼을 누르지도 않았는데 노래가 재생됩니다.

뭔가 Windows Media Player객체를 생성하고 URL를 주었을 때 자동으로 mp3를 재생하는 것으로 추측됩니다.

 

이렇게 제 의도와는 다르게 노래가 재생되는 것을 막기 위해 WindowsMediaPlayer 객체 생성 후 stop() method를 이용해서 노래를 한 번 멈춰주는 것입니다.

 

 

 

 

 

 

728x90
반응형
Comments