win8 metro MediaCapture 类

最近接触的项目是有关win8 metro 中camera的项目,其中比较重要的类就是 MediaCapture类,现在介绍一下MediaCapture类,也总结一下自己的一些项目体会:

下面是MediaCapture类的一些方法调用:


using System;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Foundation.Metadata;
using Windows.Media;
using Windows.Media.Devices;
using Windows.Media.MediaProperties;
using Windows.Storage;
using Windows.Storage.Streams;

namespace Windows.Media.Capture
{
    // Summary:
    //     Provides functionality for capturing photos, audio, and videos from a capture
    //     device, such as a webcam.
    [Activatable(100794368)]
    [DualApiPartition(version = 100794368)]
    [MarshalingBehavior(MarshalingType.Standard)]
    [Threading(ThreadingModel.MTA)]
    [Version(100794368)]
    public sealed class MediaCapture : IDisposable
    {

        //     创建一个MediaCapture对象的实例
        public MediaCapture();

        //返回一个控制microphone设置的对象,AudioDeviceController对象就是控制microphone设置的对象
        public AudioDeviceController AudioDeviceController { get; }
        //
     
        //MediaCaptureSettings对象包含MediaCapture的设置,这个函数返回MediaCapture对象的设置
        public MediaCaptureSettings MediaCaptureSettings { get; }
        //
    
        //返回一个对象,这个对象控制video camera的设置,VideoDeviceController就是这个对象
        public VideoDeviceController VideoDeviceController { get; }

        // Summary:
        //  这是MediaCapture类的 Events,当在media 捕获的时候发生错误时发生这个事件
        public event MediaCaptureFailedEventHandler Failed;
        //
        // Summary:
        // 这也是MediaCapture类的Events,当超过记录的限制的时候会触发这个事件
        public event RecordLimitationExceededEventHandler RecordLimitationExceeded;

        // Summary:
        //     Adds an audio or video effect.
        //
        // Parameters:
        //   mediaStreamType:
        //     Specifies the streams to which the effect will be applied.
        //
        //   effectActivationID:
        //     The class identifier of the activatable runtime class that implements the
        //     effect. The runtime class must implement the IMediaExtension interface.
        //
        //   effectSettings:
        //     Configuration parameters for the effect.
        //
        // Returns:
        //     Returns an IAsyncAction object that is used to control the asynchronous operation.
        public IAsyncAction AddEffectAsync(MediaStreamType mediaStreamType, string effectActivationID, IPropertySet effectSettings);
        //
        // Summary:
        //     Captures a photo to a storage file.
        //
        // Parameters:
        //   type:
        //     The encoding properties for the output image.
        //
        //   file:
        //     The storage file where the image is saved.
        //
        // Returns:
        //     Returns an IAsyncAction object that is used to control the asynchronous operation.
        public IAsyncAction CapturePhotoToStorageFileAsync(ImageEncodingProperties type, IStorageFile file);
        //
        // Summary:
        //     Captures a photo to a random-access stream.
        //
        // Parameters:
        //   type:
        //     The encoding properties for the output image.
        //
        //   stream:
        //     The stream where the image data is written.
        //
        // Returns:
        //     Returns an IAsyncAction object that is used to control the asynchronous operation.
        public IAsyncAction CapturePhotoToStreamAsync(ImageEncodingProperties type, IRandomAccessStream stream);
        //
        // Summary:
        //     Removes all audio and video effects from a stream.
        //
        // Parameters:
        //   mediaStreamType:
        //     The stream from which to remove the effects.
        //
        // Returns:
        //     Returns a IAsyncAction object that is used to control the asynchronous operation.
        public IAsyncAction ClearEffectsAsync(MediaStreamType mediaStreamType);
        //
        // Summary:
        //     Performs tasks associated with freeing, releasing, or resetting unmanaged
        //     resources.
        public void Dispose();
        //
        // Summary:
        //     Gets the value of an encoding property.
        //
        // Parameters:
        //   mediaStreamType:
        //     Specifies the stream to query for the encoding property.
        //
        //   propertyId:
        //     The encoding property to retrieve.
        //
        // Returns:
        //     Returns the value of the encoding property.
        public object GetEncoderProperty(MediaStreamType mediaStreamType, Guid propertyId);
        //
        // Summary:
        //     Queries whether the video stream is mirrored horizontally.
        //
        // Returns:
        //     True if mirroring is enabled; false otherwise.
        public bool GetPreviewMirroring();
        //
        // Summary:
        //     Gets the rotation of the video preview stream.
        //
        // Returns:
        //     The amount by which the video preview stream is rotated.
        public VideoRotation GetPreviewRotation();
        //
        // Summary:
        //     Gets the rotation of the recorded video.
        //
        // Returns:
        //     The amount by which the recorded video is rotated.
        public VideoRotation GetRecordRotation();
        //
        // Summary:
        //     Initializes the MediaCapture object, using default settings.
        //
        // Returns:
        //     Returns a IAsyncAction object that is used to control the asynchronous operation.
        [Overload("InitializeAsync")]
        public IAsyncAction InitializeAsync();
        //
        // Summary:
        //     Initializes the MediaCapture object.
        //
        // Parameters:
        //   mediaCaptureInitializationSettings:
        //     The initialization settings.
        //
        // Returns:
        //     Returns a IAsyncAction object that is used to control the asynchronous operation.
        [Overload("InitializeWithSettingsAsync")]
        public IAsyncAction InitializeAsync(MediaCaptureInitializationSettings mediaCaptureInitializationSettings);
        //
        // Summary:
        //     Initializes the low shutter lag photo capture and provides the LowLagPhotoCapture
        //     object used to manage the recording.
        //
        // Parameters:
        //   type:
        //     The encoding profile used for the image.
        //
        // Returns:
        //     When this method completes, a LowLagPhotoCapture object is returned which
        //     can be used to start the photo capture.
        public IAsyncOperation<LowLagPhotoCapture> PrepareLowLagPhotoCaptureAsync(ImageEncodingProperties type);
        //
        // Summary:
        //     Initializes the low shutter lag photo sequence capture and provides the LowLagPhotoSequenceCapture
        //     object used to manage the recording.
        //
        // Parameters:
        //   type:
        //     The encoding profile used for the image.
        //
        // Returns:
        //     When this method completes, a LowLagPhotoSequenceCapture object is returned
        //     which can be used to start the photo sequence capture.
        public IAsyncOperation<LowLagPhotoSequenceCapture> PrepareLowLagPhotoSequenceCaptureAsync(ImageEncodingProperties type);
        //
        // Summary:
        //     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.
        //
        // Parameters:
        //   encodingProfile:
        //     The encoding profile to use for the recording.
        //
        //   customMediaSink:
        //     The media extension for the custom media sink.
        //
        // Returns:
        //     When this method completes, a LowLagMediaRecording object is returned which
        //     can be used to start the photo capture.
        [Overload("PrepareLowLagRecordToCustomSinkAsync")]
        public IAsyncOperation<LowLagMediaRecording> PrepareLowLagRecordToCustomSinkAsync(MediaEncodingProfile encodingProfile, IMediaExtension customMediaSink);
        //
        // Summary:
        //     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.
        //
        // Parameters:
        //   encodingProfile:
        //     The encoding profile to use for the recording.
        //
        //   customSinkActivationId:
        //     The activatable class ID of the media extension for the custom media sink.
        //
        //   customSinkSettings:
        //     Contains properties of the media extension.
        //
        // Returns:
        //     When this method completes, a LowLagMediaRecording object is returned which
        //     can be used to start the photo capture.
        [Overload("PrepareLowLagRecordToCustomSinkIdAsync")]
        public IAsyncOperation<LowLagMediaRecording> PrepareLowLagRecordToCustomSinkAsync(MediaEncodingProfile encodingProfile, string customSinkActivationId, IPropertySet customSinkSettings);
        //
        // Summary:
        //     Initializes the low lag recording using the specified file to store the recording.
        //     This method provides the LowLagMediaRecording object used to managed the
        //     recording.
        //
        // Parameters:
        //   encodingProfile:
        //     The encoding profile for the recording.
        //
        //   file:
        //     The storage file where the image is saved.
        //
        // Returns:
        //     When this method completes, a LowLagMediaRecording object is returned which
        //     can be used to start the photo capture.
        public IAsyncOperation<LowLagMediaRecording> PrepareLowLagRecordToStorageFileAsync(MediaEncodingProfile encodingProfile, IStorageFile file);
        //
        // Summary:
        //     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.
        //
        // Parameters:
        //   encodingProfile:
        //     The encoding profile for the recording.
        //
        //   stream:
        //     The stream where the image data is written.
        //
        // Returns:
        //     When this method completes, a LowLagMediaRecording object is returned which
        //     can be used to start the photo capture.
        public IAsyncOperation<LowLagMediaRecording> PrepareLowLagRecordToStreamAsync(MediaEncodingProfile encodingProfile, IRandomAccessStream stream);
        //
        // Summary:
        //     Sets an encoding property.
        //
        // Parameters:
        //   mediaStreamType:
        //     The type of media data the stream represents, such as video or audio.
        //
        //   propertyId:
        //     The encoding property to set.
        //
        //   propertyValue:
        //     The new value of the encoding property.
        public void SetEncoderProperty(MediaStreamType mediaStreamType, Guid propertyId, object propertyValue);
        //
        // Summary:
        //     Asynchronously sets the media encoding properties.
        //
        // Parameters:
        //   mediaStreamType:
        //     The type of media data the stream represents, such as video or audio.
        //
        //   mediaEncodingProperties:
        //     The properties for the media encoding.
        //
        //   encoderProperties:
        //     The properties for the encoder.
        //
        // Returns:
        //     Object that is used to control the asynchronous operation.
        public IAsyncAction SetEncodingPropertiesAsync(MediaStreamType mediaStreamType, IMediaEncodingProperties mediaEncodingProperties, MediaPropertySet encoderProperties);
        //
        // Summary:
        //     Enables or disables horizontal mirroring of the video preview stream.
        //
        // Parameters:
        //   value:
        //     True to enable mirroring; false to disable mirroring.
        public void SetPreviewMirroring(bool value);
        //
        // Summary:
        //     Rotates the video preview stream.
        //
        // Parameters:
        //   value:
        //     The amount by which to rotate the video.
        public void SetPreviewRotation(VideoRotation value);
        //
        // Summary:
        //     Rotates the recorded video.
        //
        // Parameters:
        //   value:
        //     The amount by which to rotate the video.
        public void SetRecordRotation(VideoRotation value);
        //
        // Summary:
        //     Starts preview.
        //
        // Returns:
        //     Returns a IAsyncAction object that is used to control the asynchronous operation.
        public IAsyncAction StartPreviewAsync();
        //
        // Summary:
        //     Starts sending a preview stream to a custom media sink using the specified
        //     encoding profile.
        //
        // Parameters:
        //   encodingProfile:
        //     The encoding profile to use for the recording.
        //
        //   customMediaSink:
        //     The media extension for the custom media sink.
        //
        // Returns:
        //     An object that is used to control the asynchronous operation.
        [Overload("StartPreviewToCustomSinkAsync")]
        public IAsyncAction StartPreviewToCustomSinkAsync(MediaEncodingProfile encodingProfile, IMediaExtension customMediaSink);
        //
        // Summary:
        //     Starts sending a preview stream to a custom media sink using the specified
        //     encoding profile and sink settings.
        //
        // Parameters:
        //   encodingProfile:
        //     The encoding profile to use for the recording.
        //
        //   customSinkActivationId:
        //     The activatable class ID of the media extension for the custom media sink.
        //
        //   customSinkSettings:
        //     Contains properties of the media extension.
        //
        // Returns:
        //     An object that is used to control the asynchronous operation.
        [Overload("StartPreviewToCustomSinkIdAsync")]
        public IAsyncAction StartPreviewToCustomSinkAsync(MediaEncodingProfile encodingProfile, string customSinkActivationId, IPropertySet customSinkSettings);
        //
        // Summary:
        //     Start recording to a custom media sink using the specified encoding profile.
        //
        // Parameters:
        //   encodingProfile:
        //     The encoding profile to use for the recording.
        //
        //   customMediaSink:
        //     The media extension for the custom media sink.
        //
        // Returns:
        //     An object that is used to control the asynchronous operation.
        [Overload("StartRecordToCustomSinkAsync")]
        public IAsyncAction StartRecordToCustomSinkAsync(MediaEncodingProfile encodingProfile, IMediaExtension customMediaSink);
        //
        // Summary:
        //     Start recording to a custom media sink using the specified encoding profile
        //     and sink settings.
        //
        // Parameters:
        //   encodingProfile:
        //     The encoding profile to use for the recording.
        //
        //   customSinkActivationId:
        //     The activatable class ID of the media extension for the custom media sink.
        //
        //   customSinkSettings:
        //     Contains properties of the media extension.
        //
        // Returns:
        //     Anobject that is used to control the asynchronous operation.
        [Overload("StartRecordToCustomSinkIdAsync")]
        public IAsyncAction StartRecordToCustomSinkAsync(MediaEncodingProfile encodingProfile, string customSinkActivationId, IPropertySet customSinkSettings);
        //
        // Summary:
        //     Starts recording asynchronously to a storage file.
        //
        // Parameters:
        //   encodingProfile:
        //     The encoding profile for the recording.
        //
        //   file:
        //     The storage file where the image is saved.
        //
        // Returns:
        //     Returns a IAsyncAction object that is used to control the asynchronous operation.
        public IAsyncAction StartRecordToStorageFileAsync(MediaEncodingProfile encodingProfile, IStorageFile file);
        //
        // Summary:
        //     Starts recording to a random-access stream.
        //
        // Parameters:
        //   encodingProfile:
        //     The encoding profile for the recording.
        //
        //   stream:
        //     The stream where the image data is written.
        //
        // Returns:
        //     Returns a IAsyncAction object that is used to control the asynchronous operation.
        public IAsyncAction StartRecordToStreamAsync(MediaEncodingProfile encodingProfile, IRandomAccessStream stream);
        //
        // Summary:
        //     Stops preview.
        //
        // Returns:
        //     Returns a IAsyncAction object that is used to control the asynchronous operation.
        public IAsyncAction StopPreviewAsync();
        //
        // Summary:
        //     Stops recording.
        //
        // Returns:
        //     Returns a IAsyncAction object that is used to control the asynchronous operation.
        public IAsyncAction StopRecordAsync();
    }
}

MediaCapture类主要利用一些捕获装置,例如camera、microphone等,捕获照片、音频、视频等,并提供一些其他功能;

它的命名空间是 using Windows.Media.Capture;


如果要看一些示例运用,建议可以去win8 官网上面看看,或者我上两篇博文的实例里面都有一些涉及,谢谢大家,本期就介绍到这里。




win8 metro MediaCapture 类,布布扣,bubuko.com

win8 metro MediaCapture 类

上一篇:第二十三篇:Windows中的ACPI


下一篇:刷题总结