PlayToReceiver Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt ein Play To-Ziel dar.
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
- Vererbung
- Attribute
Windows-Anforderungen
Gerätefamilie |
Windows 10 (eingeführt in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
|
App-Funktionen |
privateNetworkClientServer
|
Hinweise
Sie können die PlayToReceiver-Klasse verwenden, um einen benutzerdefinierten Softwarewiedergabeempfänger zu erstellen, der ein digitaler Medienrenderer für Computer in Ihrem Netzwerk ist. Sie können ein PlayToReceiver-Objekt in Ihre App einschließen, um die Kommunikation mit Play To-Clientcomputern zu verarbeiten, und dann Inhalte wiedergeben oder anzeigen, die von diesen Computern gestreamt werden, indem Sie ihre eigenen Medienelemente oder Steuerelemente verwenden.
Die Member der PlayToReceiver-Klasse bestehen aus den folgenden Elementen:
- Die FriendlyName-Eigenschaft , die den Namen des Empfängers Play To identifiziert, wenn er im Netzwerk angekündigt wird.
- Eigenschaften, die den Typ der Medien identifizieren, die ihr Wiedergabeempfänger unterstützt: SupportsAudio, SupportsVideo, SupportsImage.
- Die StartAsync-Methode , die den Play To-Empfänger startet und ihn im Netzwerk als digitalen Medienrenderer angibt. Die StopAsync-Methode , die den Wiedergabeempfänger beendet und die Werbung im Netzwerk beendet.
- Das SourceChangeRequested-Ereignis , das auftritt, wenn Sie einen Mediendatenstrom von einem Computer empfangen, und Ereignisse, die auftreten, wenn eine Aktion vom Clientcomputer Für wiedergabe angefordert wird, z. B. eine Volumeänderung oder eine Änderung des Wiedergabespeicherorts der gestreamten Medien: CurrentTimeChangeRequested, MuteChangeRequested, PauseRequested, PlayRequested, StopRequested, VolumeChangeRequested, TimeUpdateRequested.
- Methoden, die Sie aufrufen können, um den Play To-Client zu benachrichtigen, wenn eine Änderung für Ihren Play To-Empfänger auftritt: NotifyDurationChange, NotifyEnded, NotifyError, NotifyLoadedMetadata, NotifyPaused, NotifyPlaying, NotifyRateChange, NotifySeeked, NotifySeekking, NotifyStopped, NotifyTimeUpdate, NotifyVolumeChange.
In Wiedergabe an beginnt das Video an der aktuellen Position. Wenn Sie das Video von Anfang an starten möchten, suchen Sie einfach zum Anfang des Videos, sobald die Verbindung "Wiedergabe zu" hergestellt ist.
Ein Beispiel zum Erstellen eines Softwarewiedergabeempfängers finden Sie unter Medienumwandlung.
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
PlayTo-Apps werden nicht angehalten, solange Videos oder Musik auf dem Wiedergabeempfänger wiedergegeben werden oder Bilder kontinuierlich an den Wiedergabeempfänger gesendet werden. Apps haben etwa 10 Sekunden Zeit, um ein neues Bild zu senden, nachdem das aktuelle Bild angezeigt wurde, und etwa 10 Sekunden, um das nächste Audio- oder Video zu senden, nachdem das aktuelle Bild beendet wurde.
Hinweis
Diese Klasse ist nicht agil, was bedeutet, dass Sie das Threadingmodell und das Marshallverhalten berücksichtigen müssen. Weitere Informationen finden Sie unter Threading and Marshaling (C++/CX) und Using Windows-Runtime objects in a multithreaded environment (.NET).
Konstruktoren
PlayToReceiver() |
Erstellt eine neue instance eines Wiedergabeempfängers. |
Eigenschaften
FriendlyName |
Ruft den Anzeigenamen des Ziels "Wiedergeben auf" ab oder legt diesen fest. |
Properties |
Ruft einen Satz benutzerdefinierter Eigenschaften für den Wiedergabeempfänger ab. |
SupportsAudio |
Ruft einen Wert ab, der angibt, ob das Wiedergabeziel Audio unterstützt, oder legt diesen fest. |
SupportsImage |
Ruft einen Wert ab, der angibt, ob das Wiedergabeziel Bilder unterstützt, oder legt diesen fest. |
SupportsVideo |
Ruft einen Wert ab, der angibt, ob das Wiedergabeziel Video unterstützt, oder legt diesen fest. |
Methoden
NotifyDurationChange(TimeSpan) |
Benachrichtigt den Wiedergabeempfänger darüber, dass sich die Dauer der Audio- oder Videowiedergabe geändert hat. |
NotifyEnded() |
Benachrichtigt den Empfänger "Wiedergabe an", dass die Audio- oder Videowiedergabe beendet wurde. |
NotifyError() |
Benachrichtigt den Empfänger "Wiedergabe an", dass beim Anzeigen oder Wiedergeben der Medien ein Fehler aufgetreten ist. |
NotifyLoadedMetadata() |
Benachrichtigt den Empfänger "Wiedergabe an", dass das Laden der Metadaten für die Medien abgeschlossen ist. |
NotifyPaused() |
Benachrichtigt den Wiedergabeempfänger darüber, dass die Audio- oder Videowiedergabe angehalten wurde. |
NotifyPlaying() |
Benachrichtigt den Wiedergabeempfänger, dass die Audio- oder Videowiedergabe gestartet wurde. |
NotifyRateChange(Double) |
Benachrichtigt den Wiedergabeempfänger darüber, dass sich die Wiedergaberate der Audio- oder Videowiedergabe geändert hat. |
NotifySeeked() |
Benachrichtigt den Wiedergabeempfänger, dass das Audio- oder Videowiedergabeelement an einem neuen Wiedergabeort gestartet wurde. |
NotifySeeking() |
Benachrichtigt den Wiedergabeempfänger, dass das Audio- oder Videowiedergabeelement einen neuen Wiedergabeort sucht. |
NotifyStopped() |
Benachrichtigt den Empfänger "Wiedergabe an", dass die Audio- oder Videowiedergabe beendet wurde. |
NotifyTimeUpdate(TimeSpan) |
Benachrichtigt den Wiedergabeempfänger darüber, dass sich der Zeitort der Audio- oder Videowiedergabe geändert hat. |
NotifyVolumeChange(Double, Boolean) |
Benachrichtigt den Empfänger "Wiedergabe an", dass sich die Lautstärke der Audio- oder Videowiedergabe geändert hat. |
StartAsync() |
Beginnen Sie mit dem Empfang von "Play To"-Befehlen. |
StopAsync() |
Beenden sie den Empfang von Befehlen zum Wiedergeben von. |
Ereignisse
CurrentTimeChangeRequested |
Tritt auf, wenn sich der Zeitspeicherort der Wiedergabe geändert hat. |
MuteChangeRequested |
Tritt auf, wenn die Audiowiedergabe stummgeschaltet oder deaktiviert wurde. |
PauseRequested |
Tritt auf, wenn die Audio- oder Videowiedergabe angehalten wurde. |
PlaybackRateChangeRequested |
Tritt auf, wenn sich die Audio- oder Videowiedergaberate geändert hat. |
PlayRequested |
Tritt auf, wenn die Audio- oder Videowiedergabe gestartet wird. |
SourceChangeRequested |
Tritt auf, wenn sich die Quellmedien für den Wiedergabeempfänger geändert haben. |
StopRequested |
Tritt auf, wenn eine Anforderung für den Empfänger "Play To" gestellt wurde, die Wiedergabe der gestreamten Medien zu beenden. |
TimeUpdateRequested |
Tritt auf, wenn sich die aktuelle Wiedergabeposition geändert hat. |
VolumeChangeRequested |
Tritt auf, wenn sich die Lautstärke für das Quellaudio oder -video geändert hat. |