近期接触的项目是有关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. //