첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
0.00MB

▶ Program.cs

using System;
using System.Text;

using NAudio.Wave;
using NAudio.Wave.Compression;

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

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

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        private static void Main()
        {
            foreach(AcmDriver driver in AcmDriver.EnumerateAcmDrivers())
            {
                StringBuilder stringBuilder = new StringBuilder();

                stringBuilder.AppendFormat("긴 명칭     : {0}\r\n", driver.LongName );
                stringBuilder.AppendFormat("짧은 명칭   : {0}\r\n", driver.ShortName);
                stringBuilder.AppendFormat("드라이버 ID : {0}\r\n", driver.DriverId );

                driver.Open();

                stringBuilder.AppendFormat("포맷 태그 목록 :\r\n");

                foreach(AcmFormatTag formatTag in driver.FormatTags)
                {
                    stringBuilder.AppendFormat("--------------------------------------------------\r\n");
                    stringBuilder.AppendFormat("포맷 태그 {0} : {1}\r\n"  , formatTag.FormatTagIndex, formatTag.FormatDescription);
                    stringBuilder.AppendFormat("   표준 포맷 수 : {0}\r\n", formatTag.StandardFormatsCount);
                    stringBuilder.AppendFormat("   지원 플래그  : {0}\r\n", formatTag.SupportFlags);
                    stringBuilder.AppendFormat("   포맷 태그 : {0}, 포맷 크기 : {1}\r\n", formatTag.FormatTag, formatTag.FormatSize);
                    stringBuilder.AppendFormat("   포맷 목록 :\r\n");

                    foreach(AcmFormat format in driver.GetFormats(formatTag))
                    {
                        stringBuilder.AppendFormat("    --------------------------------------------------\r\n");
                        stringBuilder.AppendFormat("    포맷 {0} : {1}\r\n", format.FormatIndex, format.FormatDescription);
                        stringBuilder.AppendFormat("         포맷 태그        : {0}\r\n"  , format.FormatTag);
                        stringBuilder.AppendFormat("         지원 플래그      : {0}\r\n"  , format.SupportFlags);
                        stringBuilder.AppendFormat("         웨이브 포맷      : {0}\r\n"  , format.WaveFormat.Encoding);
                        stringBuilder.AppendFormat("         샘플 비율        : {0}Hz\r\n", format.WaveFormat.SampleRate);
                        stringBuilder.AppendFormat("         채널 수          : {0}\r\n"  , format.WaveFormat.Channels);
                        stringBuilder.AppendFormat("         비트             : {0}\r\n"  , format.WaveFormat.BitsPerSample);
                        stringBuilder.AppendFormat("         블럭 정렬        : {0}\r\n"  , format.WaveFormat.BlockAlign);
                        stringBuilder.AppendFormat
                        (
                            "         초당평균바이트수 : {0} ({1:0.0} kbps)\r\n",
                            format.WaveFormat.AverageBytesPerSecond,
                            (format.WaveFormat.AverageBytesPerSecond * 8) / 1000.0
                        );
                        stringBuilder.AppendFormat("         추가 크기        : {0}\r\n"  , format.WaveFormat.ExtraSize);

                        if(format.WaveFormat is WaveFormatExtraData && format.WaveFormat.ExtraSize > 0)
                        {
                            WaveFormatExtraData extraData = (WaveFormatExtraData)format.WaveFormat;

                            stringBuilder.Append("        추가 바이트       :\r\n      ");

                            for(int i = 0; i < format.WaveFormat.ExtraSize; i++)
                            {
                                stringBuilder.AppendFormat("{0:X2} ", extraData.ExtraData[i]);
                            }

                            stringBuilder.Append("\r\n");
                        }
                    }
                }

                driver.Close();

                Console.WriteLine(stringBuilder.ToString());
            }
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요