Microsoft MVP성태의 닷넷 이야기
.NET Framework: 291. .NET에서 WAV, MP3 파일 재생하는 방법 [링크 복사], [링크+제목 복사],
조회: 42720
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
(연관된 글이 2개 있습니다.)

.NET에서 WAV, MP3 파일 재생하는 방법

사실 웹 검색을 하면 금방 나오긴 하지만, 가끔 이런 유의 문제에 대해서 궁금해하시는 분들이 계셔서 이참에 정리를 해봅니다.

검색해 보면, 다음과 같이 적절한 답을 찾아낼 수 있습니다.

Playing mp3 in C#
; http://www.daniweb.com/software-development/csharp/threads/292695

우선, wav 파일의 경우에는 닷넷에서 이미 SoundPlayer라는 타입으로 기능을 제공해 주고 있으니 자연스럽게 해결되는군요. ^^

string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows),
    "Media", "chimes.wav");
SoundPlayer snd = new SoundPlayer();
snd.SoundLocation = path;
snd.Play();

아쉽게도 mp3 연주를 담당하는 클래스는 BCL에서 제공되지 않습니다. 대신, 대부분의 윈도우에 설치된 윈도우 미디어 플레이어를 이용하면 이 문제를 해결할 수 있습니다. 이를 위해 다음과 같이 "Windows Media Player"를 "COM" 탭으로부터 참조 추가하고,

wav_mp3_play_1.png

Visual Studio 2010 / .NET 4.0의 경우에는 아래와 같이 "Embed Interop Types" 옵션을 "False"로 변경해 줍니다.

wav_mp3_play_2.png

게임 끝났군요. 그 후에는 단순히 아래와 같은 식으로 코딩해 주면 됩니다.

MediaPlayer.MediaPlayerClass _player;
private void button2_Click(object sender, EventArgs e)
{
    _player = new MediaPlayer.MediaPlayerClass();
    _player.FileName = @"D:\music\Suddenly.mp3";
    _player.Play();
}

(그나저나, 위의 "Suddenly"라는 노래는 누구의 곡을 의미하는 걸까요? ^^)

첨부된 파일은 위의 코드를 포함한 예제 프로젝트입니다.

참고로, 위의 프로젝트에서 Interop DLL이 생성되는데 이를 없애는 방법도 있음을 잊지 마시고. ^^

레지스트리 등록 및 Interop DLL 없이 COM 개체 사용하는 방법
; https://www.sysnet.pe.kr/2/0/1180

부가적으로, 윈도우 폰의 경우에는 MediaElement를 이용하면 해결됩니다.

<MediaElement Source="http://www.SomeWebSite.com/CoolSong.mp3" />

이에 대해서는 다음의 글에서 아주 자세하게 설명해 주고 있으니 생략합니다. ^^

Playing Audio Files in Windows Phone
; https://learn.microsoft.com/en-us/archive/msdn-magazine/2012/january/touch-and-go-playing-audio-files-in-windows-phone




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 3/31/2023]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2022-10-03 03시04분
Rise-Software/Rise-Media-Player
 - One media player for everything you own or stream; whether it's music or videos, online or offline Rise Media Player does it all. And it's beautiful and native with the latest version of WinUI.
; https://github.com/Rise-Software/Rise-Media-Player
정성태

... [196]  197  198 
NoWriterDateCnt.TitleFile(s)
73정성태11/14/200518554.NET Framework: 19. VS.NET 2005 Team Foundation Server 설치오류 - 26204 예외
72정성태12/26/200420051.NET Framework: 18. .NET Framework 2.0 Beta 설치 후에 Windows SharePoint Service 오류 [1]
136정성태3/31/200520078    답변글 .NET Framework: 18.1. Windows Sharepoint Services 를 설치한 이후 ASP.NET 오류 문제
71정성태12/26/200418168VS.NET IDE: 11. SQL Server 2005 Beta 2 를 네트워크 드라이브로부터 설치시 오류
70정성태12/26/200421094VS.NET IDE: 10. WSS 설치 후 localhost 접근 보안 오류
69정성태12/5/200418181VS.NET IDE: 9. 다른 컴퓨터(방화벽 설치)에 설치된 SQL Server에 통합 인증을 할 때 필요한 포트
68정성태10/31/200423026.NET Framework: 17. Win32_NTLogEvent를 c#에서 wmi 쿼리할 때..에러..
67정성태10/22/200420260COM 개체 관련: 12. Microsoft.XMLHTTP 개체에서 Microsoft.XMLDOM 개체를 전송할 때 charset 지정 문제?
66정성태10/16/200421492.NET Framework: 16. [닷넷 리모팅] 프록시가 죽은 것을 원격 개체가 알 수 있는 방법은?
65정성태10/16/200420440VS.NET IDE: 8. Windows 가상 메모리 사용 해제
64정성태10/3/200424158.NET Framework: 15. ASP.NET에서 .NET COM+ 개체 등록 시 "Local System"이어야 하는 이유.
63정성태10/3/200424234.NET Framework: 14. Response.Cookies.Clear는 기존 설정된 Cookie 헤더를 삭제하는 것이 아닙니다.
62정성태10/3/200423347기타: 7. DB 트랜잭션에서 Lock이 걸릴 수 있는 전형적인 예.
61정성태10/3/200422784.NET Framework: 13. Main 메서드에 붙은 STAThread 의미
60정성태10/3/200421557.NET Framework: 12. IDispatch::GetIDsOfNames 역변환 메서드 작성 힌트 ( DISPID 로 메서드 이름 알아내는 것 )
58정성태10/3/200424691.NET Framework: 11. HttpContext의 간략이해
56정성태10/3/200421083.NET Framework: 10. [.NET 리모팅] 원격개체를 호출한 클라이언트의 연결이 유효한지 판단하는 방법.
55정성태10/3/200421870COM 개체 관련: 11. 내가 생각해 보는 COM의 현재 위치
54정성태8/30/200427484VC++: 10. 내가 생각해 보는 MFC OCX와 ATL DLL에 선택 기준
53정성태11/20/200526808VC++: 9. CFtpFileFind/FtpFileFind가 일부 Unix FTP 서버에서 목록을 제대로 못 가져오는 문제
184정성태11/23/200520589    답변글 VC++: 9.1. FTP 관련 토픽파일 다운로드1
51정성태6/24/200425667VC++: 8. BSTR 메모리 할당 및 해제(MSDN Library 발췌) [1]
50정성태6/16/200418878기타: 6. 1차 데스크톱 컴퓨터 사양
49정성태6/16/200419290기타: 5. 53만 원대 Second PC 마련. ^^
48정성태3/2/200421180.NET Framework: 9. 윈도우즈 발전사를 모아 둔 사이트. [1]
47정성태11/14/200519603VS.NET IDE: 7. 한글 OS에서 Internet Explorer 6.0 with SP1의 UI 언어 바꾸는 방법
... [196]  197  198