MediaStreamSource 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示将媒体示例直接传送到媒体管道的媒体源。
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
- 继承
- 属性
- 实现
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) | |
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 对象时发生。 |