C#의 Windows Form 애플리케이션에서 MP3 파일 재생

Muhammad Zeeshan 2023년10월12일
  1. C# Windows Form 응용 프로그램을 사용하여 간단한 MP3 플레이어 만들기
  2. DirectShow 기능을 사용하여 C#에서 Mp3 Windows Form 애플리케이션 만들기
C#의 Windows Form 애플리케이션에서 MP3 파일 재생

이 게시물은 C# Windows 양식 응용 프로그램과 Windows Media Player를 사용하여 간단한 C# mp3 플레이어를 빌드하는 방법을 보여줍니다.

C# Windows Form 응용 프로그램을 사용하여 간단한 MP3 플레이어 만들기

먼저 다음 단계에 따라 새 Windows 양식을 만듭니다.

  • Microsoft Visual Studio 2017 또는 업데이트된 버전을 엽니다.
  • 왼쪽 상단에서 파일을 찾아 새 프로젝트를 엽니다.
  • 그런 다음 Windows Forms Application을 선택하고 이름을 지정한 다음 OK를 클릭합니다.
  • 확인을 클릭하면 새 빈 창이 나타납니다.

이제 양식을 디자인하겠습니다.

Windows 양식을 만든 후 디자인해 보겠습니다. 도구 상자에 Windows Media Player 항목이 없으면 다음 단계를 따르십시오.

  • 구성 요소를 마우스 오른쪽 버튼으로 클릭하고 도구 상자 영역에서 항목 선택을 클릭하면 새 창이 나타납니다.
  • COM 구성 요소 탭을 선택하고 목록에서 Windows Media Player 항목을 클릭합니다.

항목 추가:

  • Windows Media Player를 양식에 끌어다 놓고 위치를 조정합니다.
  • ListBox를 추가하고 이름을 Audiolist로 지정하여 mp3 파일 목록을 선택합니다.
  • 이제 도구 상자에서 버튼을 추가하고 이름을 ChooseButton으로 지정합니다. 버튼을 사용하여 재생 목록을 선택하고 있으며 목록 상자에서 하나를 선택하면 Windows Media Player에서 재생할 오디오 파일의 재생 목록이 목록 상자에 표시됩니다.

다음 특정 단계에 따라 MP3 플레이어 Windows 양식을 만들 수 있습니다.

필요한 라이브러리:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

먼저 filefilepath라는 두 개의 문자열 배열 유형 전역 변수를 초기화합니다.

string[] file, filepath;

이제 스토리지에서 파일을 선택하기 위한 대화 상자를 시작하는 데 사용할 fileOpen이라는 OpenFileDialog 유형 변수를 만듭니다.

OpenFileDialog fileOpen = new OpenFileDialog();

그런 다음 조건을 적용하고 다음을 매개변수로 전달합니다.

if (fileOpen.ShowDialog() == System.Windows.Forms.DialogResult.OK)

이 표현식이 참이면 파일 이름이 file 변수에 저장됩니다.

file = fileOpen.SafeFileNames;

아래 명령을 사용하여 filepath라는 경로 변수에 파일의 전체 경로를 저장합니다.

filepath = fileOpen.FileNames;

그런 다음 for 루프를 사용하여 ListBox에 오디오 파일을 추가합니다.

for (int i = 0; i < file.Length; i++) {
  Audiolist.Items.Add(file[i]);
}

그런 다음 ListBox를 더블 클릭하여 클릭 이벤트를 생성합니다.

private void Audiolist_SelectedIndexChanged(object sender, EventArgs e) {}

그런 다음 이 코드를 Audiolist 본문에 붙여넣습니다. 이 코드는 ListBox에 지정한 이름에 관계없이 목록 또는 해당 파일의 경로를 Windows Media Player로 전송합니다.

private void Audiolist_SelectedIndexChanged(object sender, EventArgs e) {
  axWindowsMediaPlayer1.URL = filepath[Audiolist.SelectedIndex];
}

C# Windows 양식 응용 프로그램과 Windows Media Player를 사용하여 간단한 C# mp3 플레이어를 빌드하기 위한 소스 코드는 다음과 같습니다.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Mp3Player {
  public partial class Form1 : Form {
    string[] file, filepath;
    public Form1() {
      InitializeComponent();
    }
    private void ChooseButton_Click(object sender, EventArgs e) {
      OpenFileDialog fileOpen = new OpenFileDialog();
      if (fileOpen.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
        file = fileOpen.SafeFileNames;
        filepath = fileOpen.FileNames;
        for (int i = 0; i < file.Length; i++) {
          Audiolist.Items.Add(file[i]);
        }
      }
    }
    private void Audiolist_SelectedIndexChanged(object sender, EventArgs e) {
      axWindowsMediaPlayer1.URL = filepath[Audiolist.SelectedIndex];
    }
  }
}

DirectShow 기능을 사용하여 C#에서 Mp3 Windows Form 애플리케이션 만들기

DirectShow 기능을 사용하여 Windows Media Player로 Mp3 Windows 양식 응용 프로그램을 만듭니다.

Tlbimp는 COM 유형 라이브러리의 유형 정의를 공통 언어에 대한 실행 가능한 어셈블리의 유사한 정의로 변환합니다.

Tlbimp.exe의 출력은 원래 형식 라이브러리에 선언된 형식에 대한 런타임 메타데이터가 포함된 이진 파일(어셈블리)입니다.

QuartzTypeLib.dll을 생성하려면 다음 단계를 따르십시오.

  • 먼저 tlbimp 도구를 실행합니다.
  • TlbImp.exe %windir%\system32\quartz.dll 실행 (이 위치나 디렉터리는 장치마다 다를 수 있습니다.)
  • 출력은 QuartzTypeLib.dll이 됩니다.
  • Solution Explorer에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭한 다음 Add 메뉴 항목을 선택한 다음 Reference를 선택합니다. COM 참조로 프로젝트에 QuartzTypeLib.dll을 추가합니다.
  • 프로젝트에서 References를 펼치고 QuartzTypeLib 참조를 찾으십시오. Embed Interop Types를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하여 false로 변경합니다.
  • 프로젝트 설정에서 32비트 선호 설정을 비활성화합니다. 예외를 가져오지 않으려면 빌드 탭을 사용하세요.

이 소스 코드를 사용하여 Mp3 Windows 양식 응용 프로그램을 만들 수 있습니다.

using QuartzTypeLib;

public sealed class DirectShowPlayer {
  private FilgraphManager fgm;
  public void Play(string filepath) {
    FilgraphManager fgm = new FilgraphManager();
    fgm.RenderFile(filepath);
    fgm.Run();
  }
  public void Stop() {
    fgm?.Stop();
  }
}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn