PlayToReceiver 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
재생 대상을 나타냅니다.
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
- 상속
- 특성
Windows 요구 사항
디바이스 패밀리 |
Windows 10 (10.0.10240.0에서 도입되었습니다.)
|
API contract |
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)
|
앱 기능 |
privateNetworkClientServer
|
설명
PlayToReceiver 클래스를 사용하여 네트워크 컴퓨터용 디지털 미디어 렌더러인 사용자 지정 소프트웨어 Play To 수신기를 만들 수 있습니다. PlayToReceiver 개체를 앱에 포함하여 Play To 클라이언트 컴퓨터와의 통신을 처리한 다음, 사용자 고유의 미디어 요소 또는 컨트롤을 사용하여 해당 컴퓨터에서 스트리밍된 콘텐츠를 재생하거나 표시할 수 있습니다.
PlayToReceiver 클래스의 멤버는 다음으로 구성됩니다.
- 네트워크에 보급될 때 재생 받는 사람 수신기의 이름을 식별하는 FriendlyName 속성입니다.
- Play To 수신기가 지원하는 미디어 유형을 식별하는 속성: SupportsAudio, SupportsVideo, SupportsImage.
- Play To 수신기를 시작하고 네트워크에서 디지털 미디어 렌더러로 보급하는 StartAsync 메서드입니다. Play To 수신기를 중지하고 네트워크에서 보급을 중지하는 StopAsync 메서드입니다.
- 컴퓨터에서 미디어 스트림을 받을 때 발생하는 SourceChangeRequested 이벤트 볼륨 변경 또는 스트리밍된 미디어의 재생 위치 변경과 같은 Play To 클라이언트 컴퓨터에서 작업을 요청할 때 발생하는 이벤트: CurrentTimeChangeRequested, MuteChangeRequested, PauseRequested, PlayRequested, StopRequested, VolumeChangeRequested, TimeUpdateRequested.
- Play To 수신기에 대한 변경이 발생할 때 Play To 클라이언트에 알리기 위해 호출할 수 있는 메서드: NotifyDurationChange, NotifyEnded, NotifyError, NotifyLoadedMetadata, NotifyPaused, NotifyPlaying, NotifyRateChange, NotifySeeked, NotifySeeking, NotifyStopped, NotifyTimeUpdate, NotifyVolumeChange.
재생에서 비디오는 현재 위치에서 시작됩니다. 처음부터 비디오를 시작하려는 경우 재생 연결이 설정되는 즉시 비디오의 시작을 찾으면 됩니다.
소프트웨어 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 |
원본 오디오 또는 비디오의 볼륨이 변경된 경우에 발생합니다. |