[C#/NAUDIO/.NET5] AcmDriver 클래스 : EnumerateAcmDrivers 정적 메소드를 사용해 ACM 드라이버 열거하기
C#/NAudio 2021. 12. 27. 21:47728x90
반응형
728x170
▶ 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
반응형
그리드형(광고전용)
댓글을 달아 주세요