Skip to main content
MediaCapture Class

Предоставляет функциональные возможности для захвата фото, аудио и видео с устройства захвата, такого как веб-камера.

Синтаксис


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

public sealed class MediaCapture : IDisposable

Public NotInheritable Class MediaCapture
    Implements IDisposable

public ref class MediaCapture sealed : IClosable

Атрибуты

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

Члены

MediaCaptureКласс имеет следующие типы членов:

Конструкторы

MediaCaptureКласс имеет эти конструкторы.

КонструкторОписание
MediaCapture Creates a new instance of the MediaCapture object.

 

События

MediaCaptureКласс имеет эти события.

СобытиеОписание
Failed Raised when an error occurs during media capture.
RecordLimitationExceeded Occurs when the record limit is exceeded.

 

Методы

The MediaCapture Класс имеет следующие методы. В C#, Visual Basic и C++ также наследует методы от Object Класс.

МетодОписание
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Класс имеет следующие свойства.

СвойствоТип доступаОписание

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 может быть использовано для взаимодействия с устройством захвата. Например, можно использовать свойства TorchControl и FlashControl, чтобы настроить ЖК-индикатор и вспышку на устройстве. Другие свойства VideoDeviceController SceneModeControl, RegionsOfInterestControl, FocusControlи IsoSpeedControl. Каждый элемент управления предоставляет свойство Supported, чтобы определить, поддерживается ли элемент управления устройством.

В приложениях, написанных на языке C# или C++, первое использование объекта MediaCapture для вызова метода InitializeAsync должно иметь место в потоке STA. Вызовы из потока MTA могут привести к неопределенному поведению.

Метод InitializeAsync запускает запрос на продолжение для получения разрешения пользователя для доступа приложения к микрофону или камере. Метод InitializeAsync должен вызываться из основного потока пользовательского интерфейса приложения. Дополнительные сведения см. в разделе Рекомендации по включению конфиденциальных устройств.

Если приложение выполняет предварительный просмотр и переходит в невидимое состояние, предварительный просмотр должен быть остановлен. Если приложение возвращается в видимое состояние, необходимо повторно создать MediaCapture.

Приложения захвата музыки и мультимедиа должны отслеживать SystemMediaTransportControls.SoundLevel, чтобы определить, не находится ли звуковой поток в приложении в состоянии Muted. Для приложений, использующих объект MediaCapture, захват будет автоматически остановлен при отключении звука потоков захвата приложения. Захват не запускается повторно автоматически, если звуковые потоки не отключены, поэтому уведомление об изменении SoundLevel можно использовать для повторного запуска захвата. Используйте событие SystemMediaTransportControls.PropertyChanged, чтобы определить момент изменения свойства SoundLevel.

В приложениях Windows 8.1 только со звуком, если параметр MediaCategory равен Other, то используется режим высокой задержки. Чтобы сократить задержку, установите параметр MediaCategory в значение Communications.

MediaCapture поддерживает только однопроходное кодирование CBR.

Notes on JPEG: типы JPEG являются только сквозными. Для захвата изображения для профиля кодирования изображения можно задать значение Auto; либо необходимо указать профиль кодирования, соответствующий собственному типу. Чтобы добавить эффект, необходимо перейти к собственному мультимедийному типу несжатого видео, такому как NV12 или RGB32.

Notes on H.264: если собственный тип — H.264, можно записывать с использованием видеотипа мультимедиа, идентичного собственному типу. Добавление эффекта к потоку H.264 собственного типа невозможно. Для захвата видео для профиля кодирования изображения можно задать значение Auto; либо необходимо указать профиль кодирования, соответствующий собственному типу.

Примечание  : этот класс не является гибким, что означает необходимость учета его потоковой модели и поведения маршалинга. Дополнительные сведения см. в разделах Работа с потоками и маршалинг (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, Image и некоторых объектов Button для взаимодействия с элементом MediaCapture. В коде имеется метод для инициализации объекта 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. Эти лабораторные работы предоставляют модульное пошаговое введение в создание примеров приложений Магазина Windows на выбранном языке программирования (JavaScript и HTML или C# и XAML).

Требования

Минимальный поддерживаемый клиент

Windows 8 [Приложения для Магазина Windows, классические приложения]

Минимальный поддерживаемый сервер

Windows Server 2012 [Приложения для Магазина Windows, классические приложения]

Пространство имен

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

Metadata

Windows.winmd

Capabilities

webcam
microphone

См. также

Рекомендации по включению конфиденциальных устройств
Путеводители
Добавление мультимедиа в приложения Магазина Windows на языке C++, C# или Visual Basic
Добавление мультимедиа в приложения Магазина Windows на языке JavaScript
Примеры
Пример захвата мультимедиа
Пример пользовательского интерфейса захвата с камеры
Пример пользовательского интерфейса параметров камеры
Пример перечисления устройств
Пример связи в режиме реального времени
Пример расширения мультимедиа
Практические лаборатории для Windows 8
Другие источники
Поддерживаемые аудио- и видеоформаты

 

 

Корпорация Майкрософт проводит интернет-опрос, чтобы выяснить ваше мнение о веб-сайте. Если вы желаете принять участие в этом интернет-опросе, он будет отображен при закрытии веб-сайта.

Вы желаете принять участие?