DirectShow DirectShow 편집 서비스 Visual Basic 레퍼런스 개체 MediaDet   [목차열람] [주소복사] [슬롯비우기]
MediaDet 개체
 
Microsoft DirectX 9.0

MediaDet 개체

미디어 파일에 관해서, 스트림의 수, 타입, 시간폭, 각 스트림의 frame rate등의 정보를 얻어온다. 이 인터페이스에는, 비디오 스트림으로부터 포스터 프레임을 얻어온다 메서드도 포함되어 있다.

파일에 관한 정보를 얻어오려면, 이하의 순서를 실행한다.

  1. MediaDet 개체의 새로운 인스턴스를 생성 한다.
  2. Filename 프로퍼티에 소스 파일의 이름을 설정한다.
  3. OutputStreams 프로퍼티로부터, 소스내의 출력 스트림의 수를 얻어온다.
  4. CurrentStream 프로퍼티에, 특정의 스트림을 설정한다.
  5. 다음의 프로퍼티의 어느쪽이든을 얻어온다 : StreamType ,StreamMediaType . StreamLength , 또는 FrameRate .

포스터 프레임을 얻어오려면,WriteBitmapBits 를 호출한다. 이 메서드를 호출하면,MediaDet 개체는비트 맵 글로브 모드라고 하는 새로운 모드로 설정된다. 전술의 정보 취득 메서드는, 이 모드에서는 동작하지 않는다. 그 때문에, 정보의 취득은 포스터 프레임의 취득전에 실시할 필요가 있다. 또는, 스트림 마다 MediaDet 개체의 새로운 인스턴스를 생성 한다.

MediaDet 개체는, 비디오 또는 오디오가 아닌 파일의 스트림을 무시한다. 예를 들어, 파일에, 오디오 스트림, 데이터 스트림, 비디오 스트림이 포함되는 경우,OutputStreams 프로퍼티는 2 개의 스트림 (오디오와 비디오)만을 보고한다.

샘플 코드

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  ' twip 를 픽셀로 변환한다.
    Det.WriteBitmapBits 0, Preview.ScaleWidth, Preview.ScaleHeight, TempFile
    Preview.Picture = LoadPicture(TempFile)
End If

이 개체에는 이하의 프로퍼티 및 메서드가 포함된다.

프로퍼티 설명
CurrentStream MediaDet 개체가 현재 사용하고 있는 스트림의 수.
Filename MediaDet 개체가 현재 사용하고 있는 소스 파일의 이름.
Filter Visual Basic은 지원하지 않는다.
OutputStreams 미디어 소스에 포함되는 오디오와 비디오 스트림의 수.
FrameRate 현재의 스트림의 frame rate (매초의 프레임수).
StreamLength 현재의 스트림의 시간폭 (초단위).
StreamMediaType Visual Basic은 지원하지 않는다.
StreamType Visual Basic은 지원하지 않는다.
StreamTypeB 현재의 스트림의 미디어 타입의 GUID 를 나타내는 캐릭터 라인.

메서드 설명
EnterBitmapGrabMode MediaDet 개체를 비트 맵 글로브 모드로 전환해 필터 그래프의 지정의 시간을 시크 한다.
GetBitmapBits Visual Basic은 지원하지 않는다.
GetSampleGrabber Visual Basic은 지원하지 않는다.
WriteBitmapBits 지정된 미디어 타임의 포스터 프레임을 취득해, 그것을 파일에 기입한다.

요건

"Dexter 1.0 Type Library" (Qedit.dll)에의 참조를 프로젝트에 포함하는 것.

↑TOP