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
- Наследование
- Атрибуты
Требования к Windows
Семейство устройств |
Windows 10 (появилось в 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v1.0)
|
Возможности приложения |
privateNetworkClientServer
|
Комментарии
Класс PlayToReceiver можно использовать для создания пользовательского программного приемника воспроизведения на, который является цифровым отрисовщиком мультимедиа для компьютеров в вашей сети. Вы можете включить в приложение объект PlayToReceiver, чтобы управлять взаимодействием с клиентскими компьютерами play to, а затем воспроизводить или отображать содержимое, потоковое с этих компьютеров, с помощью собственных элементов мультимедиа или элементов управления.
Члены класса PlayToReceiver состоят из следующих элементов:
- Свойство FriendlyName , идентифицирующее имя получателя воспроизведения при объявлении в сети.
- Свойства, определяющие тип мультимедиа, поддерживаемый получателем воспроизведения: SupportsAudio, SupportsVideo, SupportsImage.
- Метод StartAsync , который запускает приемник "Воспроизвести на" и объявляет его в сети как цифровой отрисовщик мультимедиа. Метод StopAsync , который останавливает приемник "Воспроизвести на" и прекращает рекламировать его в сети.
- Событие SourceChangeRequested , возникающее при получении потока мультимедиа с компьютера, и события, возникающие при запросе клиентского компьютера воспроизведения действия, например изменение громкости или изменение расположения воспроизведения потокового мультимедиа: CurrentTimeChangeRequested, MuteChangeRequested, PauseRequested, PlayRequested, StopRequested, VolumeChangeRequested, TimeUpdateRequested.
- Методы, которые можно вызвать для уведомления клиента Воспроизведения до при изменении приемника воспроизведения: NotifyDurationChange, NotifyEnded, NotifyError, NotifyLoadedMetadata, NotifyPaused, NotifyPlaying, NotifyRateChange, NotifySeeked, NotifySeeking, NotifySeeking, NotifyStopped, NotifyTimeUpdate, NotifyVolumeChange.
В разделе Воспроизвести видео начинается с текущей позиции. Если вы хотите начать видео с самого начала, просто ищите его в начале, как только будет установлено подключение "Воспроизвести".
Пример создания программного приемника воспроизведения для воспроизведения см. в разделе Приведение мультимедиа.
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 не будут приостановлены до тех пор, пока видео или музыка воспроизводятся на приемнике воспроизведения или изображения непрерывно отправляются в приемник воспроизведения. У приложений есть примерно 10 секунд для отправки нового изображения после отображения текущего изображения и примерно 10 секунд для отправки следующего аудио или видео после завершения текущего.
Примечание
Этот класс не является гибким, что означает, что необходимо учитывать его потоковую модель и поведение маршалинга. Дополнительные сведения см. в разделах Потоки и маршалинг (C++/CX) и Использование объектов среда выполнения Windows в многопоточной среде (.NET).
Конструкторы
PlayToReceiver() |
Создает новый экземпляр приемника воспроизведения. |
Свойства
FriendlyName |
Возвращает или задает отображаемое имя целевого объекта Воспроизведения. |
Properties |
Возвращает набор пользовательских свойств для приемника воспроизведения. |
SupportsAudio |
Возвращает или задает значение, указывающее, поддерживает ли целевой объект воспроизведения звук. |
SupportsImage |
Возвращает или задает значение, указывающее, поддерживает ли целевой объект воспроизведения изображения. |
SupportsVideo |
Возвращает или задает значение, указывающее, поддерживает ли целевой объект воспроизведения видео. |
Методы
NotifyDurationChange(TimeSpan) |
Уведомляет приемника о том, что длительность воспроизведения звука или видео изменилась. |
NotifyEnded() |
Уведомляет приемник воспроизведения до о том, что воспроизведение звука или видео завершено. |
NotifyError() |
Уведомляет получателя о том, что при отображении или воспроизведении мультимедиа произошла ошибка. |
NotifyLoadedMetadata() |
Уведомляет получателя воспроизведения о том, что загрузка метаданных для носителя завершена. |
NotifyPaused() |
Уведомляет приемника о приостановке воспроизведения звука или видео. |
NotifyPlaying() |
Уведомляет приемник воспроизведения до о начале воспроизведения звука или видео. |
NotifyRateChange(Double) |
Уведомляет приемника о том, что скорость воспроизведения звука или видео изменилась. |
NotifySeeked() |
Уведомляет приемник "Воспроизвести на" о том, что элемент воспроизведения звука или видео запущен в новом месте воспроизведения. |
NotifySeeking() |
Уведомляет приемник "Воспроизвести на" о том, что элемент воспроизведения звука или видео ищет новое место воспроизведения. |
NotifyStopped() |
Уведомляет приемника о том, что воспроизведение звука или видео остановлено. |
NotifyTimeUpdate(TimeSpan) |
Уведомляет приемника о том, что время воспроизведения звука или видео изменилось. |
NotifyVolumeChange(Double, Boolean) |
Уведомляет приемника о том, что громкость воспроизведения звука или видео изменилась. |
StartAsync() |
Начните получать команды воспроизведения для. |
StopAsync() |
Прекратить получение команд воспроизведения для. |
События
CurrentTimeChangeRequested |
Происходит при изменении места воспроизведения. |
MuteChangeRequested |
Происходит при отключении звука или отключении звука. |
PauseRequested |
Происходит при приостановке воспроизведения звука или видео. |
PlaybackRateChangeRequested |
Происходит при изменении скорости воспроизведения звука или видео. |
PlayRequested |
Происходит при запуске воспроизведения звука или видео. |
SourceChangeRequested |
Происходит при изменении исходного носителя для приемника воспроизведения. |
StopRequested |
Происходит при выполнении запроса на остановку воспроизведения потокового мультимедиа для приемника воспроизведения. |
TimeUpdateRequested |
Происходит при изменении текущей позиции воспроизведения. |
VolumeChangeRequested |
Происходит при изменении громкости исходного звука или видео. |