첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

TestProject.zip
5.28MB

▶ Program.cs

using System;
using System.IO;

using NAudio.Wave;

namespace TestProject
{
    /// <summary>
    /// 프로그램
    /// </summary>
    class Program
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 사운드 재생하기 - PlaySound(filePath) 

        /// <summary>
        /// 사운드 재생하기
        /// </summary>
        /// <param name="filePath">파일 경로</param>
        private static void PlaySound(string filePath) 
        {
            MemoryStream memoryStream = new MemoryStream();

            using(FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                byte[] bufferByteArray = new byte[32768];

                int byteCountRead;

                while((byteCountRead = fileStream.Read(bufferByteArray, 0, bufferByteArray.Length)) > 0)
                {
                    memoryStream.Write(bufferByteArray, 0, byteCountRead);
                }
            }

            memoryStream.Position = 0;

            BlockAlignReductionStream blockAlignReductionStream;

            if(filePath.EndsWith(".mp3"))
            {
                WaveStream waveStream = WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(memoryStream));

                blockAlignReductionStream = new BlockAlignReductionStream(waveStream);
            }
            else if(filePath.EndsWith(".wav"))
            {
                WaveStream waveStream = new WaveChannel32(new WaveFileReader(memoryStream));

                blockAlignReductionStream = new BlockAlignReductionStream(waveStream);
            }
            else
            {
                throw new InvalidOperationException("Not a correct audio file type");
            }
        
            DirectSoundOut directSoundOut = new DirectSoundOut();

            directSoundOut.Init(blockAlignReductionStream);

            directSoundOut.Play();
        }

        #endregion
        #region 프로그램 시작하기 - Main()

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        private static void Main()
        {
            PlaySound("sample.mp3");

            Console.WriteLine("프로그램을 종료하기 위해서 아무 키나 눌러 주시기 바랍니다.");

            Console.ReadKey(true);
        }

        #endregion
    }
}
728x90
반응형
그리드형
Posted by 사용자 icodebroker

댓글을 달아 주세요