DirectShow DirectShow 편집 서비스 Visual Basic 레퍼런스 개체 MediaDet [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
미디어 파일에 관해서, 스트림의 수, 타입, 시간폭, 각 스트림의 frame rate등의 정보를 얻어온다. 이 인터페이스에는, 비디오 스트림으로부터 포스터 프레임을 얻어온다 메서드도 포함되어 있다.
파일에 관한 정보를 얻어오려면, 이하의 순서를 실행한다.
포스터 프레임을 얻어오려면,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)에의 참조를 프로젝트에 포함하는 것.