MediaCapture クラス
TOC
目次を折りたたむ
目次を展開する

MediaCapture Class

Web カメラなどのキャプチャ デバイスからフォト、オーディオ、ビデオをキャプチャする機能が提供します。

構文


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

属性

[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 クラス には次のメソッドがあります。 With 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 を使用して、高速なシーケンスで写真を撮るフォト シーケンス モードを設定します。写真シーケンスの使用例については、「Media capture sample (メディア キャプチャのサンプル)」を参照してください。

VideoDeviceController プロパティを使用して、キャプチャ デバイスを対話形式で操作することができます。 たとえば、TorchControl プロパティと FlashControl プロパティを使用して、デバイスの LED とフラッシュを設定できます。 VideoDeviceController のその他のプロパティは、SceneModeControlRegionsOfInterestControlFocusControlIsoSpeedControl です。各コントロールには Supported プロパティがあり、デバイス ハードウェアがそのコントロールをサポートしているかどうかを確認できます。

C# または C++ アプリケーションで、InitializeAsync を呼び出すために最初に使用する MediaCapture オブジェクト は STA スレッドである必要があります。MTA スレッドから呼び出すと、未定義の動作が発生する場合があります。

InitializeAsync は、アプリケーションに対してユーザーのマイクまたはカメラへのアクセス許可を取得するように同意を求めるプロンプトを起動します。InitializeAsync は、アプリケーションのメイン UI スレッドから呼び出します。詳細については、「Guidelines for enabling sensitive devices (センシティブ デバイスの有効化のガイドライン)」を参照してください。

アプリケーションのプレビュー中に非表示状態になると、プレビューが停止します。 アプリケーションが再度表示状態になると、MediaCapture を再作成する必要があります。

音楽やメディアのキャプチャ アプリでは、SystemMediaTransportControls.SoundLevel を監視して、アプリのオーディオ ストリームが Muted になったかどうかを確認する必要があります。MediaCapture オブジェクトを使用するアプリでは、アプリのキャプチャ ストリームがミュートされると、キャプチャが自動的に停止します。オーディオ ストリームのミュートが解除されている場合にキャプチャは自動的に再起動されないため、SoundLevel の変更通知 を使用してキャプチャを再起動することができます。 SystemMediaTransportControls.PropertyChanged を使用して、SoundLevel プロパティが変更されたときにそれを判定します。

Windows 8.1 のオーディオのみのアプリでは MediaCategory の設定が Other の場合に、 待ち時間の長い モードが使用されます。 待機時間を短くするには、MediaCategory 設定を Communications に設定します。

MediaCapture は、1 パス CBR エンコードのみをサポートします。

Notes on JPEG: JPEG 型はパススルーのみです。イメージをキャプチャするには、イメージ エンコーディング プロファイルを Auto に設定します。または、ネイティブ型と一致するエンコーディング プロファイルを指定する必要があります。効果を追加するには、NV12 または RGB32 などの非圧縮ビデオ対応のメディア タイプに切り替える必要があります。

Notes on H.264: ネイティブ型が H.264 の場合、型がネイティブ型と同じビデオ メディア型を使用してビデオを記録できます。H.264 ネイティブ型ストリームに効果を追加することはできません。ビデオをキャプチャするには、イメージ エンコーディング プロファイルを Auto に設定します。または、ネイティブ型と一致するエンコーディング プロファイルを指定する必要があります。

メモ  : このクラスはアジャイルではないため、そのスレッド モデルとマーシャリングの動作を考慮する必要があります。詳細については、「スレッド処理とマーシャリング (C++/CX)」および「Using Windows Runtime objects in a multithreaded environment (.NET) (マルチスレッド環境での 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 を使用して Web カメラをプレビューする方法と、写真を撮影して Image オブジェクトに表示する方法を示す例を次に示します。XAML は、CaptureElementImage、および MediaCapture 要素とやり取りするためのいくつかの Button オブジェクトを使用して簡潔な UI を作成します。 コードでは、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;
}


メディア キャプチャの使用例については、「Media capture sample (メディア キャプチャのサンプル)」を参照してください。

メディア キャプチャなどの Windows 8 の機能を試す場合は、Windows 8 のハンズオン ラボをダウンロードします。これらのラボは、サンプルの Windows ストア アプリケーションを任意のプログラミング言語 (JavaScript と HTML または C# と XAML) で作成するためのモジュール式の操作手順を提供します。

要件

最小限サポートされるクライアント

Windows 8 [Windows ストア アプリ, デスクトップ アプリ]

最小限サポートされるサーバー

Windows Server 2012 [Windows ストア アプリ, デスクトップ アプリ]

名前空間

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

メタデータ

Windows.winmd

Capabilities

webcam
microphone

参照

センシティブ デバイスを有効化するためのガイドライン
ロードマップ
C++、C#、または Visual Basic を使用する Windows ストア アプリケーションへのマルチメディアの追加
JavaScript を使用する Windows ストア アプリケーションへのマルチメディアの追加
サンプル
メディア キャプチャのサンプル
カメラのキャプチャの UI のサンプル
カメラのオプションの UI のサンプル
デバイス列挙サンプル
リアルタイム通信サンプル
メディア拡張機能のサンプル
Windows 8 のハンズオン ラボ
その他のリソース
サポートされるオーディオ形式とビデオ形式

 

 

表示:
© 2018 Microsoft