C# 솔루션에 Windows 미디어 플레이어 컨트롤 포함

[이 페이지와 연결된 기능인 Windows 미디어 플레이어 SDK는 레거시 기능입니다. MediaPlayer로 대체되었습니다. MediaPlayer는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 Windows 미디어 플레이어 SDK 대신 MediaPlayer를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

C# 애플리케이션에서 Windows 미디어 플레이어 기능을 사용하려면 먼저 Microsoft Visual Studio에서 Windows 미디어 플레이어 컨트롤 사용에 설명된 대로 구성 요소를 양식에 추가합니다.

다음 섹션에서는 비디오를 재생하고 사용자 지정 재생 및 중지 단추를 사용하는 애플리케이션을 만드는 방법을 설명합니다.

비디오 창 추가

양식에 Windows 미디어 플레이어 ActiveX 컨트롤을 추가합니다. 컨트롤의 크기를 조정한 다음 비디오 창을 표시할 위치에 배치합니다.

Windows 미디어 플레이어 컨트롤을 선택한 다음 uiMode 속성을 "none"으로 변경합니다. 이 설정은 UI 컨트롤을 숨깁니다. 사용자가 비디오를 재생하면 창에 표시됩니다. 오디오 전용 콘텐츠의 경우 시각화가 표시됩니다.

두 개의 단추 추가 및 폼 조정

이제 양식에 두 개의 단추를 추가합니다. 첫 번째 단추를 선택하고 Text 속성을 "재생"으로 변경합니다. 두 번째 단추를 선택하고 Text 속성을 "중지"로 변경합니다.

플레이 코드 추가

재생 단추를 두 번 클릭하여 코드 창을 표시합니다. C#에서는 다음 코드가 표시됩니다.

private void button1_Click(object sender, System.EventArgs e)
{

}

두 중괄호 사이에 다음 줄을 추가합니다.

axWindowsMediaPlayer1.URL = @"c:\mediafile.wmv";

앞의 코드 예제에서 "axWindowsMediaPlayer1"은 Windows 미디어 플레이어 컨트롤의 기본 이름이며, "c:\mediafile.wmv"는 재생하려는 미디어 항목의 이름에 대한 자리 표시자입니다. 유효한 모든 파일 경로를 사용할 수 있습니다. @ 기호는 컴파일러에 백슬라이시를 이스케이프 문자로 해석하지 않도록 지시합니다.

Windows 미디어 플레이어 SDK의 디지털 미디어 콘텐츠를 Windows 미디어 플레이어 라이브러리에 추가한 경우 이 코드를 대신 사용할 수 있습니다.

axWindowsMediaPlayer1.currentPlaylist = axWindowsMediaPlayer1.mediaCollection.getByName("mediafile");

autoStart 속성은 기본적으로 true이므로 currentPlaylist 또는 URL 속성을 설정할 때 Windows 미디어 플레이어 재생을 시작합니다.

중지 코드 추가

중지 단추를 두 번 클릭하여 코드 창을 표시합니다. C#에서는 다음 코드가 표시됩니다.

private void button2_Click(object sender, System.EventArgs e)
{

}

두 중괄호 사이에 다음 줄을 추가합니다.

axWindowsMediaPlayer1.Ctlcontrols.stop();

참고

Windows 미디어 플레이어 컨트롤의 관리 코드 래퍼는 Controls 개체를 Ctlcontrols로 노출하여 System.Windows.Forms.Control에서 상속된 Controls 속성과의 충돌을 방지합니다.

 

오류 처리 추가

Windows 미디어 플레이어 컨트롤은 잘못된 URL과 같은 오류가 발생할 때 예외를 발생시키지 않습니다. 대신 이벤트 신호를 보냅니다. 애플리케이션은 플레이어가 보낸 오류 이벤트를 처리해야 합니다.

이벤트 처리기를 만들려면 먼저 Windows 미디어 플레이어 컨트롤에 대한 속성 창 엽니다. 이벤트 목록에서 MediaError를 두 번 클릭합니다. 다음 코드가 표시됩니다.

private void Player_MediaError(object sender, _WMPOCXEvents_MediaErrorEvent e)
{
}

다음 코드를 메서드에 삽입하여 최소한의 오류 처리 기능을 제공할 수 있습니다. 오류에 대한 정보는 _WMPOCXEvents_MediaErrorEvent 인수에서 검색할 수 있습니다.

try
// If the Player encounters a corrupt or missing file, 
// show the hexadecimal error code and URL.
{
    IWMPMedia2 errSource = e.pMediaObject as IWMPMedia2;
    IWMPErrorItem errorItem = errSource.Error;
    MessageBox.Show("Error " + errorItem.errorCode.ToString("X") 
                    + " in " + errSource.sourceURL);
}
catch(InvalidCastException)
// In case pMediaObject is not an IWMPMedia item.
{
    MessageBox.Show("Error.");
} 

.NET Framework 솔루션에 Windows 미디어 플레이어 컨트롤 포함