다음을 통해 공유


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는 C++, C#또는 Visual Basic 및 MediaTranscoder를 사용하여 JavaScript, UWP 앱의 MediaElement 개체를 사용하여 Windows 앱의 오디오비디오 개체와 함께 사용할 수 있습니다.

MediaStreamSource 샘플은 MediaStreamSource를 사용하는 방법을 보여 줍니다. 다음은 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를 통해 액세스됩니다. 앱은 MediaStreamSample을 제공하지 않고 MediaStreamSourceSampleRequest에 응답하거나 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의 instance 만듭니다.

MediaStreamSource(IMediaStreamDescriptor, IMediaStreamDescriptor)

IMediaStreamDescriptor 개체에서 MediaStreamSource의 instance 만듭니다.

속성

BufferTime

MediaStreamSource에서 버퍼링되는 데이터의 양을 가져오거나 설정합니다.

CanSeek

애플리케이션이 미디어 시간줄에서 위치 변경을 지원하는지 여부를 가져오거나 설정합니다.

Duration

미디어 시간 줄의 기간을 가져오거나 설정합니다.

IsLive

처리 중인 미디어 콘텐츠가 라이브 상태인지 여부를 나타내는 값을 가져오거나 설정합니다.

MaxSupportedPlaybackRate

MediaStreamSource에 대해 지원되는 최대 재생 속도를 가져옵니다.

MediaProtectionManager

미디어를 보호하는 데 사용되는 DRM(Digital Rights Management)MediaProtectionManager 를 가져오거나 설정합니다.

MusicProperties

음악 관련 메타데이터에 사용되는 음악 속성을 가져옵니다.

Thumbnail

비디오 썸네일 이미지 또는 음악 앨범 아트의 스트림에 대한 참조인 썸네일을 가져오거나 설정합니다.

VideoProperties

비디오 관련 메타데이터에 사용되는 비디오 속성을 가져옵니다.

메서드

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

MediaProtectionManager에서 지정된 스트림을 암호화하고 암호 해독하는 데 사용하는 DRM(디지털 권한 관리) 보호 키를 추가합니다.

AddStreamDescriptor(IMediaStreamDescriptor)

MediaStreamSource에 새 스트림 설명자를 추가합니다.

NotifyError(MediaStreamSourceErrorStatus)

MediaStreamSource에 오류가 발생하여 애플리케이션이 MediaStreamSource에 데이터를 계속 배달하지 못하도록 합니다.

SetBufferedRange(TimeSpan, TimeSpan)

애플리케이션이 현재 버퍼링 중인 데이터 범위를 설정합니다.

이벤트

Closed

MediaStreamSource가 종료될 때 발생합니다.

Paused

MediaStreamSource가 일시 중지되고 지정되지 않은 기간 동안 MediaStreamSample 개체 요청을 중지하지만 현재 위치에서 MediaStreamSample 개체 요청을 다시 시작할 것으로 예상되는 경우에 발생합니다.

SampleRendered

MediaStreamSource의 샘플이 렌더링될 때 발생합니다.

SampleRequested

MediaStreamSource가 지정된 스트림에 대해 MediaStreamSample을 요청할 때 발생합니다.

Starting

MediaStreamSourceMediaStreamSample 개체 요청을 시작할 준비가 되면 발생합니다. 이벤트는 첫 번째 MediaStreamSample 이 전달되어야 하는 미디어 시간 줄의 위치를 지정할 수 있습니다.

SwitchStreamsRequested

MediaStreamSource가 특정 스트림에 대한 MediaStreamSample 개체 요청을 중지하고 대신 다른 스트림에서 MediaStreamSample 개체 요청을 시작할 때 발생합니다.

적용 대상

추가 정보