vb6调用相机显示视频
在VB6中调用相机显示视频可以使用DirectShow组件库来实现。下面是一个简单的示例代码:
-
首先,在VB6中创建一个新的窗体(Form),并添加一个PictureBox控件和一个Command按钮控件。
-
在窗体的代码模块中添加以下代码:
Option Explicit
Private m_FilterGraph As IFilterGraph2
Private m_SampleGrabber As ISampleGrabber
Private m_MediaControl As IMediaControl
Private m_MediaEvent As IMediaEvent
Private Sub Form_Load()
Set m_FilterGraph = New FilterGraph
Set m_SampleGrabber = New SampleGrabber
Set m_MediaControl = m_FilterGraph
Set m_MediaEvent = m_FilterGraph
m_FilterGraph.RenderFile "C:\path\to\video.avi" ' 替换为实际视频文件路径
m_SampleGrabber.SetCallback Me
m_MediaControl.Run
End Sub
Private Sub Form_Unload(Cancel As Integer)
m_MediaControl.Stop
Set m_FilterGraph = Nothing
Set m_SampleGrabber = Nothing
Set m_MediaControl = Nothing
Set m_MediaEvent = Nothing
End Sub
Private Sub Command1_Click()
m_MediaControl.Stop
Unload Me
End Sub
Private Sub SampleGrabber_SampleCB(SampleTime As Double, pSample As IPin)
Dim pBuffer() As Byte
Dim pVideoInfo As VIDEOINFOHEADER
Dim pMediaType As AM_MEDIA_TYPE
With m_SampleGrabber
.GetCurrentBuffer pBuffer
.GetConnectedMediaType pMediaType
CopyMemory pVideoInfo, ByVal pMediaType.pbFormat, Len(pVideoInfo)
Dim lWidth As Long
Dim lHeight As Long
Dim lStride As Long
lWidth = pVideoInfo.bmiHeader.biWidth
lHeight = pVideoInfo.bmiHeader.biHeight
lStride = ((lWidth * 24 + 31) And &HFFFFFFE0) \ 8 ' 计算行宽
Dim hDC As Long
Dim hBmp As Long
Dim hOldBmp As Long
hDC = GetDC(Picture1.hWnd)
hBmp = CreateDIBSection(hDC, pVideoInfo.bmiHeader, DIB_RGB_COLORS, ByVal 0&, ByVal 0&, 0)
hOldBmp = SelectObject(hDC, hBmp)
CopyMemory ByVal pVideoInfo.bmiHeader.biSizeImage, pBuffer(0), lStride * lHeight ' 复制图像数据
StretchDIBits hDC, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, 0, 0, lWidth, lHeight, pBuffer(0), pVideoInfo.bmiHeader, DIB_RGB_COLORS, SRCCOPY
SelectObject hDC, hOldBmp
DeleteObject hBmp
ReleaseDC Picture1.hWnd, hDC
End With
End Sub
- 运行程序,点击Command按钮即可开始显示相机视频
原文地址: http://www.cveoy.top/t/topic/iC1X 著作权归作者所有。请勿转载和采集!