MediaCapture 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
웹캠과 같은 캡처 디바이스에서 사진, 오디오 및 비디오를 캡처하는 기능을 제공합니다.
public ref class MediaCapture sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
class MediaCapture final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class MediaCapture final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
public sealed class MediaCapture : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Standard)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class MediaCapture : System.IDisposable
function MediaCapture()
Public NotInheritable Class MediaCapture
Implements IDisposable
- 상속
- 특성
- 구현
Windows 요구 사항
디바이스 패밀리 |
Windows 10 (10.0.10240.0에서 도입되었습니다.)
|
API contract |
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)
|
앱 기능 |
backgroundMediaRecording
microphone
webcam
|
예제
다음 코드 샘플에서는 MediaCapture 개체를 만들고 초기화하는 방법을 보여줍니다.
// Create and initialze the MediaCapture object.
public async void InitMediaCapture()
{
_mediaCapture = null;
_mediaCapture = new Windows.Media.Capture.MediaCapture();
// Set the MediaCapture to a variable in App.xaml.cs to handle suspension.
(App.Current as App).MediaCapture = _mediaCapture;
await _mediaCapture.InitializeAsync(_captureInitSettings);
CreateProfile();
}
일시 중단을 처리하는 방법에 대한 자세한 내용은 앱 일시 중단 처리를 참조하세요.
<StackPanel Orientation="Horizontal">
<CaptureElement x:Name="capturePreview" Width="320" Height="240" />
<Image x:Name="imagePreview" 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));
// imagePreview is a <Image> object defined in XAML
imagePreview.Source = bmpImage;
}
설명
MediaCapture 클래스는 카메라에서 오디오, 비디오 및 이미지를 캡처하는 데 사용됩니다. 카메라 미리 보기를 표시하기 위한 방법 지침은 카메라 미리 보기 표시를 참조하세요. 사진, 오디오 또는 비디오 캡처를 빠르게 시작하려면 MediaCapture를 사용하여 기본 사진, 비디오 및 오디오 캡처를 참조하세요.
카메라 페이지는 앱에서 MediaCapture를 사용하기 위한 방법 지침에 대한 기본 허브입니다. 이 페이지는 기본 카메라 작업 외에도 다음을 비롯한 고급 시나리오에 대한 방법 문서에 연결됩니다.
- 디바이스에 하드웨어 카메라 단추 사용
- 디바이스 및 화면 방향 처리
- 카메라 프로필을 사용하여 디바이스 기능 확인
- 캡처된 비디오의 형식, 해상도 및 프레임 속도 설정
- AdvancedPhotoCapture를 사용하여 HDR 또는 저조도 사진 캡처
- VideoDeviceController를 사용하여 노출, 흰색 균형, 자동 초점 및 플래시와 같은 수동 카메라 컨트롤에 액세스
- 비디오를 캡처하는 동안 효과 사용
- 사진 시퀀스 캡처
- MediaFrameReader를 사용하여 rgb, 적외선 및 깊이 카메라를 포함하여 하나 이상의 카메라에서 프레임 스트림을 가져옵니다.
- 미리 보기 스트림에서 프레임 가져오기
카메라 문서는 카메라시작 키트 샘플과 같은 카메라에 대한 모든 UWP SDK 샘플에도 연결됩니다.
MediaCapture 개체를 초기화하는 InitializeAsync 메서드를 호출해야 디바이스에서 미리 보기 또는 캡처를 시작할 수 있습니다. C# 또는 C++ 앱에서 InitializeAsync를 호출하는 MediaCapture 개체의 첫 번째 사용은 STA 스레드에 있어야 합니다. MTA 스레드에서 호출하면 정의되지 않은 동작이 발생할 수 있습니다. InitializeAsync 는 앱이 마이크 또는 카메라에 액세스할 수 있는 사용자의 권한을 얻기 위해 동의 프롬프트를 시작합니다. 앱의 기본 UI 스레드에서 InitializeAsync를 호출해야 합니다. 앱은 미디어 캡처 리소스를 제대로 정리하여 앱 일시 중단 또는 종료를 처리해야 합니다. MediaCapture 개체를 올바르게 종료하는 방법에 대한 자세한 내용은 MediaCapture를 사용하여 기본 사진, 비디오 및 오디오 캡처를 참조하세요.
Windows에서 음악 및 미디어 캡처 앱은 SystemMediaTransportControls.SoundLevel 을 모니터링하여 앱의 오디오 스트림이 음소거되었는지 여부를 확인해야 합니다. MediaCapture 개체를 사용하는 앱의 경우 앱의 캡처 스트림이 음소거되면 캡처가 자동으로 중지됩니다. 오디오 스트림이 음소거되지 않은 경우 캡처가 자동으로 다시 시작되지 않으므로 SoundLevel 변경 알림을 사용하여 캡처를 다시 시작할 수 있습니다. SystemMediaTransportControls.PropertyChanged 이벤트를 사용하여 SoundLevel 속성이 변경되는 시기를 확인합니다.
Windows Phone 8.x 앱의 경우 음악 및 미디어 앱은 Suspending 이벤트 처리기에서 MediaCapture 개체 및 관련 리소스를 클린 다시 시작 이벤트 처리기에서 다시 만들어야 합니다.
Windows 8.1 오디오 전용 앱에서 MediaCategory 설정이 기타이면 대기 시간이 긴 모드가 사용됩니다. 짧은 대기 시간의 경우 MediaCategory 설정을 Communications로 설정합니다.
캡처 미리 보기에 현재 위치 편집 미디어 파운데이션 변환 효과를 추가해도 스트림에는 영향을 주지 않습니다.
웹캠 및 마이크 기능을 모두 선언한 Windows 8 UWP 앱은 사용자가 웹캠 및 마이크 개인 정보 설정을 모두 사용하도록 설정하지 않은 경우 Windows 8.1 작동하지 않습니다.
MediaCapture는 하나의 패스 CBR 인코딩만 지원합니다.
JPEG에 대한 참고 사항: JPEG 형식은 통과에만 해당합니다. 이미지를 캡처하려면 이미지 인코딩 프로필을 Auto로 설정하거나 네이티브 형식과 일치하는 인코딩 프로필을 지정해야 합니다. 효과를 추가하려면 NV12 또는 RGB32와 같은 압축되지 않은 비디오 네이티브 미디어 유형으로 전환해야 합니다.
H.264에 대한 참고 사항: 네이티브 형식이 H.264인 경우 네이티브 형식과 동일한 형식의 비디오 미디어 형식을 사용하여 녹화할 수 있습니다. H.264 네이티브 형식 스트림에 효과를 추가할 수 없습니다. 비디오를 캡처하려면 이미지 인코딩 프로필을 Auto로 설정하거나 네이티브 형식과 일치하는 인코딩 프로필을 지정해야 합니다.
참고
이 클래스는 민첩하지 않으므로 스레딩 모델 및 마샬링 동작을 고려해야 합니다. 자세한 내용은 스레딩 및 마샬링(C++/CX) 및 다중 스레드 환경에서 Windows 런타임 개체 사용(.NET)을 참조하세요.
버전 기록
Windows 버전 | SDK 버전 | 추가된 값 |
---|---|---|
1607 | 14393 | CreateFrameReaderAsync(MediaFrameSource) |
1607 | 14393 | CreateFrameReaderAsync(MediaFrameSource,String) |
1607 | 14393 | CreateFrameReaderAsync(MediaFrameSource,String,BitmapSize) |
1607 | 14393 | FrameSources |
1607 | 14393 | PauseRecordWithResultAsync |
1607 | 14393 | RemoveEffectAsync |
1607 | 14393 | StopRecordWithResultAsync |
1703 | 15063 | CaptureDeviceExclusiveControlStatusChanged |
1703 | 15063 | CreateMultiSourceFrameReaderAsync |
2004 | 19041 | CreateRelativePanelWatcher |
생성자
MediaCapture() |
MediaCapture 개체의 새 instance 만듭니다. |
속성
AudioDeviceController |
마이크의 설정을 제어하는 개체를 가져옵니다. |
CameraStreamState |
카메라 스트림의 현재 스트림 상태를 가져옵니다. |
FrameSources |
미디어 프레임을 획득하는 데 동시에 사용할 수 있는 MediaFrameSource 개체의 읽기 전용 사전을 가져옵니다. |
MediaCaptureSettings |
MediaCapture 개체의 구성 설정을 가져옵니다. |
ThermalStatus |
캡처 디바이스의 현재 열 상태 나타내는 값을 가져옵니다. |
VideoDeviceController |
비디오 카메라의 설정을 제어하는 개체를 가져옵니다. |
메서드
이벤트
CameraStreamStateChanged |
카메라 스트림의 상태가 변경되면 발생합니다. |
CaptureDeviceExclusiveControlStatusChanged |
캡처 디바이스의 배타적 제어 상태 변경되면 발생합니다. |
Failed |
미디어 캡처 중에 오류가 발생할 때 발생합니다. |
FocusChanged |
캡처 디바이스가 포커스를 변경할 때 발생합니다. |
PhotoConfirmationCaptured |
사진 확인 프레임이 캡처될 때 발생합니다. |
RecordLimitationExceeded |
레코드 제한을 초과할 때 발생합니다. |
ThermalStatusChanged |
캡처 디바이스의 열 상태 변경되면 발생합니다. |