728x90
NAudio를 사용한 솔루션
NAudio 1.3의 도움으로 다음을 수행할 수 있다.
- URL에서 MemoryStream으로 MP3 파일 로드
- MP3 데이터를 완전히 로드한 후 파형 데이터로 변환
- NAudio의 WaveOut 클래스를 사용하여 파형 데이터 재생
반 장전된 MP3 파일까지 재생할 수 있었으면 좋았을 텐데, NAudio 라이브러리 설계 때문에 불가능해 보인다.
그리고 이것이 그 일을 할 수 있는 기능이다.
public static void PlayMp3FromUrl(string url)
{
//url에서 stream으로 받아와서 buffer에 저장
using (Stream ms = new MemoryStream())
{
using (Stream stream = WebRequest.Create(url)
.GetResponse().GetResponseStream())
{
byte[] buffer = new byte[32768];
int read;
while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
}
//stream데이터를 처음부터 끝날때까지 play
ms.Position = 0;
using (WaveStream blockAlignedStream =
new BlockAlignReductionStream(
WaveFormatConversionStream.CreatePcmStream(
new Mp3FileReader(ms))))
{
using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
{
waveOut.Init(blockAlignedStream);
waveOut.Play();
while (waveOut.PlaybackState == PlaybackState.Playing )
{
System.Threading.Thread.Sleep(100);
}
}
}
}
}
출처 : https://stackoverflow.com/questions/184683/play-audio-from-a-stream-using-c-sharp
'개발언어 > C#' 카테고리의 다른 글
[C#] Using 사용 (0) | 2021.10.18 |
---|---|
[C#] using문 이해 및 사용방법 (0) | 2021.10.18 |
[C#]ListView – Columns 컬럼 동적 크기 조정 (0) | 2021.10.12 |
[C#]Modbus PLC Simulator(TCP 전용 시뮬레이터 nmodbus 라이브러리) (0) | 2021.09.23 |
[C#/API] Gloobal Hotkey(핫키) 등록하기 (RegisterHotKey, UnregisterHotKey) (0) | 2021.09.17 |