最近接触的项目是有关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 官网上面看看,或者我上两篇博文的实例里面都有一些涉及,谢谢大家,本期就介绍到这里。