当前位置:文档之家› 视频捕捉

视频捕捉

视频捕捉
视频捕捉

摘要:本文主要讲述用Directshow进行视频捕捉(捕捉静态图像)的编程思路,并提供针对摄像头编程的一个视频捕捉类CcaptureVideo和一个示例。

前言

DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体流的捕捉和回放提供了强有力的支持。用DirectShow开发应用程序,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。

DirectShow是基于COM的,为了编写DirectShow应用程序,需要了解COM客户程序编写的基础知识。DirectShow提供了大量的接口,但在编程中发现还是不够方便,如果能构建一个视频捕捉类把常用的一些动作封装起来,那么就更方便了。

编程思路

为了更加容易建立视频捕捉应用程序,DirectShow提供了一个叫做Capture Graph Builder的对象,Capture Graph Builder提供IcaptureGraphBuilder2接口,该接口可以建立和控制Capture Graph。

建立视频捕捉程序,必须首先获取并初始化IcaptureGraphBuilder2接口,然后选择一个适当的视频捕捉设备。选择好设备后,为该设备创建Capture filter,然后调用AddFilter 把Capture filter添加到Filter Graph。

如果仅仅希望用摄像头来进行实时监控的话,只需要在上面的基础上调用ICaptureGraphBuilder2::RenderStream就可以了:

ICaptureGraphBuilder2 *pBuild; // Capture Graph Builder

//省略初始化部分代码

IBaseFilter *pCap; // Video capture filter.

//省略初始化和添加到Filter Graph部分代码

pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, pCap, NULL, NULL);

DirectShow提供了一个捕捉静态图像的方法:使用Sample Grabber filter。依次按照以下三个步骤就可以了:

第一步, 定义一个类实现Sample Grabber的回调接口IsampleGrabberCB:

class CSampleGrabberCB : public ISampleGrabberCB

{

//在后面提供的类中具体完成

}

CSampleGrabberCB mCB;

第二步、调用RenderStream依次把Still pin、Sample Grabber和系统默认Renderer Filter连接起来。

第三步、配置Sample Grabber以捕获数据。

视频捕捉类CCaptureVideo的具体实现

// CCaptureVideo视频捕捉类头文件

/////////////////////////////////////////////////////////////////////

#if !defined(AFX_CAPTUREVIDEO_H__F5345AA4_A39F_4B07_B843_3D87C4287AA0__INCLUDED_ )

#define AFX_CAPTUREVIDEO_H__F5345AA4_A39F_4B07_B843_3D87C4287AA0__INCLUDED_

/////////////////////////////////////////////////////////////////////

// CaptureVideo.h : header file

/////////////////////////////////////////////////////////////////////

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

#include

#include

#include

#ifndef SAFE_RELEASE

#define SAFE_RELEASE( x ) \

if ( NULL != x ) \

{ \

x->Release( ); \

x = NULL; \

}

#endif

class CSampleGrabberCB;

class CCaptureVideo : public CWnd

{

friend class CSampleGrabberCB;

public:

void GrabOneFrame(BOOL bGrab);

HRESULT Init(int iDeviceID,HWND hWnd);

int EnumDevices(HWND hList);

CCaptureVideo();

virtual ~CCaptureVideo();

private:

HWND m_hWnd;

IGraphBuilder *m_pGB;

ICaptureGraphBuilder2* m_pCapture;

IBaseFilter* m_pBF;

IMediaControl* m_pMC;

IVideoWindow* m_pVW;

CComPtr m_pGrabber;

protected:

void FreeMediaType(AM_MEDIA_TYPE& mt);

bool BindFilter(int deviceId, IBaseFilter **pFilter);

void ResizeVideoWindow();

HRESULT SetupVideoWindow();

HRESULT InitCaptureGraphBuilder();

};

#endif

// !defined(AFX_CAPTUREVIDEO_H__F5345AA4_A39F_4B07_B843_3D87C4287AA0__INCLUDED_) //-------------------------------------------------------------------

// CCaptureVideo视频捕捉类实现文件CaptureVideo.cpp

//-------------------------------------------------------------------

// CaptureVideo.cpp: implementation of the CCaptureVideo class.

//

/////////////////////////////////////////////////////////////////////

#include "stdafx.h"

#include "CaptureVideo.h"

#ifdef _DEBUG

#undef THIS_FILE

static char THIS_FILE[]=__FILE__;

#define new DEBUG_NEW

#endif

BOOL bOneShot=FALSE;//全局变量

class CSampleGrabberCB : public ISampleGrabberCB

{

public:

long lWidth;

long lHeight;

TCHAR m_szFileName[MAX_PATH];// 位图文件名称

CSampleGrabberCB( ){

strcpy(m_szFileName, "c:\donaldo.bmp");

}

STDMETHODIMP_(ULONG) AddRef() { return 2; }

STDMETHODIMP_(ULONG) Release() { return 1; }

STDMETHODIMP QueryInterface(REFIID riid, void ** ppv){

if( riid == IID_ISampleGrabberCB || riid == IID_IUnknown ){

*ppv = (void *) static_cast ( this );

return NOERROR;

}

return E_NOINTERFACE;

}

STDMETHODIMP SampleCB( double SampleTime, IMediaSample * pSample ){

return 0;

}

STDMETHODIMP BufferCB( double dblSampleTime, BYTE * pBuffer, long lBufferSize ){ if( !bOneShot )return 0;

if (!pBuffer)return E_POINTER;

SaveBitmap(pBuffer, lBufferSize);

bOneShot = FALSE;

return 0;

}

//创建位图文件

BOOL SaveBitmap(BYTE * pBuffer, long lBufferSize )

{

HANDLE hf = CreateFile(

m_szFileName, GENERIC_WRITE, FILE_SHARE_READ, NULL,

CREATE_ALWAYS, NULL, NULL );

if( hf == INVALID_HANDLE_VALUE )return 0;

// 写文件头

BITMAPFILEHEADER bfh;

memset( &bfh, 0, sizeof( bfh ) );

bfh.bfType = ’MB’;

bfh.bfSize = sizeof( bfh ) + lBufferSize + sizeof( BITMAPINFOHEADER );

bfh.bfOffBits = sizeof( BITMAPINFOHEADER ) + sizeof( BITMAPFILEHEADER );

DWORD dwWritten = 0;

WriteFile( hf, &bfh, sizeof( bfh ), &dwWritten, NULL );

// 写位图格式

BITMAPINFOHEADER bih;

memset( &bih, 0, sizeof( bih ) );

bih.biSize = sizeof( bih );

bih.biWidth = lWidth;

bih.biHeight = lHeight;

bih.biPlanes = 1;

bih.biBitCount = 24;

WriteFile( hf, &bih, sizeof( bih ), &dwWritten, NULL );

// 写位图数据

WriteFile( hf, pBuffer, lBufferSize, &dwWritten, NULL );

CloseHandle( hf );

return 0;

}

};

CSampleGrabberCB mCB;

//////////////////////////////////////////////////////////////////////

// Construction/Destruction

////////////////////////////////////////////////////////////////////// CCaptureVideo::CCaptureVideo()

{

//COM Library Intialization

if(FAILED(CoInitialize(NULL))) /*, COINIT_APARTMENTTHREADED)))*/

{

AfxMessageBox("CoInitialize Failed!\r\n");

return;

}

m_hWnd = NULL;

m_pVW = NULL;

m_pMC = NULL;

m_pGB = NULL;

m_pCapture = NULL;

}

CCaptureVideo::~CCaptureVideo()

{

// Stop media playback

if(m_pMC)m_pMC->Stop();

if(m_pVW){

m_pVW->put_Visible(OAFALSE);

m_pVW->put_Owner(NULL);

}

SAFE_RELEASE(m_pCapture);

SAFE_RELEASE(m_pMC);

SAFE_RELEASE(m_pGB);

SAFE_RELEASE(m_pBF);

CoUninitialize( );

}

int CCaptureVideo::EnumDevices(HWND hList)

{

if (!hList)

return -1;

int id = 0;

//枚举视频扑捉设备

ICreateDevEnum *pCreateDevEnum;

HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,IID_ICreateDevEnum, (void**)&pCreateDevEnum);

if (hr != NOERROR)return -1;

CComPtr pEm;

hr = pCreateDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,&pEm,

0);

if (hr != NOERROR)return -1;

pEm->Reset();

ULONG cFetched;

IMoniker *pM;

while(hr = pEm->Next(1, &pM, &cFetched), hr==S_OK)

{

IPropertyBag *pBag;

hr = pM->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pBag);

if(SUCCEEDED(hr))

{

VARIANT var;

var.vt = VT_BSTR;

hr = pBag->Read(L"FriendlyName", &var, NULL);

if (hr == NOERROR)

{

TCHAR str[2048];

id++;

WideCharToMultiByte(CP_ACP,0,var.bstrVal, -1, str, 2048, NULL, NULL);

::SendMessage(hList, CB_ADDSTRING, 0,(LPARAM)str);

SysFreeString(var.bstrVal);

}

pBag->Release();

}

pM->Release();

}

return id;

}

HRESULT CCaptureVideo::Init(int iDeviceID, HWND hWnd)

{

HRESULT hr;

hr = InitCaptureGraphBuilder();

if (FAILED(hr)){

AfxMessageBox("Failed to get video interfaces!");

return hr;

}

// Bind Device Filter. We know the device because the id was passed in if(!BindFilter(iDeviceID, &m_pBF))return S_FALSE;

hr = m_pGB->AddFilter(m_pBF, L"Capture Filter");

// hr = m_pCapture->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, // m_pBF, NULL, NULL);

// create a sample grabber

hr = m_pGrabber.CoCreateInstance( CLSID_SampleGrabber );

if( !m_pGrabber ){

AfxMessageBox("Fail to create SampleGrabber, maybe qedit.dll is not registered?");

return hr;

}

CComQIPtr< IBaseFilter, &IID_IBaseFilter > pGrabBase( m_pGrabber );

//设置视频格式

AM_MEDIA_TYPE mt;

ZeroMemory(&mt, sizeof(AM_MEDIA_TYPE));

mt.majortype = MEDIATYPE_Video;

mt.subtype = MEDIASUBTYPE_RGB24;

hr = m_pGrabber->SetMediaType(&mt);

if( FAILED( hr ) ){

AfxMessageBox("Fail to set media type!");

return hr;

}

hr = m_pGB->AddFilter( pGrabBase, L"Grabber" );

if( FAILED( hr ) ){

AfxMessageBox("Fail to put sample grabber in graph");

return hr;

}

// try to render preview/capture pin

hr = m_pCapture->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,m_pBF,pGrabBase,NULL);

if( FAILED( hr ) )

hr = m_pCapture->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video,m_pBF,pGrabBase,NULL);

if( FAILED( hr ) ){

AfxMessageBox("Can’t build the graph");

return hr;

}

hr = m_pGrabber->GetConnectedMediaType( &mt );

if ( FAILED( hr) ){

AfxMessageBox("Failt to read the connected media type");

return hr;

}

VIDEOINFOHEADER * vih = (VIDEOINFOHEADER*) mt.pbFormat;

mCB.lWidth = vih->bmiHeader.biWidth;

mCB.lHeight = vih->bmiHeader.biHeight;

FreeMediaType(mt);

hr = m_pGrabber->SetBufferSamples( FALSE );

hr = m_pGrabber->SetOneShot( FALSE );

hr = m_pGrabber->SetCallback( &mCB, 1 );

//设置视频捕捉窗口

m_hWnd = hWnd ;

SetupVideoWindow();

hr = m_pMC->Run();//开始视频捕捉

if(FAILED(hr)){AfxMessageBox("Couldn’t run the graph!");return hr;}

return S_OK;

}

bool CCaptureVideo::BindFilter(int deviceId, IBaseFilter **pFilter)

{

if (deviceId < 0)

return false;

// enumerate all video capture devices

CComPtr pCreateDevEnum;

HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,

IID_ICreateDevEnum, (void**)&pCreateDevEnum);

if (hr != NOERROR)

{

return false;

}

CComPtr pEm;

hr = pCreateDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,&pEm, 0);

if (hr != NOERROR)

{

return false;

}

pEm->Reset();

ULONG cFetched;

IMoniker *pM;

int index = 0;

while(hr = pEm->Next(1, &pM, &cFetched), hr==S_OK, index <= deviceId)

{

IPropertyBag *pBag;

hr = pM->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pBag);

if(SUCCEEDED(hr))

{

VARIANT var;

var.vt = VT_BSTR;

hr = pBag->Read(L"FriendlyName", &var, NULL);

if (hr == NOERROR)

{

if (index == deviceId)

{

pM->BindToObject(0, 0, IID_IBaseFilter, (void**)pFilter);

}

SysFreeString(var.bstrVal);

}

pBag->Release();

}

pM->Release();

index++;

}

return true;

}

HRESULT CCaptureVideo::InitCaptureGraphBuilder()

{

HRESULT hr;

// 创建IGraphBuilder接口

hr=CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&m_pGB);

// 创建ICaptureGraphBuilder2接口

hr = CoCreateInstance (CLSID_CaptureGraphBuilder2 , NULL, CLSCTX_INPROC,

IID_ICaptureGraphBuilder2, (void **) &m_pCapture);

if (FAILED(hr))return hr;

m_pCapture->SetFiltergraph(m_pGB);

hr = m_pGB->QueryInterface(IID_IMediaControl, (void **)&m_pMC);

if (FAILED(hr))return hr;

hr = m_pGB->QueryInterface(IID_IVideoWindow, (LPVOID *) &m_pVW);

if (FAILED(hr))return hr;

return hr;

}

HRESULT CCaptureVideo::SetupVideoWindow()

{

HRESULT hr;

hr = m_pVW->put_Owner((OAHWND)m_hWnd);

if (FAILED(hr))return hr;

hr = m_pVW->put_WindowStyle(WS_CHILD | WS_CLIPCHILDREN);

if (FAILED(hr))return hr;

ResizeVideoWindow();

hr = m_pVW->put_Visible(OATRUE);

return hr;

}

void CCaptureVideo::ResizeVideoWindow()

{

if (m_pVW){

//让图像充满整个窗口

CRect rc;

::GetClientRect(m_hWnd,&rc);

m_pVW->SetWindowPosition(0, 0, rc.right, rc.bottom);

}

}

void CCaptureVideo::GrabOneFrame(BOOL bGrab)

{

bOneShot = bGrab;

}

void CCaptureVideo::FreeMediaType(AM_MEDIA_TYPE& mt)

{

if (mt.cbFormat != 0) {

CoTaskMemFree((PVOID)mt.pbFormat);

// Strictly unnecessary but tidier

mt.cbFormat = 0;

mt.pbFormat = NULL;

}

if (mt.pUnk != NULL) {

mt.pUnk->Release();

mt.pUnk = NULL;

}

}

构建CCaptureVideo类以后,使用就方便多了,我们在编程中只需要是要下面三个类成员函数就可以实现用摄像头进行视频捕捉:

①int EnumDevices(HWND hList); //hList是下拉列表框的句柄,本函数用于枚举当前系统安装的所有视频捕捉设备

②HRESULT Init(int iDeviceID,HWND hWnd);//iDeviceID是视频捕捉设备序号,hWnd 是视频捕捉窗口的句柄

③void GrabOneFrame(BOOL bGrab);//调用GrabOneFrame(true)就可以捕获当前的静态图像并保存到硬盘上

具体示例:用MFC AppWizard(exe)创建一个对话框应用程序,取名为ds,给对话框添

加一个下拉列表框(IDC_COMBO1)、两个按钮(IDC_PHOTO、IDC_HAVEALOOK)和一个Picture 控件(ID:IDC_STATIC_SCREEN,Type: Rectangle,Color:Gray)。

1、使用向导添加成员变量

CStatic m_staticScreen; // IDC_STATIC_SCREEN

CComboBox m_ListCtrl; // IDC_COMBO1

CCaptureVideo m_cap;

2、为BOOL CDsDlg::OnInitDialog()添加如下代码:

// TODO: Add extra initialization here

m_cap.EnumDevices (m_ListCtrl);

m_ListCtrl.SetCurSel (0);

3、为确定按钮添加代码如下:

void CDsDlg::OnOK()

{

//只需要四行代码就可以进行视频捕捉了

UpdateData();

HWND hWnd =

m_staticScreen.GetSafeHwnd() ;

HRESULT hr =

m_cap.Init(m_ListCtrl.GetCurSel

(),hWnd);

GetDlgItem(IDOK)->EnableWindow(FALSE);

}

4、如果希望捕捉静态图像,为照相按钮添加如下代码:

void CDsDlg::OnPhoto()

{

m_cap.GrabOneFrame(true);

}

运行程序时,选定摄像头后只需要按确定就可以了,实际效果如下图所示:

结束语

本文提供的视频捕捉类CcaptureVideo和示例,在Win2K + DirectX9 SDK + VC6 环境下调试通过。注意:编译时需要Strmiids.lib Quartz.lib两个库文件(DirectX9 SDK自带)

视频采集卡故障原因分析

视频采集卡|安防采集卡|监控采集卡常见故障问题解答 1、采集卡的安装方式 很多朋友可能会说采集卡安装方式,不就将卡插进PCI槽,安装软件不就行了!如果是资深的技术人员可能都知道,早期有一部分采集卡(采用的是小波压缩的软卡)用的是 LG软件,这种卡就要先安装软件,然后关机在插上采集卡,采集卡会自动安驱动,自动就进入监控软件系统,而且只基于98系统,你如果先安装卡,无论如何也安装不成功。现今的采集卡安装就是常见的先插卡再安装软件和驱动。也有部分卡你如果安装软件不重新启动,也打不开! 2、采集卡和软件都安装好了就是不出图像 A:这个问题,常见的都是出在显卡上面:如,你用的集成显卡显存达不到,或者没有在 BIOS将显存调整好,或者没有安装DX9.0,都会出现这些问题! B:还有一些是NTSC/PAL制式问题出现黑屏。 C:线束出现问题,这个问题不长见,但也不能忽视,我就遇到几次线束本身有问题,出不 来图像。 D:还有一种情况:如你用的是8路卡,有一路就不出像,可能你的这一路的驱动安装出了 问题(主要指一芯一路的采集卡,如7130),检查一下“设备属性里”有没有“感叹号”或是“问号”。 E:如有带指示灯软压卡,你可以直接通过指示灯亮没亮可以找到为什么有一路不出图像的问题。有部分软件还可以随意切断某一路的视频信号输入。 F:驱动也正常,显卡也正常,采集卡和软件都正常,就是不出图像,那就在启动时你要看 采集卡驱动每一种地址号码,看是不是少一路。一般情况通过换个PCI插槽就可以解 决此类问题。 G:有部分山寨采集卡不支持PCI-E,128位的显卡,如果需到这个问题,要不就换AGP的显卡,要不就找一些杂牌的PCI-1的显卡(这些显卡实际并没有采用PCI-1技 术)。 H:用的显卡也没有问题,其他都正常,不出图像,这时你就要检查你的主板,首先观察一 下芯片组(常用“英特尔”、“威盛”),在选择品牌上尽量咨询厂家。

数字视频采集系统方案

预处理监控设备方案 概述 传统视频监控系统是通过摄像头等这些数据采集前端获取视频图片信息,仅提供视频的捕获、存储和回放等简单的功能;数据吞吐量大造成数据传输和服务器处理数据的压力大;需要大量的人力且准确度并不高;因此,智能视频监控系统应运而生。 本系统在视频采集前端搭建硬件平台,硬件平台中搭载图像处理算法,将摄像头传入的图片筛选出关键信息,通过物联网传入服务器中进行处理。利用算法提取关键信息可以减少传输的数据,从而能提高传输效率并且减小服务器的压力;同时在传输过程中把数据拆分成多个模块并行处理,也可大大提升传输处理速度,达到实时性、高效性的要求。 1硬件前端功能 1)采集图像信息; 2)实现算法对图像的灵活处理,并行高速传输; 3)提取、分类图像关键信息; 4)采用NB-IoT协议实现无线传输 2方案论述 2.1系统构成 图2.1是系统总体结构框图。

图2.1 系统总体结构框图 用CCD进行图像数据采集后,用视频解码芯片进行A/D转换,从模拟视频输入口输入的全电视信号在视频解码芯片内部经过钳位、抗混叠滤波、A/D转换、最后转换成BT.656视频数据流。 本系统中,对图像的处理分为两个阶段,第一个阶段为ZYNQ的双核ARM处理器部分通过算法对图像的处理;第二个阶段为ZYNQ的FPGA部分对数据的打包分类。为了尽可能提高性能并达到实时性要求,我们以ARM为中央处理核心,由FPGA实现系统控制。系统分为处理器模块、FPGA组模块和各总线接口模块等。其中处理器模块包含双核ARM、内存空间以及相应逻辑。处理器作为最小处理单元模块而存在,可以完成相应的处理子任务。 双核ARM作为从CPU做图像的处理(通过算法实现),两个处理模块在系统核心FPGA控制下并行运行。而FPGA作为系统中心,负责两个微处理器互相通信、互相协调以及它们与外界(通过主从总线和互连总线)的信息交换。同时,系统处理子任务可以由FPGA直接派发给处理器。灵活的FPGA体系结构设计是该系统有效性的保证。在实际应用中,可以根据系统的任务,通过配置FPGA控制两个微处理器按流水线方式运行,缩短系统的处理时间。另外,可以通过FPGA的配置扩展双ARM的工作方式,控制它们按MIMD方式并行处理同一输入图像。 最后经过处理过的图像通过NB-IoT协议发送到服务器端。 2.1.1 FIFO机制 为了加快ZYNQ的处理速度,本系统采用同步FIFO高速缓冲方案。FIFO即先进先出存储器, 也是一种专门用来做总线缓冲的特殊存储器。FIFO没有地址

WDM 视频捕获介绍

WDM 视频捕获介绍 -孙涛- 摘要:该文主要提供一些在Win98,win2K及以上操作系统中,进行Windows Driver Model(WDM)视频捕获的相关知识介绍。如果你对WDM视频捕获感兴趣,可以来看看这些东西。欢迎到我的博客https://www.doczj.com/doc/469988573.html,/suntaoznz看其他文章! 目录 Windos下视频捕获简史 (1) WDM和视频捕获 (1) VfWWDM Mapper (2) WDM 视频捕获结构 (2) DirectShow应用程序 (3) DirectShow Filter Graph (3) WDM数据流 (4) 视频捕获Minidrivers (4) Pins, Streams, Formats (4) 视频流命名约定 (5) DirectShow 视频捕获的接口和属性 (5) 捕获数据流类型 (6) 流输出数据格式 (6) 结束语 Windos下视频捕获简史 VFW(Video For Windows)1.0版本在1992年11月发布,它是为在Windows3.1下将电影最优化地捕获到磁盘上而发布的。从那以后,视频捕获技术就越来越受到关注了。 VFW技术同样受到了很多批评,它捕获的数据保存到磁盘上会占用大量磁盘空间,每秒数据量超过20M,同时需要大量的客户端支撑软件,VFW体系架构上的不足在视频会议应用上和PC/TV应用上被暴露无遗,这样就要求一种新的视频捕获技术来弥补这些不足。 VFW的体系结构缺乏为视频会议,电视浏览,视频区域捕获和VBI(Vertical Blanking Interval)数据流提供强而有效的支持。一些视频卡等设备开发商在设计自己的产品时,针对这些缺陷,对VFW进行了功能扩展。由于没有统一的标准,我们的应用程序在使用这些扩充的功能时,就必须要写一些基于特定硬件的代码。这就意味着当要改变捕获驱动程序时,就必须要对显卡的驱动程序进行修改。 WDM和视频捕获 WDM 视频捕获设计就是为了来解决VFW体系结构中存在的这些问题。WDM视频捕获主要的好处体现在:

视频采集的一些技巧

视频采集和后期处理的一些手段和技巧 综述:视频是由一帧帧画面组成的,也就是说视频是由一系列连续快速变换的静态画面组成的,那么首先要掌握拍摄静态画面的一些技巧和表达的情感,然后在视频采集和处理的发展过程中,人们发现通过不同的拍摄和处理技巧可以表达不同的情感,这里我就我个人的一些处理视频和对于画面的粗浅理解做一下总结。 第一、静态画面的采集 静态画面的采集就是通常所说的拍照,因为制作视频的时候要用到一些静态的照片,那么这里我就简单的说一点静态画面的采集的技巧(首先声明,绝对的不专业也不权威,只是个人的一些表达,希望大家在后面进行补充)。 大家拍照的时候喜欢让主题事物在中间的位置上,其实从审美角度上来讲1:1的比例显然没有0.618的黄金分割显得有美感,所以我拍照的时候喜欢把主题放在偏左下角或者右下角(尤其是主题并不大占不了全局的一半的时候)。如果是拍摄对象比较大,那么最好压缩到稍微偏下一点,123三个格子下部分占一点就比较好了。 2.远景拍摄 远景拍摄一般都是进行大场面的拍摄(不过好像也有其他的用途,我就不知道了,孤陋寡闻)。远景突出的主题一般放在中心偏一点,近黄金分割点最好。对于如何突出等技巧我就不懂了。这个适合大场面的性质描述,比如春天的田野百花开,远景就很能体现一种壮观,但是拍摄某一个花草,就只能看出花草的纤弱娇美等个体性质。 3.近景拍摄。 近景的话是突出事物的一个整体概观的方法,比如拍一个人,你就可以取不远处的全身照,这样就能够表达一个人的大概的外貌着装等等。这个适合表达事物的个体性质。 4.局部近景 这个好像只有我是这样叫的,一般是指事物的主题占的和近景拍摄差不多,但是只拍摄事物的部分特性,比如拍一个人的背影,那么从腿部以下就可以不用那么重点了,但是这和局部特写还有一点不一样(个人觉得是局部特写只是描述事物的一小部分,但是局部近景是表现大部分并且很少改变事物的背景)。适合表达情感,但是不如局部特写那么鲜明突出。 5.局部特写 我觉得这个是比较好的表达事物局部的某一个方面的特质的镜头。比如拍摄人的手,或者人的眼睛,或者流泪的鳄鱼的眼睛,蜜蜂的翅膀等等……真的可以看出来事物的精细,适合表达情感。

交通视频采集系统

交通视频采集系统 第一章建设背景 1.1 视频监控系统现状 1.1.1交通应急指挥中心系统职能 威海市交通运输局作为威海市重要的政府主管部门,主要负责:全市公路、水路和地方铁路交通行业管理和运输组织管理,协调道路、水路运输与其它运输方式的衔接;组织实施上级下达的重点物资运输、紧急客货运输和军事运输。作为市交通运输局下属事业单位,威海市交通应急指挥与信息服务中心将负责本次视频采集系统的建设,必将进一步改善城市整体交通环境,提高城市交通管理水平、提升城市形象和品味。 1.1.2 视频在应急指挥中的作用 威海市交通应急视频监控系统通过视频监控布局,可实时反馈监控区域的图像信息,有利于在执法工作中提高现场即时办公效率,提高事件处理的真实性、准确性、实时性及宏观调配能力。 威海市交通应急指挥与信息服务中心的视频采集系统主要负责通过统一视频监控系统对全市二级以上客运站、客运站周边违章行为高发区域、站外广场等客流密集地进行管理。工作人员可通过图像采集来了解各站点的实时状况,实时传输的图像要保证清晰度高、连贯性高,不能出现拖尾、马赛克等情况,保证交通各职能部门的管理员在第一时间掌握实时的、清晰的高品质视频图像。系统一方面要做到事件即时处理,另一方面也要为交通管理职能部门保留数据信息,这就要求在图像实时采集的同时,根据具体需求进行录像存储。 1.2 视频监控系统存在的问题 部署分散,监控系统资源共享性差。交通、公安、交警、公

路、港航等相关部门的各类监控设备部署较为分散,由于之前缺乏实现信息互联互通的技术手段,加之跨域查阅视频的审批手续繁冗,视频信息共享性差,不能对应急事件即时处理、即时响应。 覆盖面广,但仍存在监控的“死角”。在汽车客运站、码头、机场、旅游集散地、景区景点等违章行为高发地、其他人员密集地仍存在诸多应急指挥监控死角,存在打击黑车黑导、即时处理应急事件的隐患,需增加相应监控点位,以确保应急事件的即时指挥与处理。 1.3 视频监控系统升级建设的必要性 1.3.1信息共享缺乏可信验证技术支持 通过最新的高清识别及可信验证技术,较好地解决部署分散,信息共享性差问题,盘活视频监控系统的存量资产,发挥投资建设的应有效应。本次视频采集系统将通过与公安、交警、公路、港航等相关部门协调,计划接入920路视频资源,主要包括市区主要路段、重点路口、治超点、主要道路、高速公路等,进一步提高各系统视频监控资源在交通应急指挥中心中的作用。 1.3.2 监控死角需自建视频设备扫除 为进一步扫除安全隐患,规交通运营秩序,威海市交通应急指挥中心将增加部分自建视频,解决监控死角问题,进一步提升“文明城市”形象的含金量。威海市交通应急指挥中心计划新增视频80路,主要分布在全市二级以上汽车客运站,包括威海站、荣成站、文登站、乳山站、石岛站以及威海北站汽车站,监控点位包括安检、进站口、出站口、站外广场、车站周边等违章行为高发地、其他人员密集地。本次主要建设容有:社会监控的接入、新建前端设备、立杆(含基础施工、路面开挖恢复等)、借杆、防雷地网施工、取电工程等,根据技术功能要求来进行整体综合

视频捕获

目录 一. 视频捕获快速入门 2 二.基本的捕获设置3 1.设置捕获速度:3 2.设置终止捕获 4 3.捕获的时间限制4 三.关于捕获窗口 4 1.创建一个A VICAP捕获窗口5 2.将一个捕获窗口连接至捕获设备5 3.父窗口与子窗口的交互 5 4.捕获窗口的状态6 四.视频捕获驱动和音频驱动 6 1.视频捕获驱动的性能: 6 2.视频对话框: 6 3.PREVIEW 和OVERLAY模式: 7 4.视频格式7 5.视频捕获设置7 6.声频格式8 五.使用视频捕获8 1.创建捕获窗口(CREATING A CAPTURE WINDOW) 8 2.连接到捕获驱动(CONNECTING TO A CAPTURE DRIVER) 9 3.列举所有已安装的捕获驱动(ENUMERATING INSTALLED CAPTURE DRIVERS) 9

4.得到捕获驱动的性能(OBTAINING THE CAPABILITIES OF A CAPTURE DRIVER) 9 5.得到捕获窗口的状态(OBTAINING THE STATUS OF A CAPTURE WINDOW) 10 6.显示对话框设置视频特征(DISPLAYING DIALOG BOXES TO SET VIDEO CHARACTERISTICS) 10 7.得到和设置视频格式(OBTAINING AND SETTING THE VIDEO FORMA T) 11 8. 预览视频(PREVIEWING VIDEO) 12 9.将视频设置为OVERLAY模式(ENABLING VIDEO OVERLAY) 12 10.命名捕获文件(NAMING THE CAPTURE FILE) 12 11.格式化声频捕获(FORMATTING AUDIO CAPTURE) 12 12.改变视频捕获设置(CHANGING A VIDEO CAPTURE SETTING) 13 13.捕获数据(CAPTURING DA TA) 13 14.增加一个信息块(ADDING AN INFORMA TION CHUNK) 14 15.在程序中加入一个回调函数(ADDING CALLBACK FUNCTIONS TO AN APPLICATION) 14 16.创建一个状态回调函数(CREATING A STATUS CALLBACK FUNCTION) 16 17.创建一个错误回调函数( CREATING AN ERROR CALLBACK FUNCTION) 17 18.创建一个框架回调函数(CREATING A FRAME CALLBACK FUNCTION) 18 六.将四个标准对话框改成函数调用形式18 AUDIOFORMAT对话框19 VIDEOFORMA T对话框19 VIDEOSOURCE对话框20 VIDEO COMPRESSION对话框20

视频交通流采集系统解决方案

视频交通流信息采集系统解决方案 1概述 视频交通流信息采集系统主要包括视频图像采集设备、视频传输网络、交通流视频检测器等。视频检测器采用虚拟线圈技术,利用边缘信息作为车辆的检测特征,实时自动提取和更新背景边缘,受环境光线变化和阴影的影响较小;同时采用动态窗的方式来进行车辆计数,解决了采用以往固定窗方式进行车辆计数时由于车辆变道而导致的错误、重复计数问题。视频检测器能对视频图像采集设备或交通电视监视系统的视频信号自动进行检测,主要采集道路的微观交通信息如流量、速度、占有率、车辆间距、排队长度等,适用于近景监控模式。 2系统功能及特点介绍 2.1数据接口设计 视频交通流信息采集系统可以通过调用本项目提供的交通流数据统一接入接口,或由本项目提供数据格式标准化及上传程序,将采集到的交通流数据共享给本项目相关系统,以实现视频交通流数据的采集功能。 图1 数据接口设计 2.2系统功能 交通流信息视频检测系统的主要功能如下: (1)车辆检测 系统能够对输入的视频流图像进行车型、车牌等特征检测。

(2)交通流数据采集功能 系统可以采集交通流数据包括交通流量、平均车速、车道占有率、车型、平均车头间距、车辆排队长度、车辆密度、交通流状态等,交通流数据采集时间间隔在1~60分钟任意可调。 图 2 视频交通流检测模块 (3)视频图像跟踪功能 系统能对单路监控前端设备在不同预置位采集的视频图像进行不同区域不同事件的自动检测。一旦检测到特定的交通事件,事件检测器应具有该交通事件的视频图像目标自动跟踪、记录、分析功能。 当输入的视频图像不为设定的预置位的视频图像,系统应能自动不进行事件检测。一旦监控前端设备恢复至设定的预置位,系统应能自动进行事件检测。 (4)事件图像抓拍、录像功能 系统可以根据用户的设置,完成相应的录像和图片抓拍功能。 事件录像可以按摄像机、按事件类型、按时间归档存储在系统的预录像子系统中,由系统服务器进行统一的管理调用。 系统循环进行录像,当发生交通异常事件时,系统能够提供事发之前和之后的3分钟间的录像(可设置)。 系统可通过多种组合查询条件对视频交通流检测所采集的数据进行统计,包括时间-流量统计、时间-平均车速统计、时间-占有率统计、速度-流量统计等;统计结果可导出为

数字化视频采集技术

摘要: 介绍了视频的模式、数字化视频的采样方式以及各种压缩算法。 关键词:视频模型;数字化视频,信号采集;压缩算法 中图分类号:TP37 文献标识码:B 文章编号:1004-373X(2003)09-012-03 随着信息技术的不断发展,人们将计算机技术引入视频采集、制作领域,传统的视频领域正面临着模拟化向数字化的变革,过去需要用大量的人力和昂贵的设备去处理视频图像,如今已经发展到在家用计算机上就能够处理。用计算机处理视频信息和用数字传输视频信号在很多领域有着广泛的应用前景。 1 视频模型 中国和欧洲采用的电视制式是PAL制(逐行倒相制),美国和日本采用的NTSC制,一个PAL信号有25fb/s 的帧率,一个NTSC制信号有30fb/s的帧率。视频信号在质量上可区分为复合视频(Composite),S-Vide,YUV和数字(Digital)4个级别。复合视频,VHS,VHS-C和VideO8都是把亮度、色差和同步信号复合到一个信号中,当把复合信号分离时,滤波器会降低图像的清晰度,亮度滤波时的带宽是有限的,否则就会无法分离亮度和色差,这样亮度的分离受到限制,对色差来讲也是如此。因此复合信号的质量比较一般,但他的硬件成本较低,目前普遍用于家用录像机。S-Vide,S-VHS,S-VHS-C和Hi8都是利用2个信号表现视频信号,即利用Y表现亮度同步,C信号是编码后的色差信号,现在很多家用电器(电视机,VCD,SHVCD,DVD)上的S端子,是在信号的传输中,采用了Y/C独立传输的技术,避免滤波带来的信号损失,因此图像质量较好。YUV视频信号是3个信号Y,U,V组成的,Y是亮度和同步信号,U,V是色差信号,由于无需滤波、编码和解码,因而图像质量极好,主要应用于专业视频领域。数字及同步信号利用4个信号:红、绿、蓝及同步信号加于电视机的显像管,因此图像质量很高。还有一种信号叫射频信号,他取自复合视频信号,经过调制到VHF或UHF(UltraHigh Frequency),这种信号可长距离发送。现在电视台就采用这种方式, 通过使用不同的发射频率同时发送多套电视节目。 模拟视频信号携带了由电磁信号变化而建立的图像信息,可用电压值的不同来表示,比如黑白信号,0 V表示黑,0.7V表示白,其他灰度介于两者之间;数字视频信号是通过把视频帧的每个象素表现为不连续的颜色值来传送图像资料,并且由计算机使用二进制数据格式来传送和储存象素值,也就是对模拟信号进行A/D 转换后得到的数字化视频信号。数字视频信号的优点很多: (1)数字视频信号没有噪声,用0和1表示,不会产生混淆,而模拟信号要求屏蔽以减少噪声。 (2)数字视频信号可利用大规模集成电路或微处理器进行各类运算处理,而模拟信号只能简单地对亮度、对比 度和颜色等进行调整。 (3)数字视频信号可以长距离传输而不产生损失,可以通过网络线、光纤等介质传输,很方便地实现资源共享, 而模拟信号在传输过程中会产生信号损失。 2 数字化视频采集 NTSC和PAL视频信号是模拟信号,但计算机是以数字方式显示信息的,因此NTSC和PAL信号在能被计算机使用之前,必须被数字化(或采样)。一个视频图形适配器(通常叫做抓帧器或视频采集卡)经常被用来数字化视频模拟信号,并将之转换为计算机图形信号。视频信号的数字记录需要大量的磁盘空间,例如,一幅640X480中分辨率的彩色图像(24b/pixel),其数据量约为0.92Mb/s,如果存放在650MB的光盘中,在不考虑音频信号的情况下,每张光盘也只能播放24s,使用如此巨大的磁盘空间存储数字视频,是大多数计算机用户所无法接受的。在这种情况下,将视频带到计算机上,以有效的帧率播放存储信息,是使用计算机处理视频能力的最大障碍,鉴于此种情况,我们采用数据压缩系统和帧尺寸、色彩深度和图像精度折衷的办法,对视频数据进行压缩,以节省磁盘存储空间,数字化视频采集技术也就变成了现实。 数字化视频的过程,通常被叫做数字化视频采集。模拟信号到数字信号的转换中通常用8b来表示,对于专业或广播级的信号转换等级会更高。对于彩色信号,无论是RGB还是YUV方式,只需用24b来表示。因此采样频率的高低是决定数字化视频图像质量的重要指标,如表1所示。

基于Windows的几种视频采集方法设计与实现

龙源期刊网 https://www.doczj.com/doc/469988573.html, 基于Windows的几种视频采集方法设计与实现 作者:李钦存王春明段海龙 来源:《硅谷》2008年第21期 [摘要]分别介绍在Windows操作系统下的三种实时视频数据采集的方法,即基于VFW的实时视频采集,基于DirectShow的实时视频采集和基于视频卡附带软件开发工具箱(SDK) 的实时视频采集,并给出实现的核心代码。 [关键词]视频采集 VFW DirectShow SDK 中图分类号:TP391文献标识码:A 文章编号:1671-7597(2008)1110067-02 随着计算机网络和多媒体计算的迅猛发展,许多应用系统,如可视电话系统、电视会议系统、远程监控系统等要求能够实时获取视频信息;同样,若想进行图像处理也必须进行视频流捕获和单帧图像采集。因此,如何实时获取视频数据便成为应用中的重要环节和关键前提[2]。 一、基于VFW的实时视频数据采集 VFW(Video For Windows)是Microsoft推出的关于数字视频的一个软件包,该软件包能使应用程序数字化并播放从传统模拟视频源得到的视频剪辑。VFW的一个关键思想是播放时不需要专用硬件,为了解决数字视频数据量大的问题,需要对数据进行压缩。软件包引进了一种叫AVI的文件标准,该标准未规定如何对视频进行捕获,压缩仅规定视频和音频该如何存储 在硬盘上,在AVI文件中交替存储视频帧和与之相匹配的音频数据。VFW给程序员提供VBX 和AVICap窗口类的高级编程工具,使程序员能通过发送消息或设置属性来捕获、播放和编辑视频剪辑。Windows98以上系统都自动安装配置视频所需的组件,如设备驱动程序,视频压缩程序等[3]。 VFW主要由以下6个模块组成: AVICAP.DLL: 处理视频捕获,为AVI文件输入输出和视频、音频设备驱动程序提供一个编程接口。

教你如何识别视频采集卡

安防领域(视频采集卡),各种各样的DVR卡琳琅满目,让很多的工程商和消费者特别是刚入行者无从下手,您选购采集卡的目的不外乎就是能更方便的更有效的监看,您应该需要关注一下几个大区:是软压缩还是硬压缩好、什么样的卡画质最好、能否实现远程功能、备份方便么、售后服务怎么样等相关问题。下面我们就将各种DVR卡的优缺点经行区分和了解,以及选购采集卡的相关知识一一介绍一下。 一区:软压缩和硬压缩 现在只要你选购DVR卡,店主一般的都是问你是要那种类型的卡——软卡还是硬卡?这里我们就先来介绍一下软卡和硬卡的不同之处。 一、软压缩DVR 用软卡的DVR我们一般叫做软压缩DVR,其实就是视频采集卡,随卡配有监控软件,实现视频监视、录像、回放历史视频以及远程监控等功能,其硬件为一个或多个视频采集芯片(如:fusion878a , saa7130/7134, tw6802B/6805等)接收来自模拟摄像机的信号,转换为数字信号,然后直接或通过PCI桥芯片从PCI金手指进入主板,原始的数字视频信号,在内存里执行CPU指令运算,将视频压缩与处理,然后存储到硬盘。另外原始视频数据还直接发往显卡,通过显示器预览。 软卡的电路板很简单,板上没有压缩芯片与临时存储芯片,成本低,一般是硬压缩的1/3左右,所以价格是它最大的优势,另外从原理我们可以看到,软压缩DVR是有CPU进行压缩的,所以其压缩品质较好,录像清晰度高,在CPU资源充足的情况下,软压缩DVR无论在录像、还是网络以及其他功能丝毫不亚于硬压缩DVR。 二、硬压缩DVR 硬压缩DVR,也可称视频采集压缩卡,与软压缩原理基本一样,不同的是,模拟视频转换为数字信号后,并不直接通过PCI发到主板、显卡、内存,而是先由硬压缩DVR卡自带的DSP代替电脑CPU执行压缩算法指令,在DVR卡上的内存芯片压缩,然后再通过PCI金手指进入主板。所以硬压缩DVR电路板多了DSP或其他压缩芯片与内存芯片。所以硬压缩DVR的主要优势主要表现在大路数监控,比如32路以上全实时监控录像,软压缩难以实现,这个市场缺口就可以被硬压缩所占有。 三、总结 通过上面的原理,我们可以看出硬压缩的优势在于: 1、视频压缩通过自带DSP完成,无需占用电脑CPU资源; 2、在进入PCI总线之前先进行压缩,可以节省PCI总线带宽。但是由于目前CPU 性价比迅速增长,非常便宜的CPU就能轻松的压缩16路CIF视频,导致硬卡优势1正在逐步退化,另外随着主板上PCI-E的出现,硬压缩能节省PCI带宽的优势也在弱化并最终失去意义。而它的主要缺点就是在于卡上自带的DSP芯片使其成本非常高; 3、数字视频先在DVR卡上进行压缩,然后又要将压缩视频解压缩后交给显卡显示器预览显示,其实大家都不知道,这个过程会导致视频信号受损,图像品质会下降。 注意:市场上经常听说的半软半硬卡,这个根本不存在,也没有那样的说法,朋友们一定要注意,这个主要是在2002-2004年里,因为当时CPU处理性能有限,价格昂贵,软卡只能满足4-8路实时监控录像,而国内监控全实

(完整版)音频、视频采集与处理知识点整理.doc

稽山中学信息技术学业水平考试复习资料---音频与视频音频、视频采集与处理相关知识点 知识条目: 单元知识点考试要求试题类型 1.音频的数字化和存储容量的计算 b 2.声音素材的采集 C 音频、视频采集 3. 声音素材的制作 C 选择题、填空题与处理 4. 声音的格式转换 C 必考 +加试 5. 视频的数字化和存储容量的计算 b 6. 视频素材的采集和处理 C 知识点整理 : 1.音频数字化及存储量的计算 数字化音频是指通过采样和量化把模拟音频信号转换成由二进制数码“0”或“ 1”组成的数字化音频文件。 采样频率是指将单位时间的音频波形分隔成的点数,单位为赫兹(HZ)。采样频率决定了声音采集的质量,采样频率越高,声音的质量越好,存储容量越大。 量化位数是指将采样得到的点实现用二进制编码表示。量化位数越大,其量化值越接近采样值,即精度越高,所以存储量也越大。 常见的 wave 文件所占存储量的计算公式: 存储量(字节)=采样频率* 量化位数 * 声道数 * 时间(秒)、 8 2.声音素材的采集 声音素材的获取途径:成品声音文件的使用、声音素材的截取等。 声音文件的录制分硬件设备和软件录制两个部分。硬件设备主要需要声卡、话筒等。常用的声音录制与编辑软件有: GoldWave、录音机、 Cool Edit 、 Wave Edit 等。 3.声音的基本处理 通过 GoldWave 软件的状态栏,观察打开声音文件的采样频率、量化位数、声道数、声音长度、文件格式等信息。利用 GoldWave 软件可以对音频文件进行删除、剪裁、设置静音、淡入、淡 出、音量调整、合成等操作。 (1)用 GoldWave软件进行声音素材的处理: ①打开的音频文件在状态栏显示的参数信息:

视频采集卡接口的分类

视频采集卡接口的分类 视频采集卡常见输入输出接口介绍 现在的高清电视机和高清电视节目已近是人们高清娱乐的主要内容之一了,随着视频清晰度的不断上升,先后诞生了不少视频接口,可以说视频接口是实现高清的基础,不管是早期的还是最新的接口,现在很多视频接口还在继续使用,通过各种信号转换器/视频采集卡,AV,S-VIDEO转VGA AV,S-VIDEO转HDMI,色差转VGA,色差转HDMI等等,图像提升几倍,效果更好。常见的视频采集卡输入输出接口还是很值得我们去了解的。想看到清晰度高质量好的视频,视频信号的采集、传输、处理等视频技术固然很重要,但是数码产品的视频输入输出接口一样值得去考虑。说到各种接口、各种转接头又有谁能如数家珍呢? 通常我们也称之为RCA接口或者复合AV接口,一般复合AV线的输出或输入都采用与音响相同的梅花形RCA端子,用红色和白色分别表示左右声道,视频信号用黄色端子。复合信号传输方便、设备结构简单、成本低。 AV接口(RCARCA)可以算是TV的改进型接口,外观方面有了很大不同。分为了3条线,分别为:音频接口(红色与白色线,组成左右声道)和视频接口(黄色)。由三个独立的RCA插头(又叫梅花接口、RCA 接口)组成的,其中的V接口连接混合视频信号,为黄色插口;L接口连接左声道声音信号,为白色插口;R 接口连接右声道声音信号,为红色插口。 参考图示:AV接口/复合视频(CVBS)接口/RCA接口 复合视频(Composite)通常采用黄色的RCA(莲花插座)接头。“复合”含义是同一信道中传输亮度和色度信号的模拟信号,但电视机如果不能很好的分离这两种信号,就会出现虚影。音频接口和视频接口成对使用,通常都是白色的音频接口和黄色的视频接口,采用RCA(莲花头)进行连接,使用时只需要将带莲花头的标准AV 线缆与相应接口连接起来即可。 AV接口实现了音频和视频的分离传输,这就避免了因为音/视频混合干扰而导致的图像质量下降,但由于AV 接口传输的仍然是一种亮度/色度(Y/C)混合的视频信号,需要对其进行亮/ 色分离和色度解码才能成像,在先混合,再分离处理过程中必然会造成信号的丢失或失真,色度信号和亮度信号也会有很大的机会相互干扰。由于亮度/色度(Y/C)混合的视频信号处理方式所固有的技术缺陷,AV视频接口的应用就有了极大的限制。 DVI(Digital Visual Interface)接口 说白了,是在AV接口的基础上采用数字信号显示视频信号。DVI(Digital Visual Interface)接口与VGA 都是电脑中最常用的接口,与VGA不同的是,DVI可以传输数字信号,不用再进过数模转换,所以画面质量非常高。 参考图示:DVI(Digital Visual Interface)接口

多路视频数据实时采集系统设计与实现

多路视频数据实时采集系统设计与实现 常永亮王霖萱常馨蓉 ( 中国飞行试验研究院陕西西安 710089) ( 贵州省贵阳市花溪区贵州大学贵州省贵阳市 550025) ( 陕西省榆林市榆阳区榆林学院陕西省榆林市 719000) 摘要面对越来越多的实时视频采集、播放的应用,如何能更加方便的操控视频采集,保证流畅的播放效果,成为近几年实时媒体流的一个重要研究方向。本文介绍了视频数据的采集、记 录、编解码、多路视频数据间的切换,基于多网络协议组合下的多媒体流传输,动态切换四路视 频数据实时传输与播放,从而使远端操控、优质播放有了很大的提高。 关键词视频编解码、媒体流、RTP/RTCP协议、组播协议、TCP协议 0.引言 随着信息技术的不断发展,人们将计算机技术引入视频采集、视频处理领域,用计算机处理视频信息和网络传输数字视频数据在很多领域已有广泛的应用,飞机试飞中现如今也大量的应用。 针对目前分散在多处试飞现场视频传入监控大厅后监测设备多而分散的问题,提出了将多处试飞现场视频引入监控大厅后用一台高性能服务器管控,客户端通过网络请求服务器端检测关心的现场场景,达到集中管理优化监控的目的。 视频图像采集的方法较多,基本可分为2大类:数字信号采集和模拟信号采集。前者采用图像采集芯片组完成图像的采集、帧存储器地址生成以及图像数据的刷新;除了要对采集模式进行设定外,主处理器不参与采集过程,我们只要在相应的帧存储器地址取出采集到的视频数据即可得到相应的视频数据,这种方法,无论在功能、性能、可靠性、速度等各方面都得到了显著的提高,但成本高。后者采用通用视频采集卡实现图像的采集,并用软件进行实时编码,其特点是数据采集CPU占用率较高,对处理器的速度要求高,成本低、易于实现,能够满足某些图像采集系统的需要。此系统使用第二类视频采集方法。 如何将各处试飞现场视频信号通过VGA持续接收?传统方式是将模拟的VGA信号引到指定显示器显示,这样即浪费资源且多占空间。多路视频实时采集使用的是VisionRGB- PRO板卡(英国Datapath公司),此卡可同时实时采集两路视频数据,基本达到了本系统的要求,再用一台VGA矩阵切换器将前端数据源的四路视频数据进行人为切换采集,用H.264格式编解码,保存为H.264格式,通过RTP/RTCP 与组播协议将编码后视频流传输给请求客户端,而且可在客户端通过TCP协议选择关心的VGA采集通道。

基于DirectShow视频及图片捕获软件的开发

基于DirectShow视频及图片捕获软件的开发 我们知道目前很多工业相机的图像数据采集都是基于DirectShow的,常见的有映美精等。DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体流的捕捉和回放提供了强有力的支持。运用DirectShow,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。另外,DirectShow还集成了DirectX其它部分(比如DirectDraw、DirectSound)的技术,直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。更值得一提的是,DirectShow提供的是一种开放式的开发环境,我们可以根据自己的需要定制自己的组件。 笔者使用visual studio 2005 来开发了基于DirectShow的视频捕获软件,并用开发的软件对映美精相机进行了测试。本软件不但可以实现对相机的视频捕获,而且还可以抓取图像帧。软件运行时自动搜索所连接的相机,预览后可以对相机参数进行设置。下面是软件的主界面。 预览视频后可以对视频格式和图像参数进行设置。开始预览时,捕获的视频是黑白的,我们将颜色空间设置为UYVY即可捕获彩色视频。

下面是捕获的一帧图像,图像质量虽然没有映美精自带的软件效果好,但已经实现了所需各项基本功能,接下来的工作将会进一步提高软件性能。 另外我们还可以捕获视频,点击“捕获视频”按钮,输入要保持的文件名,注意要以.avi后缀结尾,点确定就开始捕获视频。 从我们开发的软件可以看到,映美精的相机能够很好的支持DirectShow的驱动,我们的软件对映美精相机的识别是如此的容易。接下来我们将继续开发基于其它驱动的图像捕获软件,为最终实现在一个软件中识别各种相机而努力。我们将逐步开放我们的源代码,以便更多的同行一起来探讨相机的图像采集技术。 下面是详细的软件开发过程。 一、安装DirectShow和visual studio 2005 首先我们安装DirectShow SDK,它有许多版本,作者使用的是2003年发布的dx90bsdk.exe,安装在D盘的DXSDK下。软件下载地址为 https://www.doczj.com/doc/469988573.html,/download/b/6/a/b6ab32f3-39e8-4096-9445-d38e6675de85/dx90bsdk.exe。 然后安装好visual studio 2005。安装完以后我们将进行开发环境的配置。 二、开发环境配置

数字视频素材的采集

一、数字视频素材的采集 要实现对节目的非线性编辑,首先必须将记录在录像带上的视音频信号转换成计算机硬盘上存贮的文件,这就是素材的第二次采集,也是进行非线性编辑的第一步。在这个采集过程中必须注意到以下事项: 1.接好硬件设备。 这里的硬件设备即我们所说的实验器材。具体包括以下几个方面的工作:a)将非线性编辑机电源打开,进入 windows 操作系统。 b)把录像机的电源打开,并将录像带(素材带)放置到录像机中。如果用摄像机作为录像播放机使用,请将摄像机置于 VTR 工作模式,即 PLAY 放像状态。 c)用视音频连接线将编辑机和录像机连接起来。如果播放机使用的是 1394 接口,那么请用 1394 线,以达到最好的图像信号质量。如果不是请用复合视音频线。这两种视音频连接线如下图所示。在连接时注意计算机和录像机的接线面板上只有唯一的接口与之对应。 图 1 复合视音频线 图 2 1394 线 2. 采集并保存数字素材。 在设备连接好后,即可进行采集。具体步骤如下:

a)打开编辑编辑软件平台:Premiere。 可以在计算机的桌面上找到如下图标(图 3),双击打开。或者可以在开始菜单中,通过:程序 >> adobe >> premiere6.0 下单击 adobe premiere 6.0 打开。 图 3 桌面上的 premiere 快捷方式 打开 premiere 后,程序会弹出一个对话框,该对话框是让你选择自己的视音频采样和编辑模式。如图4所示。在这其中,我们可以选择Canopus DV–PAL >> standard 44.1KHz 或 48KHz。 需要说明的有几点: 第一、选择 CanopusDV 的原因。我们实验所用到的机器中使用的编辑卡是Canopus 公司生产的 DVStorm 卡,之所以选择这一项是因为它可以使采集到的数字视音频素材能更好的支持编辑机,发挥该机器的整体性能。 第二、选择 PAL 的原因。目前世界上电视节目信号的有两大制式: PAL 和NTSC。N 制主要适用于北美、日本、南美等国家。而 P 制适用于中国、西欧、亚洲、澳大利亚、非洲和南美的一些国家。 第三、选择 44.1KHz 或 48KHz 的原因。首先,这里的 44.1KHz 和 48KHz 是指在信号采集时采样的频率,频率越高,声音的保真度越高,但同时所需的硬盘空间也就越大。其次,人耳能听到的声音频率在 20HZ~20KHz 范围之间,选择44.1KHz 或 48KHz 足以保证声音不失真。 图 4 节目采样和编辑工作模式选择对话框

多通道视频采集卡技术方案说明

PCI 多路视频采集卡 快速使用手册 创欣威视电子(深圳)有限公司 2011-8-30

PCI视频卡主控系统使用说明 一系统特点 1.支持8路实时视频 2.支持8路Half-D1实时视频浏览 3.支持8路实时视频H264压缩,分辨率CIF 4.实时视频浏览使用DirectDraw 5.硬件兼容性,支持大部分的主板和显卡 6.软件兼容性,支持Windows 2000、Windows XP、Windows 7 7.支持本地录像查找回放 8.支持本地抓拍图像文件查找回放 9.支持实时图像压缩录像 10.支持N/P转换 11.支持视频图像亮度、色度、对比度、饱和度的调整 12.支持OSD名称 13.支持定时录像 14.支持多分屏显示 15.支持云台控制 16.支持通道PIP 17.支持画面浏览的镜像 18.支持画面浏览的上下颠倒 19.支持画面暂停 20.提供网络服务 21.支持录像回放控制 22.支持用户管理功能 23.支持锁定(注销)/解锁(登录) 24.支持实时图像抓拍 二主机系统要求 1.最低配置要求 CPU 双核3.0GHz 内存2G DDR3 显卡集成或独立,支持DirectDraw 显示器分辨率:1280*1024 2.软件要求 Windows2000 WindowsXP Windows7

三系统安装 1.硬件安装 1) 将PCI采集卡插在电脑主机的PCI插槽并固定 2)将连接线插入PCI采集卡的接口 3)连接对应的视频线 2.软件安装 1)PCI采集卡驱动安装 ⑴在“我的电脑”上点右键,在弹出菜单中选择“属性”,弹出如下窗口: (2) 选择“硬件”选项,如下图:

基于DirectShow视频及图片捕获软件的开发

我们知道目前很多工业相机的图像数据采集都是基于DirectShow的,常见的有映美精等。DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体流的捕捉和回放提供了强有力的支持。运用DirectShow,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。另外,DirectShow还集成了DirectX其它部分(比如DirectDraw、DirectSound)的技术,直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。更值得一提的是,DirectShow提供的是一种开放式的开发环境,我们可以根据自己的需要定制自己的组件。 笔者使用visual studio 2005 来开发了基于DirectShow的视频捕获软件,并用开发的软件对映美精相机进行了测试。本软件不但可以实现对相机的视频捕获,而且还可以抓取图像帧。软件运行时自动搜索所连接的相机,预览后可以对相机参数进行设置。下面是软件的主界面。 预览视频后可以对视频格式和图像参数进行设置。开始预览时,捕获的视频是黑白的,我们将颜色空间设置为UYVY即可捕获彩色视频。 下面是捕获的一帧图像,图像质量虽然没有映美精自带的软件效果好,但已经实现了所需各项基本功能,接下来的工作将会进一步提高软件性能。 另外我们还可以捕获视频,点击“捕获视频”按钮,输入要保持的文件名,注意要以.avi后缀结尾,点确定就开始捕获视频。 从我们开发的软件可以看到,映美精的相机能够很好的支持DirectShow的驱动,我们的软件对映美精相机的识别是如此的容易。接下来我们将继续开发基于其它驱动的图像捕获软件,为最终实现在一个软件中识别各种相机而努力。我们将逐步开放我们的源代码,以便更多的同行一起来探讨相机的图像采集技术。 下面是详细的软件开发过程。 一、安装DirectShow和visual studio 2005 首先我们安装DirectShow SDK,它有许多版本,作者使用的是2003年发布的,安装在D盘的DXSDK下。软件下载地址为。 然后安装好visual studio 2005。安装完以后我们将进行开发环境的配置。 二、开发环境配置

初中信息技术《视频采集与处理》教案

《视频采集与处理》教案 日期周次年级七年级课题 视频采集与处理—畅游在山水圣 人间 课时安排建议1课时 教学目标 知识目标 1、了解动画、视频的基本知识; 2、掌握视频的基本编辑方法。 技能目标 学会对视频文件进行简单的加工。 情感态度与价值观目标 1、感受视频处理的过程; 2、培养自主探索和互助合作的精神。 重难点 重点:掌握视频的基本知识。 难点:学会视频的基本编辑方法。 教学准备自制课件,lanstar多媒体网络教室 教材分析本节课学习视频的基本编辑,会对视频进行简单的加工。 教学过程创设情景 激趣导入 教师播放一段视频,请学生欣赏。 师:大家会播放视频吗? 生:回答 师:如何播放和加工视频呢?今天我们就来学习视频采集与处理—畅游在山水圣人间。 设计理念:教师播放视频,激发学生学习的兴趣,创设问题情景,导出课题。 自主探究 交流分享 将全班同学分成四个小组,每个小组选择一个任务进行自主探究,先在小组内交流,然后小组派代表汇报探究成果,其他小组进行验证。 任务一、动画和视频的含义分别是什么? 任务二、如何播放视频 任务三、用“超级解霸3000”采集光盘上的一段视频

任务四、给这段视频添加字幕“山水圣人行” 设计理念:教师根据教学内容,设置适当的学习任务,让学生自主探究问题,培养学生的探究能力,学生交流心得体会,共同进步。 合作学习释疑解难 教师询问哪些同学还有不明白的地方,可以提出来,大家一起来探讨。 生:…… 师:谁能帮他解决一下这个问题? 设计理念:教师整合学生提出的问题,然后让学生进行小组讨论,教师组织学生合作学习,如果学生不能解决问题,教师则进行重点讲解。 实践创作展示评价 师:请你寻找合适的视频资源并进行编辑加工,以“新青岛、新奥运”的主题,展示青岛“海上奥运”的特色,体现青岛“山、海、城”浑然一体、人与自然和谐共处的城市特点。 设计理念:教师设置合适的任务,学生进行实践创作,然后师生对学生作品进行评价,教师要发现学生作品中的闪光点,对学生作品进行充分的肯定。 梳理总结拓展延伸 设计理念:教师设置新的问题,引起学生思考,让学生课后研究,培养学生的拓展性思维。

相关主题
文本预览
相关文档 最新文档