视频捕获

视频捕获
视频捕获

目录

一. 视频捕获快速入门 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

前言

视频捕获是指由专用的视频采集卡捕获声频和视频信息,然后将其进行数据化处理,再经过软件的压缩进行处理,这时就可对这些数据进行保存、回放、传输等各种操作。

Windows专门提供了Video for Windows来对视频处理进行支持,提供的接口可以被大多数的视频采集卡支持,并有多种视频压缩驱动供选择(当然视频压缩可以自己开发),采集卡支持摄像头,TV等多种输入。

一. 视频捕获快速入门

视频捕捉将一个视频流和音频流数字化, 然后存储在硬盘或其他存储介质上.

一个A VICap视窗口句柄描述了声频与视频流的细节, 这样就使你的应用程序从A VI文件格式, 声频视频缓冲管理, 低层声频视频驱动访问等等解脱出来, A VICap为应用程序提供了一个灵活的介面, 你可以仅仅使用如下几行代码就可以将视频捕捉加入你的程序:

hWndC = capCreateCaptureWindow ( "My Own Capture Window",

WS_CHILD | WS_VISIBLE , 0, 0, 160, 120, hwndParent, nID);

SendMessage (hWndC, WM_CAP_DRIVER_CONNECT, 0 /* wIndex */, 0L);

SendMessage (hWndC, WM_CAP_SEQUENCE, 0, 0L);

一个宏其实也是使用SendMessage, 只不过提供给程序一个更易读的代码而已, 下面的这些示例就是使用宏的方法将视频捕捉加入程序:

hWndC = capCreateCaptureWindow ( "My Own Capture Window",

WS_CHILD | WS_VISIBLE , 0, 0, 160, 120, hwndParent, nID);

capDriverConnect (hWndC, 0);

capCaptureSequence (hWndC);

当你创建了一个A VICap类的捕捉窗口并将它连接到一个视频驱动时, 此捕捉窗口即可以开始捕捉数据, 你的程序可以简单的发送WM_CAP_SEQUENCE消息(或者使用capCaptureSequence宏)来开始捕捉.

如果是缺省的设置, WM_CAP_SEQUENCE会开始捕捉视频音频流到CAPTURE.A VI文件中,

直到下面的某一事件发生为止:

用户按下了ESC键或者一个鼠标键

你的应用程序终止或异常中断捕捉操作

磁盘已满

在一个应用程序里, 你可以发送WM_CAP_STOP消息来终止捕捉数据(或者使用capCaptureStop宏), 你也可以发送WM_CAP_ABORT消息(或者使用capCaptureAbort宏)来终止.

二.基本的捕获设置

基本的捕获设置包括:设置捕获速度(每秒捕获多少帧),是否同时捕获声频,捕获缓冲,允许最大丢失多少帧,是否使用DOS内存,以及用键盘的哪个键或鼠标的哪个键来终止捕获等等。这些基本的设置都可以使用CAPTUREPARAMS结构来描述,你可以使用capCaptureGetSetup宏来得到当前的设置,然后改变此结构的成员变量,再使用capCaptureSetSetup宏设置新的设置。

例如:

1.设置捕获速度:

捕捉速度是指捕捉任务每秒钟捕获的帧数, 你可以发送WM_CAP_GET_SEQUENCE_SETUP消息(或者使用capCaptureGetSetup宏)来得到当前的捕捉速度, 当前的捕捉速度保存在CAPTUREPARAMS结构的dwRequestMicroSecPerFrame成员变量中, 你可以通过设置此变量来改变当前设置, 单位是每毫秒连续的帧数, 你可以发送WM_CAP_SET_SEQUENCE_SETUP消息(或者使用capCaptureSetSetup宏), dwRequestMicroSecPerFrame的值是66667, 相当于每秒15帧.

2.设置终止捕获

你可以允许用户按下某键或某组合键或者鼠标的左右键来终止一个捕获任务, 如果是实时的捕获, 则捕获的文件将会被丢弃; 如果是单步捕获, 在终止之前所捕获的内容将会被保存.

你可以通过发送WM_CAP_GETQUENCE_SETUP消息(或者使用capCaptureGetSetup宏)来得到当前的设置, 当前的按键设置保存在CAPTUREPARAMS的vKeyAbort成员中, 当前的鼠标设置保存在fAbortLeftMouse和fAbortRightMouse成员中. 你可以设置新的按键或按键组合, 或者鼠标左右键, 当你修改的CAPTUREPARAMS后,应该发送WM_CAP_SET_SEQUENCE_SETUP消息来进行更新(或者使用capCaptureSetSetup宏). 缺

省的按键是VK_ESCAPE. 你必须在指定按键之前使用RegisterHotKey函数, 鼠标缺省的值是fAbortLeftMouse和fAbortRightMouse都为TRUE.

3.捕获的时间限制

CAPTUREPARAMS结构中的fLimitEnabled指示是否有时间限度, wTimeLimit指示最大的持续时间, 单位为秒.

得到fLimitEnabled和wTimeLimit的值可以发送WM_CAP_GET_SEQUENCE_SETUP消息(或使用capCatureGetSetup宏), 当设置了这些成员变量后, 应该发送消息WM_CAP_SET_SEQUENCE_SETUP消息(或capCaptureSetSetup宏)来更新CAPTUREPARAMS结构.

三.关于捕获窗口

在捕获之前必须创建一个捕获窗口(capture window),在发送消息或使用宏的过程中都需要使用此窗口。

1.创建一个A VICap捕获窗口

你可以使用capCreateCaptureWindow函数来创建一个A VICap捕获窗口, 此函数将会返回一个句柄, 此句柄以后在发送消息时要用.

你可以在一个程序里创建一个或多个捕获窗口, 然后给每一个窗口连接不同的捕获设置. 2.将一个捕获窗口连接至捕获设备

你可以动态的在一个捕获窗口与一个捕获设备之前连接或断接, 你可以发送WM_CAP_DRIVER_CONNECT消息来使一个捕获窗口与一个捕获设备连接或关联. 当连接上以后, 你就可以通过捕获窗口向捕获设备发送各种消息.

如果你的系统里装有多个捕获设备, 你可以在发送WM_CAP_DRIVER_CONNECT消息时用wParam参数指定使用哪一个, 此参数是登记在SYSTEM.INI文件的[drivers]一节里的列表中的某一项, 0为第一个.

你可以使用capGetDriverDescription函数来得到已安装的捕获设备的名称及版本, 这样你的程序就可以列举所有已安装的捕获设备和驱动, 这样用户就可以选择其中的一个来与你的捕获窗口连接.

你可以发送WM_CAP_DRIVER_GET_NAME消息(或capDriverGetName宏)来得到连接到捕获窗口的捕获设备的名称, 得到版本发送WM_CAP_DRIVER_GET_VERSION消息(或

capDriverGetVersion宏)

你可以发送WM_CAP_DRIVER_DISCONNECT消息(或capDriverDisconnect宏)来断接. 3.父窗口与子窗口的交互

一些象WM_PALETTECHANGED和WM_QUERYNEWPALETTE的系统级消息只能发送到顶级窗口或OVERLAPPED窗口, 如果一个捕获窗口是子窗口,就必须通过父窗口转送.

同样的, 如果父窗口的尺寸改变了, 它就需要通知捕获窗口, 相反地, 如果捕获窗口的尺寸改变了, 捕获窗口就需要发送消息给父窗口, 一个简单的方法就是始终保持捕获窗口的尺寸与视频流的尺寸一致, 并随时将尺寸的改变通知父窗口.

4.捕获窗口的状态

你可以发送WM_CAP_GET_STA TUS消息(或capGetStatus宏)来得到当前捕获窗口的状态, 得到的是一个CAPSTATUS结构的拷贝, 它包含图片的尺寸, 卷轴的当前位置, overlay和preview是否已设置.

因为CAPSTATUS信息是动态的, 你的程序应该只要捕获的视频流的尺寸或格式可能发生了改变就应该进行刷新(例如: 显示了捕获设备的视频格式以后).

改变捕获窗口的尺寸并不影响实际的捕获的视频流的尺寸, 视频捕获设备的格式对话框捕获频流的尺寸.

四.视频捕获驱动和音频驱动

1.视频捕获驱动的性能:

你可以通过发送WM_CAP_DRIVER_GET_CAPS消息(或者capDriverGetCaps宏)来得到当前连接的视频驱动的硬件性能. 得到的信息保存在CAPDRIVERCAPS结构中.

2.视频对话框:

每一个视频驱动能够提供四个对话框来控制视频捕获和数字化处理, 定义压缩品质等, 这些对话框都定义在视频捕获驱动中.

Video Source对话框用于控制选择视频来源, 此对话框列举了此视频捕获卡连接的所有视频源(典型的例如:SVHS和合成输入), 并提供了改变色调, 对比度, 饱和度. 如果视频驱动支持此对话框, 你就可以显示并更新它, 使用WM_CAP_DLG_VIDEOSOURCE消息(或

capDlgVideoSource宏).

Video Format对话框定义视频帧的尺寸以及精度, 视频捕获卡的压缩设置. 如果卡支持的话, 可以发送消息WM_CAP_DLG_VIDEOFORMAT消息或(capDlgVideoFormat宏).

Video Display对话框控制在视频捕获期间在显示器上的显示, 此控制不会影响视频数字数据, 但是他们可能会影响数字信号的表现形式, 例如: 如果捕获设备支持overlay, 可能允许改变色调和饱和度, 关键色彩或者overlay队列. 如果卡支持, 你可以发送WM_CAP_DLG_VIDEODISPLAY消息(或者使用capDlgVideoDisplay宏).

Video Compression对话框控制压缩品质, 如果卡支持, 发送消息WM_CAP_DLG_VIDEOCOMPRESSION(或capDlgVideoCompression宏).

3.Preview 和Overlay模式:

一个视频捕获驱动对进入的视频流有两种工作模式: Preview模式和overlay模式, 如果一个捕获驱动能够执行两种方法, 用户可以在其中选择一种.

Preview模式把从捕获硬件传来的数据送入系统内存并使用图形设备介面(GDI)将数字化帧显示在捕获窗口内. 应用程序可以在父窗口失去焦点时减缓显示速度, 当重新又得到焦点后加快显示速度, 此种模式要占用大量CPU时间.

有三种消息控制Preview操作:

WM_CAP_SET_PREIVEW消息(capPreview宏)允许或禁止preview模式

WM_CAP_SET_PREVIEWRA TE(capPreviewRate宏)当帧在preview模式显示时设置速度. WM_CAP_SET_SCALE(capPreviewScale宏)允许或禁止preview视频的缩放比例.

当preview和scaling同时使用, 捕获的视频帧将会根据捕获窗口的尺寸自动缩放, 允许preview模式会自动关闭overlay模式.

overlay模式是一个硬件函数它将数据送入捕获缓冲区中因而不占用CPU资源. 你可以发送消息WM_CAP_SET_OVERLAY(或capOverlay宏)给捕获窗口来启用或终止overlay模式, 允许overlay模式会自动禁止preview模式.

你同时也可以在preview模式或overlay模式里发送WM_CAP_SET_SCROLL消息(或capSetScrollPos宏)来设置视频帧的客户区卷轴位置.

4.视频格式

你可以通过发送WM_CAP_GET_VIDEOFORMAT消息(或capGetVideoFormat和capGetVideoFormatSize宏)来得到视频格式的结构或结构的尺寸. 你可以通过发送CAP_SET_VIDEOFORMA T消息(或capSetVideoFormat宏)来设置视频格式.

5.视频捕获设置

CAPTUREPARMS结构包含了对视频捕获流的控制参数, 你可以完成以下这些任务:

指定帧数

指定分配多少视频缓冲

允许或禁止声频捕获

指定捕获的时间间隔

指定在捕获的过程中是否使用MCI设置(VCR或者videodisc)

指定终止流的键盘或鼠标

specify the type of video averaging applied during capture.

得到:WM_CAP_GET_SEQUENCE_SETUP消息(或capCaptureGetSetup宏)

设置:WM_CAP_SET_SEQUENCE_SETUP消息(或capCaptureSetSetup宏)

6.声频格式

你可以通过发送WM_CAP_GET_AUDIOFORMAT消息(或capGetAudioFormat宏和capGetAudioFormatSize宏)来得到当前捕获音频数据的格式或尺寸格式。缺省的声频格式是:单声道、8位、11kHz PCM。当你使用WM_CAP_GET_AUDIOFORMAT时,总是使用W A VEFORMA TEX结构。

设置发送消息WM_CAP_SET_AUDIOFORMAT消息(或capSetAudioFormat宏),可以传送W A VEFORMA T,W A VEFORMATEX,PCMW A VEFORMAT结构指针。

五.使用视频捕获

1.创建捕获窗口(Creating a Capture Window)

hWndC = capCreateCaptureWindow (

(LPSTR) "My Capture Window", // window name if pop-up

WS_CHILD | WS_VISIBLE, // window style

0, 0, 160, 120, // window position and dimensions

(HWND) hwndParent,

(int) nID /* child ID */);

2.连接到捕获驱动(Connecting to a Capture Driver)

下面的例子是将MSVIDEO驱动连接到句柄为hWndC的捕获窗口, 然后调用capDriverDisconnect宏来断接.

fOK = SendMessage (hWndC, WM_CAP_DRIVER_CONNECT, 0, 0L);

//

// Or, use the macro to connect to the MSVIDEO driver:

// fOK = capDriverConnect(hWndC, 0);

//

// Place code to set up and capture video here.

//

capDriverDisconnect (hWndC);

3.列举所有已安装的捕获驱动(Enumerating Installed Capture Drivers)

下面的例子使用capGetDriverDescription函数得到已安装的捕获驱动的名称及版本:

char szDeviceName[80];

char szDeviceVersion[80];

for (wIndex = 0; wIndex < 10; wIndex++)

{

if (capGetDriverDescription (wIndex, szDeviceName,

sizeof (szDeviceName), szDeviceVersion,

sizeof (szDeviceVersion))

{

// Append name to list of installed capture drivers

// and then let the user select a driver to use.

}

}

4.得到捕获驱动的性能(Obtaining the Capabilities of a Capture Driver)

发送WM_CAP_DRIVER_GET_CAPS消息可以得到捕获驱动的性能,并保存入一个CAPDRIVERCAPS结构.每当程序连接一个新的捕获驱动到一个捕获窗口时, 就应该更新CAPDRIVERCAPS结构. 下面的程序举例说明了如何使用capDriverGetCaps宏来得到捕获驱动的性能:

CAPDRIVERCAPS CapDrvCaps;

SendMessage (hWndC, WM_CAP_DRIVER_GET_CAPS,

sizeof (CAPDRIVERCAPS), (LONG) (LPVOID) &CapDrvCaps);

// Or, use the macro to retrieve the driver capabilities.

// capDriverGetCaps(hWndC, &CapDrvCaps, sizeof (CAPDRIVERCAPS));

5.得到捕获窗口的状态(Obtaining the Status of a Capture Window)

下面的例子使用SetWindowPos函数使捕获窗口与进来的视频流尺寸保持一致, 视频流的基本信息是使用capGetStatus宏得到的, 保存在CAPSTATUS结构中.

CAPSTATUS CapStatus;

capGetStatus(hWndC, &CapStatus, sizeof (CAPSTA TUS));

SetWindowPos(hWndC, NULL, 0, 0, CapStatus.uiImageWidth,

CapStatus.uiImageHeight, SWP_NOZORDER | SWP_NOMOVE);

6.显示对话框设置视频特征(Displaying Dialog Boxes to Set Video Characteristics)

每个视频捕获卡一般能提供三个不同的对话框用于控制视频捕获及数字化处理. 下面的例子说明如何显示这些对话框, 在显示这些对话框之前,使用了capDriverGetCaps宏来检查CAPDRIVERCAPS结构, 以检测该卡是否有显示这些对话框:

CAPDRIVERCAPS CapDrvCaps;

capDriverGetCaps(hWndC, &CapDrvCaps, sizeof (CAPDRIVERCAPS));

// Video source dialog box.

if (CapDriverCaps.fHasDlgVideoSource)

capDlgVideoSource(hWndC);

// Video format dialog box.

if (CapDriverCaps.fHasDlgVideoFormat)

{

capDlgVideoFormat(hWndC);

// Are there new image dimensions?

capGetStatus(hWndC, &CapStatus, sizeof (CAPSTA TUS));

// If so, notify the parent of a size change.

}

// Video display dialog box.

if (CapDriverCaps.fHasDlgVideoDisplay)

capDlgVideoDisplay(hWndC);

7.得到和设置视频格式(Obtaining and Setting the Video Format)

BITMAPINFO结构的长度既适应于标准的也适应于压缩的数据格式, 所有程序必须总是询问此结构的尺寸以便在得到当前的视频格式之前分配内存. 下面的例子就是使用capGetVideoFormatSize宏来得到缓冲区尺寸并调用capGetVideoFormat宏来得到当前的视频格式.

LPBITMAPINFO lpbi;

DWORD dwSize;

dwSize = capGetVideoFormatSize(hWndC);

lpbi = GlobalAllocPtr (GHND, dwSize);

capGetVideoFormat(hWndC, lpbi, dwSize);

// Access the video format and then free the allocated memory.

程序可以使用capSetVideoFormat宏(或WM_CAP_SET_VIDEOFORMAT消息)发送一个BITMAPINFO头结构给捕获窗口, 因为视频格式是设备细节, 你的程序应该检查返回值以便确定此格式是否已被接受.

8. 预览视频(Previewing Video)

下面的例子使用capPreviewRate宏来设置每66毫秒显示一帧, 并使用capPreview宏将它放置在捕获窗口里.

capPreviewRate(hWndC, 66); // rate, in milliseconds

capPreview(hWndC, TRUE); // starts preview

// Preview

capPreview(hWnd, FALSE); // disables preview

9.将视频设置为overlay模式(Enabling Video Overlay)

下面的例子: capDriverGetCaps宏确定此捕获卡是否有overlay功能, 如果有就使用宏来设置它

CAPDRIVERCAPS CapDrvCaps;

capDriverGetCaps(hWndC, &CapDrvCaps, sizeof (CAPDRIVERCAPS));

if (CapDrvCaps.fHasOverlay)

capOverlay(hWndC, TRUE);

10.命名捕获文件(Naming the Capture File)

下面的例子: 使用capFileSetCaptureFile宏来指定预备文件名为:MYCAP.A VI, capFileAlloc宏预先指定它的大小为5M.

char szCaptureFile[] = "MYCAP.A VI";

capFileSetCaptureFile( hWndC, szCaptureFile);

capFileAlloc( hWndC, (1024L * 1024L * 5));

11.格式化声频捕获(Formatting Audio Capture)

下面的例子使用capSetAudioFormat来设置声频格式为:11kHz, PCM 8位, 立体声

WA VEFORMA TEX wfex;

wfex.wFormatTag = W A VE_FORMAT_PCM;

wfex.nChannels = 2; // Use stereo

wfex.nSamplesPerSec = 11025;

wfex.nAvgBytesPerSec = 22050;

wfex.nBlockAlign = 2;

wfex.wBitsPerSample = 8;

wfex.cbSize = 0;

capSetAudioFormat(hWndC, &wfex, sizeof(W A VEFORMATEX));

12.改变视频捕获设置(Changing a Video Capture Setting)

下面的例子使用capCaptureGetSetup和capCaptureSetSetup宏得将捕获帧数从缺省的15帧改成每秒10帧.

CAPTUREPARMS CaptureParms;

float FramesPerSec = 10.0;

capCaptureGetSetup(hWndC, &CaptureParms, sizeof(CAPTUREPARMS));

CaptureParms.dwRequestMicroSecPerFrame = (DWORD) (1.0e6 /FramesPerSec); capCaptureSetSetup(hWndC, &CaptureParms, sizeof (CAPTUREPARMS));

13.捕获数据(Capturing Data)

下面的例子使用capCaptureSequence宏来开始捕获视频并使用capFileSaveAs宏来将捕获的数据拷贝至NEWFILE.AVI文件中.

char szNewName[] = "NEWFILE.AVI";

// Set up the capture operation.

capCaptureSequence(hWndC);

// Capture.

capFileSaveAs(hWndC, szNewName);

14.增加一个信息块(Adding an Information Chunk)

如果你需要在你的程序捕获的声频和视频数据中加入你的其他信息, 你可以创建一个信息块并将它们插入捕获文件中, 信息块可以包含一些典型的信息, 例如:版权信息,视频来源, 外部定位信息等. 下面的例子使用capFileSetInfoChunk宏来插入一个信息块, 里面包含了一个SMPTE的时间代码.

// This example assumes the application controls

// the video source for preroll and postroll.

CAPINFOCHUNK cic;

// .

// .

// .

cic.fccInfoID = infotypeSMPTE_TIME;

cic.lpData = "00:20:30:12";

cic.cbData = strlen (cic.lpData) + 1;

capFileSetInfoChunk (hwndC, &cic);

15.在程序中加入一个回调函数(Adding Callback Functions to an Application)

一个程序可以为捕获窗口登记一个回调函数以便在以下的这些情况下通知程序.

状态改变

错误发生

视频框架和声频缓冲区变得可用

程序应用在捕获视频流的过程中接收

下面的例子创建一个捕获窗口并登记状态,错误,视频流和框架回调函数在消息处理对列中, 也包括了一个终止回调函数的说明.

case WM_CREATE:

{

char achDeviceName[80] ;

char achDeviceVersion[100] ;

char achBuffer[100] ;

WORD wDriverCount = 0 ;

WORD wIndex ;

WORD wError ;

HMENU hMenu ;

// Create a capture window using the capCreateCaptureWindow macro.

ghWndCap = capCreateCaptureWindow((LPSTR)"Capture Window",

WS_CHILD | WS_VISIBLE, 0, 0, 160, 120, (HWND) hWnd, (int) 0);

// Register the error callback function using the

// capSetCallbackOnError macro.

capSetCallbackOnError(ghWndCap, fpErrorCallback);

// Register the status callback function using the

// capSetCallbackOnStatus macro. capSetCallbackOnStatus(ghWndCap, fpStatusCallback);

// Register the video-stream callback function using the

// capSetCallbackOnVideoStream macro. capSetCallbackOnVideoStream(ghWndCap, fpVideoCallback); // Register the frame callback function using the

// capSetCallbackOnFrame macro. capSetCallbackOnFrame(ghWndCap, fpFrameCallback);

// Connect to a capture driver

break;

}

case WM_CLOSE:

{

// Use the capSetCallbackOnFrame macro to

// disable the frame callback. Similar calls exist for the other

// callback functions.

capSetCallbackOnFrame(hWndC, NULL);

break;

}

16.创建一个状态回调函数(Creating a Status Callback Function)

下面的例子是创建一个简单的状态回调函数,登记此回调函数使用capSetCallbackOnStatus宏. // StatusCallbackProc: status callback function

// hWnd: capture window handle

// nID: status code for the current status

// lpStatusText: status text string for the current status

//

LRESULT PASCAL StatusCallbackProc(HWND hWnd, int nID,

LPSTR lpStatusText)

{

if (!ghWndMain)

return FALSE;

if (nID == 0) { // Clear old status messages.

SetWindowText(ghWndMain, (LPSTR) gachAppName);

return (LRESULT) TRUE;

}

// Show the status ID and status text...

wsprintf(gachBuffer, "Status# %d: %s", nID, lpStatusText);

SetWindowText(ghWndMain, (LPSTR)gachBuffer);

return (LRESULT) TRUE;

}

17.创建一个错误回调函数( Creating an Error Callback Function)

下面的例子是创建一个简单的错误回调函数,登记此回调函数使用capsetCallbackOnError宏: // ErrorCallbackProc: error callback function

// hWnd: capture window handle

// nErrID: error code for the encountered error

// lpErrorText: error text string for the encountered error

//

LRESULT PASCAL ErrorCallbackProc(HWND hWnd, int nErrID,

LPSTR lpErrorText)

{

if (!ghWndMain)

return FALSE;

if (nErrID == 0) // Starting a new major function.

return TRUE; // Clear out old errors.

// Show the error identifier and text.

wsprintf(gachBuffer, "Error# %d", nErrID);

MessageBox(hWnd, lpErrorText, gachBuffer,

MB_OK | MB_ICONEXCLAMATION);

return (LRESULT) TRUE;

}

18.创建一个框架回调函数(Creating a Frame Callback Function)

登记此回调函数使用capSetCallbackOnFrame宏:

// FrameCallbackProc: frame callback function

// hWnd: capture window handle

// lpVHdr: pointer to struct containing captured

// frame information

//

LRESULT PASCAL FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr) {

if (!ghWndMain)

return FALSE;

wsprintf(gachBuffer, "Preview frame# %ld ", gdwFrameNum++); SetWindowText(ghWndMain, (LPSTR)gachBuffer);

return (LRESULT) TRUE ;

}

视频采集卡故障原因分析

视频采集卡|安防采集卡|监控采集卡常见故障问题解答 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.360docs.net/doc/0219068928.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视频捕获主要的好处体现在:

空间播放器代码大全:网页中插入各种格式视频播放代码大全

空间播放器代码大全:网页中插入各种格式视频播放代码大全 疯狂代码 https://www.360docs.net/doc/0219068928.html,/ ?:http:/https://www.360docs.net/doc/0219068928.html,/HtmlJiaoCheng/Article19101.html 1.avi格式 代码片断如下: 2.mpg格式 代码片断如下:

交通视频采集系统

交通视频采集系统 第一章建设背景 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

数字化视频采集技术

摘要: 介绍了视频的模式、数字化视频的采样方式以及各种压缩算法。 关键词:视频模型;数字化视频,信号采集;压缩算法 中图分类号: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所示。

教你如何识别视频采集卡

安防领域(视频采集卡),各种各样的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路实时监控录像,而国内监控全实

网页视频播放器代码

网页视频播放器代码大全网页mtv播放器代码 一. RM格式(无边框按钮)RealPlayer 代码如下:

二. RM格式(带边框按钮)RealPlayer 代码如下:

三. WMV格式(带边框按钮)Windows Media Player 代码如下:

视频采集卡接口的分类

视频采集卡接口的分类 视频采集卡常见输入输出接口介绍 现在的高清电视机和高清电视节目已近是人们高清娱乐的主要内容之一了,随着视频清晰度的不断上升,先后诞生了不少视频接口,可以说视频接口是实现高清的基础,不管是早期的还是最新的接口,现在很多视频接口还在继续使用,通过各种信号转换器/视频采集卡,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.360docs.net/doc/0219068928.html,/download/b/6/a/b6ab32f3-39e8-4096-9445-d38e6675de85/dx90bsdk.exe。 然后安装好visual studio 2005。安装完以后我们将进行开发环境的配置。 二、开发环境配置

网页视频播放器代码大全

网页视频播放器代码大全 1.avi格式 代码片断如下: 2.mpg格式 代码片断如下:

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

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. avi格式 2. mpg格式

相关文档
最新文档