확장 최소화

MediaCapture Class

웹캠과 같은 캡처 장치에서 사진, 오디오 및 비디오를 캡처하는 기능을 제공합니다.

구문


var mediaCapture = new Windows.Media.Capture.MediaCapture();

특성

[DualApiPartition()]
[MarshalingBehavior(Standard)]
[Threading(MTA)]
[Version(0x06020000)]

멤버

MediaCapture클래스에는 다음과 같은 형식의 멤버가 있습니다.

생성자

MediaCapture클래스에는 다음과 같은 생성자가 있습니다.

생성자Description
MediaCapture Creates a new instance of the MediaCapture object.

 

이벤트

MediaCapture클래스에는 다음과 같은 이벤트가 있습니다.

이벤트Description
Failed Raised when an error occurs during media capture.
RecordLimitationExceeded Occurs when the record limit is exceeded.

 

메서드

The MediaCapture 클래스 - 이러한 메서드가 있습니다. C#, Visual Basic 및 C++에서는 다음 위치의 메서드도 상속합니다. Object 클래스.

메서드Description
AddEffectAsync Adds an audio or video effect.
CapturePhotoToStorageFileAsync Captures a photo to a storage file.
CapturePhotoToStreamAsync Captures a photo to a random-access stream.
ClearEffectsAsync Removes all audio and video effects from a stream.
Close [C++, JavaScript]Closes the media capture object.
Dispose [C#, VB]Performs tasks associated with freeing, releasing, or resetting unmanaged resources.
GetEncoderProperty Gets the value of an encoding property.
GetPreviewMirroring Queries whether the video stream is mirrored horizontally.
GetPreviewRotation Gets the rotation of the video preview stream.
GetRecordRotation Gets the rotation of the recorded video.
InitializeAsync() Initializes the MediaCapture object, using default settings.
InitializeAsync(MediaCaptureInitializationSettings) Initializes the MediaCapture object.
PrepareLowLagPhotoCaptureAsync Initializes the low shutter lag photo capture and provides the LowLagPhotoCapture object used to manage the recording.
PrepareLowLagPhotoSequenceCaptureAsync Initializes the low shutter lag photo sequence capture and provides the LowLagPhotoSequenceCapture object used to manage the recording.
PrepareLowLagRecordToCustomSinkAsync(MediaEncodingProfile, IMediaExtension) Initializes the low lag recording using the specified custom sink to store the recording. This method provides the LowLagMediaRecording object used to managed the capture.
PrepareLowLagRecordToCustomSinkAsync(MediaEncodingProfile, String, IPropertySet) Initializes the low lag recording using the specified custom sink to store the recording. This method provides the LowLagMediaRecording object used to managed the recording.
PrepareLowLagRecordToStorageFileAsync Initializes the low lag recording using the specified file to store the recording. This method provides the LowLagMediaRecording object used to managed the recording.
PrepareLowLagRecordToStreamAsync Initializes the low lag recording using the specified random-access stream to store the recording. This method provides the LowLagMediaRecording object used to managed the recording.
SetEncoderProperty Sets an encoding property.
SetEncodingPropertiesAsync Asynchronously sets the media encoding properties.
SetPreviewMirroring Enables or disables horizontal mirroring of the video preview stream.
SetPreviewRotation Rotates the video preview stream.
SetRecordRotation Rotates the recorded video.
StartPreviewAsync Starts preview.
StartPreviewToCustomSinkAsync(MediaEncodingProfile, IMediaExtension) Starts sending a preview stream to a custom media sink using the specified encoding profile.
StartPreviewToCustomSinkAsync(MediaEncodingProfile, String, IPropertySet) Starts sending a preview stream to a custom media sink using the specified encoding profile and sink settings.
StartRecordToCustomSinkAsync(MediaEncodingProfile, IMediaExtension) Start recording to a custom media sink using the specified encoding profile.
StartRecordToCustomSinkAsync(MediaEncodingProfile, String, IPropertySet) Start recording to a custom media sink using the specified encoding profile and sink settings.
StartRecordToStorageFileAsync Starts recording asynchronously to a storage file.
StartRecordToStreamAsync Starts recording to a random-access stream.
StopPreviewAsync Stops preview.
StopRecordAsync Stops recording.

 

속성

MediaCapture클래스 - 이러한 속성이 있습니다.

속성사용 권한Description

AudioDeviceController

읽기 전용Gets an object that controls settings for the microphone.

MediaCaptureSettings

읽기 전용Gets the configuration settings for the MediaCapture object.

VideoDeviceController

읽기 전용Gets an object that controls settings for the video camera.

 

설명

MediaCapture 클래스는 오디오, 동영상 및 카메라의 이미지를 캡처하는 데 사용됩니다. 장치에서 캡처를 시작하기 전에 캡처 장치를 초기화하는 InitializeAsync 메서드를 호출해야 합니다.

PrepareLowLagPhotoSequenceCaptureAsync를 사용하여 사진의 빠른 시퀀스를 사용하는 사진 시퀀스 모드를 설정합니다. 사진 시퀀스 사용 예제는 미디어 캡처 샘플을 참조하십시오.

VideoDeviceController 속성을 사용하여 캡처 장치와 상호 작용할 수 있습니다. 예를 들어 TorchControlFlashControl 속성을 사용하여 장치의 LED 및 플래시를 설정할 수 있습니다. VideoDeviceController의 다른 속성은 SceneModeControl, RegionsOfInterestControl, FocusControlIsoSpeedControl입니다. 각 컨트롤은 장치 하드웨어가 컨트롤을 지원하는지 여부를 확인하는 Supported 속성을 제공합니다.

C# 또는 C++ 앱에서는 InitializeAsync 호출에 대한 MediaCapture 개체의 첫 번째 사용이 STA 스레드에 있어야 합니다. MTA 스레드에서 호출하면 정의되지 않은 동작이 발생할 수 있습니다.

InitializeAsync는 앱에서 마이크나 카메라에 액세스할 수 있도록 사용자의 허가를 얻기 위해 동의 프롬프트를 시작합니다. InitializeAsync는 앱의 주 UI 스레드에서 호출해야 합니다. 자세한 내용은 중요한 장치를 사용하기 위한 지침을 참조하십시오.

미리 보기 중인 앱이 보이지 않는 상태가 될 경우 미리 보기를 중지해야 합니다. 앱이 다시 보이는 상태가 될 경우 MediaCapture를 다시 만들어야 합니다.

음악 및 미디어 캡처 앱에서 SystemMediaTransportControls.SoundLevel을 모니터링하여 앱의 오디오 스트림이 Muted되었는지 확인해야 합니다. MediaCapture 개체를 사용하는 앱의 경우 앱의 캡처 스트림이 음소거되면 캡처가 자동 중지됩니다. 오디오 스트림의 음소거를 해제해도 자동으로 다시 캡처가 시작되지 않으므로 SoundLevel 변경 알림을 사용하여 다시 캡처를 시작할 수 있습니다. SystemMediaTransportControls.PropertyChanged 이벤트를 사용하여 SoundLevel 속성이 언제 변경되는지 확인합니다.

Windows 8.1 오디오 전용 앱에서는 MediaCategory 설정이 Other인 경우 높은 대기 시간 모드가 사용됩니다. 대기 시간을 낮추려면 MediaCategory 설정을 Communications로 설정합니다.

MediaCapture는 1단계 CBR 인코딩만 지원합니다.

Notes on JPEG: JPEG 형식은 단지 통과합니다. 이미지를 캡처하려면 이미지 인코딩 프로필을 자동으로 설정하거나 네이티브 형식과 일치하는 인코딩 프로필을 지정해야 합니다. 효과를 추가하려면 NV12 또는 RGB32 같은 압축하지 않은 동영상 원시 미디어 형식으로 전환해야 합니다.

Notes on H.264: 기본 형식이 H.264인 경우 기본 형식과 동일한 형식의 동영상 미디어 형식을 사용하여 기록할 수 있습니다. H.264 네이티브 형식 스트림에 효과를 추가할 수 없습니다. 동영상을 캡처하려면 이미지 인코딩 프로필을 자동으로 설정하거나 네이티브 형식과 일치하는 인코딩 프로필을 지정해야 합니다.

참고  : 이 클래스는 Agile 클래스가 아닙니다. 즉, 이 클래스의 스레딩 모델 및 마샬링 동작을 고려해야 합니다. 자세한 내용은 스레딩 및 마샬링(C++/CX)다중 스레드 환경에서 Windows 런타임 개체 사용(.NET)을 참조하십시오.

예제

다음 코드 샘플에서는 MediaCapture 개체를 만들고 초기화하는 방법을 보여 줍니다.


// Create and initialze the MediaCapture object.
function initMediaCapture() {
    oMediaCapture = null;
    oMediaCapture = new Windows.Media.Capture.MediaCapture();
    oMediaCapture.initializeAsync(captureInitSettings).then (function (result) {
       createProfile();
    }, errorHandler);    
}


다음은 CaptureElement를 사용하여 웹캠을 미리보고 사진을 촬영하여 Image 개체에 표시하는 방법에 대한 예제입니다. XAML은 CaptureElement, ImageMediaCapture 요소를 조작할 일부 Button 개체를 사용하여 간단한 UI를 만듭니다. 코드에는 MediaCapture 개체를 초기화하기 위한 메서드, MediaCapture 개체에 연결된 카메라 미리 보기를 시작하기 위한 메서드 및 사진을 가져와서 이를 표시하기 위한 메서드가 있습니다.


<StackPanel Orientation="Horizontal">
    <CaptureElement x:Name="capturePreview" Width="320" Height="240" />
    <Image x:Name="imagePreivew" Stretch="None" Width="320" Height="240" />
</StackPanel>

<StackPanel Orientation="Horizontal">
    <Button Click="InitCamera_Click" Content="Initialize Camera" />
    <Button Click="StartCapturePreview_Click" Content="Start Capture Preview" />
    <Button Click="CapturePhoto_Click" Content="Capture Photo"/>
    <Button Click="StopCapturePreview_Click" Content="Stop Capture Preview" />
</StackPanel>



Windows.Media.Capture.MediaCapture captureManager;

async private void InitCamera_Click(object sender, RoutedEventArgs e)
{
    captureManager = new MediaCapture();
    await captureManager.InitializeAsync();
}

async private void StartCapturePreview_Click(object sender, RoutedEventArgs e)
{
    capturePreview.Source = captureManager;
    await captureManager.StartPreviewAsync();
}

async private void StopCapturePreview_Click(object sender, RoutedEventArgs e)
{
    await captureManager.StopPreviewAsync();
}

async private void CapturePhoto_Click(object sender, RoutedEventArgs e)
{
    ImageEncodingProperties imgFormat = ImageEncodingProperties.CreateJpeg();

    // create storage file in local app storage
    StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(
        "TestPhoto.jpg",
        CreationCollisionOption.GenerateUniqueName);

    // take photo
    await captureManager.CapturePhotoToStorageFileAsync(imgFormat, file);

    // Get photo as a BitmapImage
    BitmapImage bmpImage = new BitmapImage(new Uri(file.Path));

    // imagePreivew is a <Image> object defined in XAML
    imagePreivew.Source = bmpImage;
}


미디어 캡처 사용 예제는 미디어 캡처 샘플을 참조하십시오.

미디어 캡처 및 기타 주요 Windows 8 기능을 사용하려고 할 경우 Windows 8용 실습을 다운로드합니다. 이러한 랩은 선택한 프로그래밍 언어(JavaScript와 HTML 또는 C#과 XAML)로 샘플 Windows 스토어 앱을 만드는 모듈식 단계별 소개를 제공합니다.

요구 사항

지원되는 최소 클라이언트

Windows 8 [Windows 스토어 앱, 데스크톱 앱]

지원되는 최소 서버

Windows Server 2012 [Windows 스토어 앱, 데스크톱 앱]

Namespace

Windows.Media.Capture
Windows::Media::Capture [C++]

Metadata

Windows.winmd

Capabilities

webcam
microphone

참고 항목

중요한 장치를 사용하기 위한 지침
로드맵
C++, C# 또는 Visual Basic을 사용하여 Windows 스토어 앱에 멀티미디어 추가
JavaScript를 사용하여 Windows 스토어 앱에 멀티미디어 추가
샘플
미디어 캡처 샘플
카메라 캡처 UI 샘플
카메라 옵션 UI 샘플
장치 열거형 샘플
실시간 통신 샘플
미디어 확장 샘플
Windows 8용 실습
기타 리소스
지원되는 오디오 및 동영상 형식

 

 

표시:
© 2014 Microsoft