언어 정리/c#

c# Console 음악 출력 방법 (.wav, .mp3)

rimugiri 2024. 1. 16. 22:40
728x90

1. using System.Media;

이 라이브러리를 사용 하면 .wav파일을 콘솔 상에서 재생할 수 있다.
새로운 쓰레드를 자동으로 생성해 주어 그 쓰레드에서 작동하여 아래에서 자신이 하고싶은 동작을 구현 할 수 있다.

SoundPlayer soundPlayer = new SoundPlayer("FIlePath.wav");
// 음악 반복 재생
soundPlayer.PlayLooping();

/*
    todo
/*

// 음악 종료
soundPlayer.Stop();
단점 : 자체적으로 볼륨을 조절할 수 없다

2. NAudio.Wave 사용

Mp3 파일을 통해 음악을 재생할 수 있다.
음악의 볼륨을 코드를 통해 제어 할 수 있다.

  1. 클래스 선언
  class Mp3Player
  {
      string audioFilePath;

      AudioFileReader audioFile;
      WaveOutEvent outputDevice;
      public Mp3Player(string filePath)
      {
          audioFilePath = filePath;
          audioFile = new AudioFileReader(audioFilePath);
          outputDevice = new WaveOutEvent();

          // 초기 필수
          outputDevice.Init(audioFile);
      }
      public void Play()
      {
          outputDevice.Play();
      }
      public void PlayLooping()
      {
          outputDevice.PlaybackStopped += PlaybackStoppedHandler;
          outputDevice.Play();
      }
      public void Stop()
      {
          outputDevice.PlaybackStopped -= PlaybackStoppedHandler;
          outputDevice.Stop();
      }
      public void SetVolume(float volume)
      {
          outputDevice.Volume = volume;
      }
      public void Dispose()
      {
          outputDevice.Dispose();
          audioFile.Dispose();
      }
      public void PlaybackStoppedHandler(object sender, StoppedEventArgs e)
      {

          // 오디오 파일의 위치를 처음으로 재설정
          audioFile.Position = 0;
          outputDevice.Play();
      }
  }
  1. 사용 예제
static void Main(string[] args)
{
    // 오디오 파일 경로
    string audioFilePath = "FilePath.mp3";

    Mp3Player player = new Mp3Player(audioFilePath);

    // 음악 반복 재생
    player.PlayLooping();

    // 음악 한번 재생
    player.Play();

    // volume 조절
    player.SetVolume(0.5f);

    // 음악 종료
    player.Stop();

    // 리소스 정리
    player.Dispose();
}

대체로 많은 사이트에서 wav 파일보단 mp3 파일을 제공해 주고 mp3 을 wav로 변환하는데 용량이 커지므로
NAudio사용법을 인지해 두는것이 좋아 보인다.

728x90