MediaStreamSource 类

定义

表示将媒体示例直接传送到媒体管道的媒体源。

public ref class MediaStreamSource sealed
/// [Windows.Foundation.Metadata.Activatable(Windows.Media.Core.IMediaStreamSourceFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MediaStreamSource final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Media.Core.IMediaStreamSourceFactory, 65536, "Windows.Foundation.UniversalApiContract")]
class MediaStreamSource final
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Media.Core.IMediaStreamSourceFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class MediaStreamSource
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Media.Core.IMediaStreamSourceFactory), 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class MediaStreamSource
function MediaStreamSource(descriptor, descriptor2)
Public NotInheritable Class MediaStreamSource
继承
Object Platform::Object IInspectable MediaStreamSource
属性
实现

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

注解

有关在 UWP 应用中使用媒体流源的示例,请参阅 MediaStreamSource 示例

MediaStreamSource 是在 Windows 8.1 中引入的 UWP 应用的新通用媒体源。 MediaStreamSource 允许应用将压缩或未压缩的音频和视频示例发送到媒体管道,以便进行播放、转码和流式处理。 媒体示例可由应用动态生成,也可以从流或文件中取消多路复用。 这种灵活性使应用能够更轻松地扩展对新媒体格式的平台支持,或解决自适应流式处理等复杂问题。

MediaStreamSourceAPI 与同名的 Microsoft SilverlightAPI 非常相似。

MediaStreamSource 可用于 Windows 应用中使用 JavaScript 的音频和视频对象、使用 C++、C# 或 Visual Basic 的 UWP 应用中的 MediaElement 对象,以及 MediaTranscoder

MediaStreamSource 示例演示如何使用 MediaStreamSource。 下面是一些main MediaStreamSource API。 顺序概述了 MediaStreamSource 函数的基本流程。 你会注意到 MediaStreamSource 通过事件参数将请求对象发送到应用。 这些请求对象使应用能够与 MediaStreamSource 交互,并将数据传回给它。

API 说明
MediaStreamSource 表示将媒体示例直接传送到媒体管道的媒体源。 MediaStreamSource 使用应用程序提供的 MediaStreamSample 对象。
MediaStreamSample 表示 MediaStreamSource 使用的媒体示例。
MediaStreamSource.Starting (事件) MediaStreamSource 使用此事件通知应用它已准备好开始处理媒体数据。
MediaStreamSourceStartingRequest 表示来自 MediaStreamSource 的请求,该请求已准备好开始处理媒体数据。 应用应通过对请求调用 SetActualStartPosition 来尽快回复此请求。 如果应用需要延迟 MediaStreamSource 处理数据,它可以从 MediaStreamSourceStartingRequest.GetDeferral 获取异步延迟。 当应用准备好启动 MediaStreamSource 时,它会对延迟对象调用 Complete 。 启动请求通过传递给 MediaStreamSource.Starting 事件处理程序的 MediaStreamSourceStartingEventArgs 进行访问
MediaStreamSource.SampleRequested (事件) MediaStreamSource 使用此事件通知应用它已准备好使用 MediaStreamSample。 应用需要为此事件注册处理程序。
MediaStreamSourceSampleRequest 表示来自 MediaStreamSource 的新媒体示例的请求。 将 Sample 属性设置为新的 MediaStreamSample 会触发 MediaStreamSource 检索媒体示例并继续处理媒体数据。 应用应尽快回复此请求。 如果应用在发送 MediaStreamSample 之前需要时间,它可以从 MediaStreamSourceSampleRequest.GetDeferral 获取异步延迟。 应用完成延迟后,它会对延迟对象调用 Complete 。 通过传递给 MediaStreamSource.SampleRequest 事件处理程序的 MediaStreamSourceSampleRequestedEventArgs 访问示例请求。 应用通过响应 MediaStreamSourceSampleRequest 而不提供 MediaStreamSample,或通过将 MediaStreamSourceSampleRequest.Sample 属性分配给 null 来指示它已到达流的末尾。
MediaStreamSource.Closed (事件) MediaStreamSource 使用此事件通知应用它已关闭。
MediaStreamSourceClosedRequest 表示来自 MediaStreamSource 且已关闭的请求。 关闭请求通过传递给 MediaStreamSource.Closed 事件处理程序的 MediaStreamSourceClosedEventArgs 进行访问
MediaElement.SetMediaStreamSource MediaElement 的源设置为 MediaStreamSource。

版本历史记录

Windows 版本 SDK 版本 增值
1607 14393 SampleRendered
1703 15063 MaxSupportedPlaybackRate
1709 16299 IsLive

构造函数

MediaStreamSource(IMediaStreamDescriptor)

从指定的 IMediaStreamDescriptor 创建 MediaStreamSource 的实例。

MediaStreamSource(IMediaStreamDescriptor, IMediaStreamDescriptor)

从两个 IMediaStreamDescriptor 对象创建 MediaStreamSource 的实例。

属性

BufferTime

获取或设置 MediaStreamSource 缓冲的数据量。

CanSeek

获取或设置应用程序是否支持更改其在媒体时间线中的位置。

Duration

获取或设置媒体时间线的持续时间。

IsLive

获取或设置一个值,该值指示正在处理的媒体内容是否处于活动状态。

MaxSupportedPlaybackRate

获取 MediaStreamSource 支持的最大播放速率。

MediaProtectionManager

获取或设置用于保护媒体的数字版权管理 (DRM) MediaProtectionManager

MusicProperties

获取用于音乐相关元数据的音乐属性。

Thumbnail

获取或设置缩略图,它是对视频缩略图图像或音乐专辑封面流的引用。

VideoProperties

获取用于视频相关元数据的视频属性。

方法

AddProtectionKey(IMediaStreamDescriptor, Byte[], Byte[])

添加数字版权管理 (DRM) 保护密钥, MediaProtectionManager 使用该密钥来加密和解密指定的流。

AddStreamDescriptor(IMediaStreamDescriptor)

将新的流描述符添加到 MediaStreamSource

NotifyError(MediaStreamSourceErrorStatus)

通知 MediaStreamSource 发生错误,导致应用程序无法继续将数据传送到 MediaStreamSource

SetBufferedRange(TimeSpan, TimeSpan)

设置应用程序当前正在缓冲的数据范围。

事件

Closed

关闭 MediaStreamSource 时发生。

Paused

MediaStreamSource 暂停并在未指定的时间段内停止请求 MediaStreamSample 对象时发生,但预期会从当前位置继续请求 MediaStreamSample 对象。

SampleRendered

呈现 来自 MediaStreamSource 的示例时发生。

SampleRequested

MediaStreamSource 请求指定流的 MediaStreamSample 时发生。

Starting

MediaStreamSource 准备好开始请求 MediaStreamSample 对象时发生。 事件可以指定媒体时间线中应从中传递第一个 MediaStreamSample 的位置。

SwitchStreamsRequested

MediaStreamSource 停止为特定流请求 MediaStreamSample 对象,并开始从其他流请求 MediaStreamSample 对象时发生。

适用于

另请参阅