使用“播放到”向设备流式播放媒体 (HTML)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

“播放到”使用户能够将其计算机中的音频、视频或图像流式传输到网络设备。

简介

你可以使用“播放到”功能使用户能够很容易在其家庭网络中将音频、视频或图像以流数据的形式从计算机传输到其他设备。例如,在你的应用中观看视频的用户可以将该视频流式传输到其 TV 上供屋子中的所有人观看。

“播放到”会将音频、视频或图像流式传输到经过认证的“播放到”接收器。

“播放到”是“设备”超级按钮的一部分。对于包含音频、视频或图像的应用程序,用户打开“设备”****超级按钮后,将向用户显示可将媒体内容流式传输到的家庭网络设备。

在应用中使用“播放到”

你可在你的应用程序中使用“播放到”流式传输音频或视频,并通过实现“播放到”合约传输图像。要在你的应用程序中实现“播放到”合约,请注册 sourceRequested 事件。要注册 sourceRequested 事件,请通过调用 getForCurrentView 方法获取对当前 PlayToManager 的引用。然后,你可调用 PlayToManager 中的 addEventHandler 以便将事件处理程序与 sourceRequested 事件关联。在你的事件处理程序中,将你的应用程序中的媒体元素传递到 PlayToSourceRequestedEventArgs 对象(传递到事件处理程序)的 setSource 方法,如以下示例所示。

// Play To Contract

private Windows.Media.PlayTo.PlayToManager ptm = 
        Windows.Media.PlayTo.PlayToManager.GetForCurrentView();

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    ptm.SourceRequested += sourceRequestHandler;
}

private void sourceRequestHandler(
    Windows.Media.PlayTo.PlayToManager sender,
    Windows.Media.PlayTo.PlayToSourceRequestedEventArgs e)
{
    try
    {
        e.SourceRequest.SetSource(mediaElement.PlayToSource);
    }
    catch (Exception ex)
    {
        messageBlock.Text += "Exception encountered: " + ex.Message + "\n";
    }
}
// Play To Contract

var ptm = Windows.Media.PlayTo.PlayToManager.getForCurrentView();
ptm.addEventListener("sourcerequested", sourceRequestHandler, false);

function sourceRequestHandler(e) {
    try {
        e.sourceRequest.setSource(mediaElement.msPlayToSource);

    } catch (ex) {
        id("messageDiv").innerHTML += "Exception encountered: " + ex.message + "<br/>";
    }
}
' Play To Contract

Private ptm As Windows.Media.PlayTo.PlayToManager =
        Windows.Media.PlayTo.PlayToManager.GetForCurrentView()

Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs)
    AddHandler ptm.SourceRequested, AddressOf sourceRequestHandler
End Sub

Private Sub sourceRequestHandler(
    sender As Windows.Media.PlayTo.PlayToManager,
    e As Windows.Media.PlayTo.PlayToSourceRequestedEventArgs)

    Try
        e.SourceRequest.SetSource(mediaElement.PlayToSource)
    Catch ex As Exception
        messageBlock.Text &= "Exception encountered: " & ex.Message & vbCrLf
    End Try
End Sub

当用户从“设备”超级按钮中选择“播放到”目标时,“播放到”将会引发 sourceRequested 事件。然后,“播放到”会将传递到 setSource 方法的媒体元素流式传输到用户所选的目标设备中。

如果“播放到”从你的应用程序流式传输媒体到目标设备中,那么甚至在你的应用程序移动到后台,同时其他应用程序处于活动状态时,“播放到”也会继续从你的应用程序流式传输媒体到目标设备中。有关详细信息,请参阅启动、恢复和多任务

“播放到”默认行为

默认情况下,可对应用程序页面上的所有音频和视频元素启用“播放到”。你可在你的应用中禁用此默认行为,或者你可标识哪些音频或视频元素对“播放到”行为不可用。

要在你的应用程序中禁用默认的“播放到”行为,请将 PlayToManager 对象的 defaultSourceSelection 属性设置为 false。

var ptm = Windows.Media.PlayTo.PlayToManager.getForCurrentView();
ptm.defaultSourceSelection = false;

要为某个特定的音频或视频元素禁用默认的“播放到”行为,请在元素标记中包括 x-ms-playToDisabled 属性。

<video src="http://sample.microsoft.com/video.mp4" x-ms-playToDisabled />

你还可通过将 msPlayToDisabled 属性设置为 true,在 JavaScript 中禁用元素的默认“播放到”行为。

如果你在页面上拥有一个以上的音频或视频元素,且你想将一个元素标识为“播放到”的第一个要进行流式传输的元素,你可在元素标记中包括 x-ms-playToPrimary 属性。

<video src="http://sample.microsoft.com/showvideo.mp4" x-ms-playToPrimary />

你还可通过将 msPlayToPrimary 属性设置为 true,在 JavaScript 中标识“播放到”的第一个要进行流式传输的元素。

在应用中使用“播放到”的指南

如果你的应用使用户能够观看视频、查看图像或者收听音频,请确保在你的应用中包括“播放到”功能,以便使用户还能够将媒体流式传输到远程设备。

在包含可供用户使用的音频、视频或图像内容的应用程序中,请确保启用“设备”超级按钮。

确保在用户开始通过使用“播放到”将媒体流式传输到远程设备之后,用户能够继续在你的应用中导航。为了继续对媒体进行流式传输,你必须确保你的应用中的媒体元素保持在范围内。

由于“播放到”是 Windows UI 的一部分,因此用户不必导航到你的应用的特定页面或屏幕,即可使用“播放到”。

相关主题

快速入门:在应用中使用“播放到”

快速入门:使用“播放到”流式传输幻灯片放映

示例

播放到示例

PlayToReceiver 示例

媒体服务器示例