🔎 유용한 정보
1. 강의 개요
이번 강의에서는 Windows Forms를 활용해 오디오 및 비디오 파일 재생이 가능한
멀티미디어 플레이어를 제작합니다.
사용자는 음악 파일이나 동영상 파일을 로드하고, 재생, 일시정지, 정지 등의
기본적인 컨트롤 기능을 사용할 수 있습니다.
.NET에서 제공하는 Windows Media Player 컨트롤을 활용하여
직관적이고 사용하기 쉬운 UI를 구현합니다.
2. 학습 목표
- Windows Media Player 컨트롤을 활용해 오디오 및 비디오 재생
- 파일 로드 및 재생, 일시정지, 정지 기능 구현
- 슬라이더(TrackBar)를 사용해 재생 위치 컨트롤 구현
- 기본적인 멀티미디어 플레이어 UI 제작
3. 기능 요구사항
필수 기능
1️⃣ 파일 로드 및 재생:
- 오디오 또는 비디오 파일을 선택하여 재생
2️⃣ 재생 컨트롤:
- 재생, 일시정지, 정지 기능 제공
3️⃣ 재생 위치 조정:
- TrackBar를 사용해 재생 위치 이동
4️⃣ UI 구성 및 동작:
- 재생 시간 표시 및 사용자 친화적인 인터페이스 구성
4. 실습: 멀티미디어 플레이어 제작
1️⃣ 폼 구성
- 폼(Form) 이름: Form1
- 컨트롤 배치:
컨트롤 타입 이름 위치 크기
AxWindowsMediaPlayer | mediaPlayer | 폼 상단 전체 | (600 x 400) |
Button | btnPlay | 폼 하단 왼쪽 | (100 x 30) |
Button | btnPause | 폼 하단 중앙 | (100 x 30) |
Button | btnStop | 폼 하단 오른쪽 | (100 x 30) |
TrackBar | trackBar | 폼 하단 전체 아래 | (600 x 30) |
📌 폼 디자인 예시:
--------------------------------------------------
| [AxWindowsMediaPlayer - 동영상 화면] |
--------------------------------------------------
| [Play 버튼] [Pause 버튼] [Stop 버튼] |
--------------------------------------------------
| [TrackBar - 재생 위치] |
--------------------------------------------------
2️⃣ 코드 작성
(1) Windows Media Player 컨트롤 추가
- Windows Media Player 라이브러리 추가
- Visual Studio의 **도구 상자(Toolbox)**에서 "Windows Media Player"를 추가합니다.
- Windows Media Player 컨트롤을 추가하려면 COM Components에서 AxWindowsMediaPlayer를 선택하세요.
- 폼에 컨트롤 배치
- AxWindowsMediaPlayer 컨트롤을 폼에 드래그하여 배치하고, 이름을 mediaPlayer로 변경합니다.
(2) 멀티미디어 재생 코드 작성
using System;
using System.Windows.Forms;
namespace WindowsFormsApp_MediaPlayer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 파일 로드 및 재생
private void btnPlay_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Filter = "멀티미디어 파일 (*.mp3;*.mp4;*.avi;*.wmv)|*.mp3;*.mp4;*.avi;*.wmv";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
mediaPlayer.URL = openFileDialog.FileName;
mediaPlayer.Ctlcontrols.play();
}
}
}
// 일시정지
private void btnPause_Click(object sender, EventArgs e)
{
if (mediaPlayer.playState == WMPLib.WMPPlayState.wmppsPlaying)
{
mediaPlayer.Ctlcontrols.pause();
}
}
// 정지
private void btnStop_Click(object sender, EventArgs e)
{
mediaPlayer.Ctlcontrols.stop();
}
}
}
(3) 재생 위치 조정 기능
// TrackBar로 재생 위치 제어
private void trackBar_Scroll(object sender, EventArgs e)
{
if (mediaPlayer.playState == WMPLib.WMPPlayState.wmppsPlaying ||
mediaPlayer.playState == WMPLib.WMPPlayState.wmppsPaused)
{
mediaPlayer.Ctlcontrols.currentPosition = trackBar.Value;
}
}
// TrackBar 업데이트
private void timer_Tick(object sender, EventArgs e)
{
if (mediaPlayer.playState == WMPLib.WMPPlayState.wmppsPlaying)
{
trackBar.Maximum = (int)mediaPlayer.currentMedia.duration;
trackBar.Value = (int)mediaPlayer.Ctlcontrols.currentPosition;
}
}
(4) Designer 코드
private void InitializeComponent()
{
this.mediaPlayer = new AxWMPLib.AxWindowsMediaPlayer();
this.btnPlay = new Button();
this.btnPause = new Button();
this.btnStop = new Button();
this.trackBar = new TrackBar();
this.timer = new Timer();
// AxWindowsMediaPlayer 설정
this.mediaPlayer.Location = new System.Drawing.Point(10, 10);
this.mediaPlayer.Size = new System.Drawing.Size(600, 400);
// Play Button 설정
this.btnPlay.Location = new System.Drawing.Point(10, 420);
this.btnPlay.Size = new System.Drawing.Size(100, 30);
this.btnPlay.Text = "Play";
this.btnPlay.Click += new EventHandler(this.btnPlay_Click);
// Pause Button 설정
this.btnPause.Location = new System.Drawing.Point(120, 420);
this.btnPause.Size = new System.Drawing.Size(100, 30);
this.btnPause.Text = "Pause";
this.btnPause.Click += new EventHandler(this.btnPause_Click);
// Stop Button 설정
this.btnStop.Location = new System.Drawing.Point(230, 420);
this.btnStop.Size = new System.Drawing.Size(100, 30);
this.btnStop.Text = "Stop";
this.btnStop.Click += new EventHandler(this.btnStop_Click);
// TrackBar 설정
this.trackBar.Location = new System.Drawing.Point(10, 460);
this.trackBar.Size = new System.Drawing.Size(600, 30);
this.trackBar.Scroll += new EventHandler(this.trackBar_Scroll);
// Timer 설정
this.timer.Interval = 1000; // 1초마다 업데이트
this.timer.Tick += new EventHandler(this.timer_Tick);
this.timer.Start();
// Form 설정
this.ClientSize = new System.Drawing.Size(640, 500);
this.Controls.Add(this.mediaPlayer);
this.Controls.Add(this.btnPlay);
this.Controls.Add(this.btnPause);
this.Controls.Add(this.btnStop);
this.Controls.Add(this.trackBar);
this.Text = "멀티미디어 플레이어";
}
3️⃣ 실행 결과
1️⃣ 파일 로드 및 재생
- "Play" 버튼 클릭 → OpenFileDialog에서 파일 선택 → 멀티미디어 파일 재생
2️⃣ 재생 컨트롤
- "Pause" 버튼 클릭 → 재생 중인 파일 일시정지
- "Stop" 버튼 클릭 → 재생 중인 파일 정지
3️⃣ 재생 위치 조정
- TrackBar를 드래그하여 재생 위치 이동
5. 주요 개념 요약
- AxWindowsMediaPlayer: Windows Media Player 컨트롤로 멀티미디어 재생
- TrackBar: 재생 위치 조정 컨트롤
- Timer: 재생 상태를 주기적으로 업데이트
- OpenFileDialog: 파일 선택 UI 제공
📌 #CSharp #WindowsForms #MediaPlayer #멀티미디어 #오디오재생 #비디오재생
'📁 [4] 개발자 정보 & 코드 노트 > C#' 카테고리의 다른 글
C# Windows Forms 강의 90편: Excel 파일 다루기 - NPOI 라이브러리를 활용한 데이터 읽기 및 쓰기 (0) | 2025.05.04 |
---|---|
C# Windows Forms 강의 89편: 그래프 그리기 애플리케이션 제작 - 실시간 데이터 시각화 (0) | 2025.05.03 |
C# Windows Forms 강의 87편: 실시간 채팅 애플리케이션 제작 - TCP 소켓 통신 활용 (0) | 2025.05.01 |
C# Windows Forms 강의 85편: 데이터베이스 연동 애플리케이션 - SQL Server를 활용한 CRUD 구현 (0) | 2025.04.30 |
C# Windows Forms 강의 84편: 파일 관리 애플리케이션 제작 - 탐색기 및 파일 검색 기능 구현 (0) | 2025.04.29 |
🔎 유용한 정보