다음을 통해 공유


PlayToReceiver 클래스

정의

재생 대상을 나타냅니다.

public ref class PlayToReceiver sealed
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class PlayToReceiver final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class PlayToReceiver final
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class PlayToReceiver
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class PlayToReceiver
function PlayToReceiver()
Public NotInheritable Class PlayToReceiver
상속
Object Platform::Object IInspectable PlayToReceiver
특성

Windows 요구 사항

디바이스 패밀리
Windows 10 (10.0.10240.0에서 도입되었습니다.)
API contract
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)
앱 기능
privateNetworkClientServer

설명

PlayToReceiver 클래스를 사용하여 네트워크 컴퓨터용 디지털 미디어 렌더러인 사용자 지정 소프트웨어 Play To 수신기를 만들 수 있습니다. PlayToReceiver 개체를 앱에 포함하여 Play To 클라이언트 컴퓨터와의 통신을 처리한 다음, 사용자 고유의 미디어 요소 또는 컨트롤을 사용하여 해당 컴퓨터에서 스트리밍된 콘텐츠를 재생하거나 표시할 수 있습니다.

PlayToReceiver 클래스의 멤버는 다음으로 구성됩니다.

재생에서 비디오는 현재 위치에서 시작됩니다. 처음부터 비디오를 시작하려는 경우 재생 연결이 설정되는 즉시 비디오의 시작을 찾으면 됩니다.

소프트웨어 Play To 수신기를 만드는 예제는 미디어 캐스팅을 참조하세요.

Windows.Media.PlayTo.PlayToReceiver receiver;
Windows.System.Display.DisplayRequest display;
Windows.UI.Core.CoreDispatcher dispatcher;
bool seeking = false;

private async void StartReceiverButton_Click(object sender, RoutedEventArgs e)
{
    try
    {
        dispatcher = Window.Current.CoreWindow.Dispatcher;

        if (receiver == null)
        {
            receiver = new Windows.Media.PlayTo.PlayToReceiver();
        }

        // Add Play To Receiver events and properties
        receiver.CurrentTimeChangeRequested += receiver_CurrentTimeChangeRequested;
        receiver.MuteChangeRequested += receiver_MuteChangeRequested;
        receiver.PauseRequested += receiver_PauseRequested;
        receiver.PlaybackRateChangeRequested += receiver_PlaybackRateChangeRequested;
        receiver.PlayRequested += receiver_PlayRequested;
        receiver.SourceChangeRequested += receiver_SourceChangeRequested;
        receiver.StopRequested += receiver_StopRequested;
        receiver.TimeUpdateRequested += receiver_TimeUpdateRequested;
        receiver.VolumeChangeRequested += receiver_VolumeChangeRequested;

        receiver.FriendlyName = "Sample Play To Receiver";
        receiver.SupportsAudio = false;
        receiver.SupportsVideo = true;
        receiver.SupportsImage = false;

        // Add MediaElement events
        VideoPlayer.CurrentStateChanged += VideoPlayer_CurrentStateChanged;
        VideoPlayer.MediaEnded += VideoPlayer_MediaEnded;
        VideoPlayer.MediaFailed += VideoPlayer_MediaFailed;
        VideoPlayer.MediaOpened += VideoPlayer_MediaOpened;
        VideoPlayer.RateChanged += VideoPlayer_RateChanged;
        VideoPlayer.SeekCompleted += VideoPlayer_SeekCompleted;
        VideoPlayer.VolumeChanged += VideoPlayer_VolumeChanged;

        // Advertise the receiver on the local network and start receiving commands
        await receiver.StartAsync();

        // Prevent the screen from locking
        if (display == null)
            display = new Windows.System.Display.DisplayRequest();
        display.RequestActive();

        StatusTextBlock.Text = "'" + receiver.FriendlyName + "' started.";
    }
    catch
    {
        receiver = null;
        StatusTextBlock.Text = "Failed to start receiver.";
    }
}

private async void StopReceiverButton_Click(object sender, RoutedEventArgs e)
{
    try
    {
        if (receiver != null)
        {
            await receiver.StopAsync();

            if (display != null)
                display.RequestRelease();

            // Remove Play To Receiver events
            receiver.CurrentTimeChangeRequested -= receiver_CurrentTimeChangeRequested;
            receiver.MuteChangeRequested -= receiver_MuteChangeRequested;
            receiver.PauseRequested -= receiver_PauseRequested;
            receiver.PlaybackRateChangeRequested -= receiver_PlaybackRateChangeRequested;
            receiver.PlayRequested -= receiver_PlayRequested;
            receiver.SourceChangeRequested -= receiver_SourceChangeRequested;
            receiver.StopRequested -= receiver_StopRequested;
            receiver.TimeUpdateRequested -= receiver_TimeUpdateRequested;
            receiver.VolumeChangeRequested -= receiver_VolumeChangeRequested;

            //  Remove MediaElement events
            VideoPlayer.Pause();

            VideoPlayer.CurrentStateChanged -= VideoPlayer_CurrentStateChanged;
            VideoPlayer.MediaEnded -= VideoPlayer_MediaEnded;
            VideoPlayer.MediaFailed -= VideoPlayer_MediaFailed;
            VideoPlayer.MediaOpened -= VideoPlayer_MediaOpened;
            VideoPlayer.RateChanged -= VideoPlayer_RateChanged;
            VideoPlayer.SeekCompleted -= VideoPlayer_SeekCompleted;
            VideoPlayer.VolumeChanged -= VideoPlayer_VolumeChanged;

            StatusTextBlock.Text = "Stopped '" + receiver.FriendlyName + "'.";
        }
    }
    catch
    {
        StatusTextBlock.Text = "Failed to stop '" + receiver.FriendlyName + "'.";
    }
}
Private receiver As Windows.Media.PlayTo.PlayToReceiver
Private display As Windows.System.Display.DisplayRequest
Private seeking As Boolean = False

Private Async Sub StartReceiverButton_Click()
    Try
        If receiver Is Nothing Then
            receiver = New Windows.Media.PlayTo.PlayToReceiver()
        End If

        ' Add Play To Receiver events and properties
        AddHandler receiver.CurrentTimeChangeRequested, AddressOf receiver_CurrentTimeChangeRequested
        AddHandler receiver.MuteChangeRequested, AddressOf receiver_MuteChangeRequested
        AddHandler receiver.PauseRequested, AddressOf receiver_PauseRequested
        AddHandler receiver.PlaybackRateChangeRequested, AddressOf receiver_PlaybackRateChangeRequested
        AddHandler receiver.PlayRequested, AddressOf receiver_PlayRequested
        AddHandler receiver.SourceChangeRequested, AddressOf receiver_SourceChangeRequested
        AddHandler receiver.StopRequested, AddressOf receiver_StopRequested
        AddHandler receiver.TimeUpdateRequested, AddressOf receiver_TimeUpdateRequested
        AddHandler receiver.VolumeChangeRequested, AddressOf receiver_VolumeChangeRequested

        receiver.FriendlyName = "Sample Play To Receiver"
        receiver.SupportsAudio = False
        receiver.SupportsVideo = True
        receiver.SupportsImage = False

        ' Add MediaElement events
        AddHandler VideoPlayer.CurrentStateChanged, AddressOf VideoPlayer_CurrentStateChanged
        AddHandler VideoPlayer.MediaEnded, AddressOf VideoPlayer_MediaEnded
        AddHandler VideoPlayer.MediaFailed, AddressOf VideoPlayer_MediaFailed
        AddHandler VideoPlayer.MediaOpened, AddressOf VideoPlayer_MediaOpened
        AddHandler VideoPlayer.RateChanged, AddressOf VideoPlayer_RateChanged
        AddHandler VideoPlayer.SeekCompleted, AddressOf VideoPlayer_SeekCompleted
        AddHandler VideoPlayer.VolumeChanged, AddressOf VideoPlayer_VolumeChanged

        ' Advertise the receiver on the local network and start receiving commands
        Await receiver.StartAsync()

        ' Prevent the screen from locking
        If display Is Nothing Then
            display = New Windows.System.Display.DisplayRequest()
            display.RequestActive()

            StatusTextBlock.Text = "'" & receiver.FriendlyName & "' started."
        End If
    Catch
        receiver = Nothing
        StatusTextBlock.Text = "Failed to start receiver. "
    End Try
End Sub

Private Async Sub StopReceiverButton_Click()
    Try
        If receiver IsNot Nothing Then
            Await receiver.StopAsync()

            If display IsNot Nothing Then display.RequestRelease()

            ' Remove Play To Receiver events
            RemoveHandler receiver.CurrentTimeChangeRequested, AddressOf receiver_CurrentTimeChangeRequested
            RemoveHandler receiver.MuteChangeRequested, AddressOf receiver_MuteChangeRequested
            RemoveHandler receiver.PauseRequested, AddressOf receiver_PauseRequested
            RemoveHandler receiver.PlaybackRateChangeRequested, AddressOf receiver_PlaybackRateChangeRequested
            RemoveHandler receiver.PlayRequested, AddressOf receiver_PlayRequested
            RemoveHandler receiver.SourceChangeRequested, AddressOf receiver_SourceChangeRequested
            RemoveHandler receiver.StopRequested, AddressOf receiver_StopRequested
            RemoveHandler receiver.TimeUpdateRequested, AddressOf receiver_TimeUpdateRequested
            RemoveHandler receiver.VolumeChangeRequested, AddressOf receiver_VolumeChangeRequested

            '  Remove MediaElement events
            VideoPlayer.Pause()

            RemoveHandler VideoPlayer.CurrentStateChanged, AddressOf VideoPlayer_CurrentStateChanged
            RemoveHandler VideoPlayer.MediaEnded, AddressOf VideoPlayer_MediaEnded
            RemoveHandler VideoPlayer.MediaFailed, AddressOf VideoPlayer_MediaFailed
            RemoveHandler VideoPlayer.MediaOpened, AddressOf VideoPlayer_MediaOpened
            RemoveHandler VideoPlayer.RateChanged, AddressOf VideoPlayer_RateChanged
            RemoveHandler VideoPlayer.SeekCompleted, AddressOf VideoPlayer_SeekCompleted
            RemoveHandler VideoPlayer.VolumeChanged, AddressOf VideoPlayer_VolumeChanged

            StatusTextBlock.Text = "Stopped '" & receiver.FriendlyName & "'."
        End If
    Catch
        StatusTextBlock.Text = "Failed to stop '" & receiver.FriendlyName & "'."
    End Try
End Sub

Play To 수신기에서 비디오 또는 음악이 재생되거나 이미지가 재생 받는 사람 수신기로 지속적으로 전송되는 한 PlayTo 앱은 일시 중단되지 않습니다. 앱은 현재 이미지가 표시된 후 새 이미지를 보내는 데 약 10초, 현재 이미지가 종료된 후 다음 오디오 또는 비디오를 보내는 데 약 10초가 걸립니다.

참고

이 클래스는 민첩하지 않으므로 스레딩 모델 및 마샬링 동작을 고려해야 합니다. 자세한 내용은 스레딩 및 마샬링(C++/CX)다중 스레드 환경(.NET)에서 Windows 런타임 개체 사용을 참조하세요.

생성자

PlayToReceiver()

재생 받는 사람 수신기의 새 instance 만듭니다.

속성

FriendlyName

재생 대상의 표시 이름을 가져오거나 설정합니다.

Properties

재생 대상 수신기에 대한 사용자 지정 속성 집합을 가져옵니다.

SupportsAudio

재생 대상에서 오디오를 지원하는지 여부를 나타내는 값을 가져오거나 설정합니다.

SupportsImage

재생 대상에서 이미지를 지원하는지 여부를 나타내는 값을 가져오거나 설정합니다.

SupportsVideo

재생 대상에서 비디오를 지원하는지 여부를 나타내는 값을 가져오거나 설정합니다.

메서드

NotifyDurationChange(TimeSpan)

재생 받는 사람 수신기에 오디오 또는 비디오 재생 기간이 변경되었음을 알 수 있습니다.

NotifyEnded()

재생 받는 사람 수신기에 오디오 또는 비디오 재생이 종료되었음을 알 수 있습니다.

NotifyError()

재생 받는 사람 수신자가 미디어를 표시하거나 재생할 때 오류가 발생했음을 알 수 있습니다.

NotifyLoadedMetadata()

Play To 수신기에 미디어의 메타데이터 로드가 완료되었음을 알 수 있습니다.

NotifyPaused()

재생 받는 사람 수신기에 오디오 또는 비디오 재생이 일시 중지되었음을 알 수 있습니다.

NotifyPlaying()

재생 받는 사람 수신기에 오디오 또는 비디오 재생이 시작되었음을 알 수 있습니다.

NotifyRateChange(Double)

재생 받는 사람 수신기에 오디오 또는 비디오 재생 속도가 변경되었음을 알 수 있습니다.

NotifySeeked()

재생 받는 사람 수신기에 오디오 또는 비디오 재생 요소가 새 재생 위치에서 시작되었음을 알 수 있습니다.

NotifySeeking()

재생 받는 사람 수신기에 오디오 또는 비디오 재생 요소가 새 재생 위치를 찾고 있음을 알 수 있습니다.

NotifyStopped()

재생 받는 사람 수신기에 오디오 또는 비디오 재생이 중지되었음을 알 수 있습니다.

NotifyTimeUpdate(TimeSpan)

재생 받는 사람 수신기에 오디오 또는 비디오 재생의 시간 위치가 변경되었음을 알 수 있습니다.

NotifyVolumeChange(Double, Boolean)

재생 받는 사람 수신기에 오디오 또는 비디오 재생 볼륨이 변경되었음을 알 수 있습니다.

StartAsync()

Play To 명령을 받기 시작합니다.

StopAsync()

재생 명령 수신을 중지합니다.

이벤트

CurrentTimeChangeRequested

재생의 시간 위치가 변경된 경우에 발생합니다.

MuteChangeRequested

오디오가 음소거되거나 음소거되지 않은 경우에 발생합니다.

PauseRequested

오디오 또는 비디오 재생이 일시 중지된 경우에 발생합니다.

PlaybackRateChangeRequested

오디오 또는 비디오 재생 속도가 변경된 경우에 발생합니다.

PlayRequested

오디오 또는 비디오 재생이 시작될 때 발생합니다.

SourceChangeRequested

재생 대상 수신기의 원본 미디어가 변경되었을 때 발생합니다.

StopRequested

재생 대상 수신기가 스트리밍된 미디어 재생을 중지하도록 요청했을 때 발생합니다.

TimeUpdateRequested

현재 재생 위치가 변경된 경우에 발생합니다.

VolumeChangeRequested

원본 오디오 또는 비디오의 볼륨이 변경된 경우에 발생합니다.

적용 대상

추가 정보