Microsoft DirectX 8.0 |
メディア ファイルに関して、ストリームの数とタイプ、時間幅、各ストリームのフレーム レートなどの情報を取得する。このインターフェイスには、ビデオ ストリームからポスター フレームを取得するメソッドも含まれている。
ファイルに関する情報を取得するには、以下の手順を実行する。
ポスター フレームを取得するには、WriteBitmapBits を呼び出す。このメソッドを呼び出すと、MediaDet オブジェクトはビットマップ グラブ モードという新しいモードに設定される。前述の情報取得メソッドは、このモードでは動作しない。そのため、情報の取得はポスター フレームの取得の前に行う必要がある。 または、ストリームごとに MediaDet オブジェクトの新しいインスタンスを作成する。
次のコードは、このオブジェクトの使用方法の例である。
Dim Det As New MediaDet Const VideoGUID As String = "{73646976-0000-0010-8000-00AA00389B71}" bFoundVidStream = False Det.FileName = "C:\Media\Example.avi" ' ビデオ ストリームを検索する For i = 0 To Det.OutputStreams - 1 Det.CurrentStream = i StreamType = Det.StreamTypeB If StrComp(StreamType, VideoGUID, vbTextCompare) = 0 Then bFoundVidStream = True Exit For End If Next If bFoundVidStream Then ' 時間幅を使ってラベルを更新する VideoInfo.Caption = Det.FileName + ":" + Str(Det.StreamLength) + " seconds" ' ポスター フレームをロードする TempFile = "C:\Temp.bmp" Preview.ScaleMode = vbPixels ' Scale twips to pixels. Det.WriteBitmapBits 0, Preview.ScaleWidth, Preview.ScaleHeight, TempFile Preview.Picture = LoadPicture(TempFile) End If
プロパティ
CurrentStream MediaDet オブジェクトが現在使用しているストリームの数。 Filename MediaDet オブジェクトが現在使用しているソース ファイルの名前。 Filter Visual Basic ではサポートされていない。 OutputStreams メディア ソースに含まれる出力ストリームの数。 FrameRate 現在のストリームのフレーム レート (1 秒あたりのフレーム数)。 StreamLength 現在のストリームの時間幅、単位は秒。 StreamMediaType Visual Basic ではサポートされていない。 StreamType Visual Basic ではサポートされていない。 StreamTypeB 現在のストリームのメディア タイプの GUID を表す文字列。
メソッド
EnterBitmapGrabMode MediaDet オブジェクトをビットマップ グラブ モードに切り替え、フィルタ グラフの指定の時間をシークする。 GetBitmapBits Visual Basic ではサポートされていない。 GetSampleGrabber Visual Basic ではサポートされていない。 WriteBitmapBits 指定されたメディア タイムのポスター フレームを取得し、それをファイルに書き込む。
MediaDet オブジェクトが現在使用しているストリームの数。読み取り/書き込み。
構文
object.CurrentStream As Long
パラメータ
- object
- 結果が MediaDet オブジェクトになるオブジェクト式。
MediaDet オブジェクトが現在使用しているソース ファイルの名前。読み取り/書き込み。
構文
object.Filename As String
パラメータ
- object
- 結果が MediaDet オブジェクトになるオブジェクト式。
Visual Basic ではサポートされていない。
構文
object.Filter As Unknown
現在のストリームのフレーム レート (1 秒あたりのフレーム数)。読み取り専用。
構文
object.FrameRate As Double
パラメータ
- object
- 結果が MediaDet オブジェクトになるオブジェクト式。
注意
このストリームは、ビデオ ストリームでなければならない。このプロパティは、ASF ファイルに対しては無効である。MediaDet オブジェクトがビットマップ グラブ モードの場合、このプロパティは無効である。詳細については、「EnterBitmapGrabMode」を参照すること。
このプロパティを取得するには、先に Filename プロパティと CurrentStream プロパティを設定しておかなければならない。
メディア ソースに含まれる出力ストリームの数。読み取り専用。
構文
object.OutputStreams As Long
パラメータ
- object
- 結果が MediaDet オブジェクトになるオブジェクト式。
注意
このプロパティを取得するには、先に Filename プロパティを設定しておかなければならない
MediaDet オブジェクトがビットマップ グラブ モードの場合、このプロパティは無効である。詳細については、「EnterBitmapGrabMode」を参照すること。
現在のストリームの時間幅、単位は秒。
構文
object.StreamLength As Double
パラメータ
- object
- 結果が MediaDet オブジェクトになるオブジェクト式。
注意
このプロパティを取得するには、先に Filename プロパティと CurrentStream プロパティを設定しておかなければならない。
MediaDet オブジェクトがビットマップ グラブ モードの場合、このプロパティは無効である。詳細については、「EnterBitmapGrabMode」を参照すること。
Visual Basic ではサポートされていない。
構文
object.get_StreamMediaType As _AMMediaType
Visual Basic ではサポートされていない。
構文
object.StreamType As GUID
現在のストリームのメディア タイプの GUID を表す文字列。読み取り専用。
構文
object.StreamTypeB As String
パラメータ
- object
- 結果が MediaDet オブジェクトになるオブジェクト式。
注意
文字列の書式は次のように設定されている: {73647561-0000-0010-8000-00AA00389B71}。
このプロパティを取得するには、先に Filename プロパティと CurrentStream プロパティを設定しておかなければならない。MediaDet オブジェクトがビットマップ グラブ モードの場合、このプロパティは無効である。詳細については、「EnterBitmapGrabMode」を参照すること。
MediaDet オブジェクトをビットマップ グラブ モードに切り替え、フィルタ グラフの指定の時間をシークする。
構文
object.EnterBitmapGrabMode( SeekTime As Double )
パラメータ
- object
- 結果が MediaDet オブジェクトになるオブジェクト式。
- SeekTime
- グラフをシークする時間 (秒単位)。
エラー コード
メソッドでの処理が失敗するとエラーが発生し、Err.Number には次のいずれかの値が設定される場合がある。
E_INVALIDARG 無効な引数。 VFW_E_INVALIDMEDIATYPE ファイルはビデオ ストリームを持っていない。 VFW_E_TIME_EXPIRED シークできなかった。
注意
このメソッドを呼び出すには、先に Filename プロパティと CurrentStream プロパティを設定しておかなければならない。
このメソッドは、サンプル グラバ フィルタをフィルタ グラフに挿入する。MediaDet オブジェクトがビットマップ グラブ モードになったなら、MediaDet の各種の情報取得メソッドは機能しない。
GetBitmapBits メソッドおよび WriteBitmapBits メソッドも、オブジェクトをビットマップ グラブ モードに設定する。
Visual Basic ではサポートされていない。
構文
object.GetBitmapBits( StreamTime As Double, pBufferSize As Long, pBuffer As Byte, Width As Long, Height As Long )
Visual Basic ではサポートされていない。
構文
object.GetSampleGrabber( ppVal As SampleGrabber )
指定されたメディア タイムのポスター フレームを取得し、それをファイルに書き込む。
構文
object.WriteBitmapBits( StreamTime As Double, Width As Long, Height As Long, Filename As String )
パラメータ
- object
- 結果が MediaDet オブジェクトになるオブジェクト式。
- StreamTime
- ポスター フレームを取得する時間 (秒単位)。
- Width
- ポスター フレーム イメージの幅 (ピクセル単位)。
- Height
- ポスター フレーム イメージの高さ (ピクセル単位)。
- Filename
- ポスター フレームを保存するファイルのパス。ファイルが既に存在する場合、このメソッドはそのファイルにオーバーライドする。
エラー コード
メソッドでの処理が失敗するとエラーが発生し、Err.Number には次のいずれかの値が設定される場合がある。
E_NOINTERFACE サンプル グラバ フィルタをグラフに追加できなかった。 E_FAIL 失敗。 E_OUTOFMEMORY メモリ不足。 E_UNEXPECTED 予期しないエラー。 STG_E_ACCESSDENIED ファイルをオーバーライドできない。 VFW_E_INVALIDMEDIATYPE 無効なメディア タイプ。
注意
このメソッドを呼び出すには、先に Filename プロパティと CurrentStream プロパティを設定しておかなければならない。
このメソッドは、MediaDet オブジェクトをビットマップ グラブ モードに設定する。このメソッドが呼び出された後は、オブジェクトの新しいインスタンスを作成しなければ、IMediaDet の各種のストリーム情報取得メソッドは機能しない。