如何将采集的视频流通过TCP/IP或UDP发送给其他机器并且播放出来。

00000000000 2002-07-30 12:57:03
用DX SHOW 采集的信号直接可以在本机过率播放如何发给远程实时播放。
流格式是???
...全文
1246 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qsfsea 2002-09-02
  • 打赏
  • 举报
回复
MARK
司马青衫依旧 2002-07-31
  • 打赏
  • 举报
回复
我也进行相关的开发,非常关注并且UP!!!
00000000000 2002-07-31
  • 打赏
  • 举报
回复
采集帧->选一种编码方式(mpeg4,divx, h263,......)编码->打包成udp->发送。

接收udp包->解码->绘制播放。

编码和解码部分请 xuying() 明述。
00000000000 2002-07-31
  • 打赏
  • 举报
回复
写Socket我是不怕,主要还是MPEG1的流问题 我不知道DX SHOW里从那里得到
什么样的数据,发多大的包给远程播放器,然后播放器收到了数据后怎么播放?

望高手赐教。
我这里没有网络问题。
lsz74 2002-07-30
  • 打赏
  • 举报
回复
TO:wuxuan(真心英雄)
能不能给我一份详细的源代码?不胜感激!
Email: lsz74@163.net
sunyou 2002-07-30
  • 打赏
  • 举报
回复
gz
guopo 2002-07-30
  • 打赏
  • 举报
回复
gz!
wuxuan 2002-07-30
  • 打赏
  • 举报
回复
TCP/IP通信部分,推荐你看以下文章,也许对你有帮助 .


基于TCP/IP的局域网多用户通信

摘要:基于TCP/IP的网络通信技术实现了面向连接的用户与服务器间点对点异步通信,本文在该基础上应用了多线程以及共享数据结构技术,使网络服务器具有了多用户间数据转发的功能,进而解决了局域网多用户间的通信问题。

关键词:TCP/IP;多线程;共享;通信;网络


引言

由于因特网的迅速流行,越来越多的应用程序具备了在网上与其它程序通信的能力。从WIN95开始微软把网络功能融进了它的操作系统,使得应用程序网络通信能力更为普及。因此,微软的TCP/IP协议也就成为网络应用程序基于的首选协议。

一般采用TCP/IP协议的应用程序只实现了单用户与服务器间点对点的连接,而本文在VC6.0的环境下,运用了了多线程以及共享数据结构技术,不仅实现了多用户与服务器间的连接,而且解决了多用户间信息互发问题----依靠服务器的转发功能。通过本文的阐述,希望能对那些需要编写多用户网络通信程序的读者以启发。

一、技术概述
1.1 基于TCP/IP的通信技术

基于TCP/IP的通信基本上都是利用SOCKET套接字进行数据通讯,程序一般分为服务器端和用户端两部分。下面简要地讲一下设计思路(VC6.0下):

第一部分 服务器端
  一、创建服务器套接字(create)。
  二、服务器套接字进行信息绑定(bind),并开始监听连接(listen)。
  三、接受来自用户端的连接请求(accept)。
  四、开始数据传输(send/receive)。
  五、关闭套接字(closesocket)。

第二部分 用户端
  一、创建用户套接字(create)。
  二、与远程服务器进行连接(connect),如被接受则创建接收进程。
  三、开始数据传输(send/receive)。
  四、关闭套接字(closesocket)。

通过以上设计思路,我们可以创建一个简单的面向连接的单用户程序。下面,将介绍多线程技术,以使程序支持多用户。

1.2 多线程技术

我们可以把线程看成是一个进程(执行程序)中的一个执行点,每个进程在任何给定时刻可能有若干个线程在运行。一个进程中的所有线程共享该进程中同样的地址空间,同样的数据和代码,以及同样的资源。进程中每个线程都有自己独立的栈空间,和其它线程分离,并且不可互相访问。每个线程在本进程所占的CPU时间内,要么以时间片轮换方式,要么以优先级方式运行。如果以时间片轮换方式运行,则每个线程获得同样的时间量;如果以优先级方式运行,则优先级高的线程将得到较多的时间量,而优先级低的线程只能得到较少的时间量。方式的选择主要取决于系统时间调度器的机制以及程序的实时性要求。

现在,运用多线程技术就可以实现对多用户的支持。即在服务器端,使接收来自用户端的连接请求(accept)这步无限循环,每接收一个用户请求,产生两个线程(send和receive线程),用来管理服务器与该用户的通信任务。下面,运用共享数据结构技术,就可以实现本问所要解决的关键技术---服务器转发技术。

1.3 共享数据结构技术

同一进程中的多个线程共存于单一的线性地址空间,因此,在多线程间共享数据结构是非常容易且方便的。但必须注意的是,对数据结构的访问必须是多线程互斥的,否则数据任意更改将导致不可预料的结果。本文所阐述的服务器转发技术也就是通过共享数据结构实现线程间的互相通信。

二、实现方案

整体方案的构思图如下:

通过上图,我们可以看到整个系统分为三个相关的程序,即注册/登陆服务器、通信服务器以及用户程序。其中,注册/登陆服务器负责用户的注册、登陆以及数据库管理;通信服务器负责完成数据转发以及共享数据结构的管理;用户端则完成注册、登陆和通信功能。为什么要把服务器分为两部分呢?主要是考虑到服务器的用户容量问题,以及对通信服务器的保护,只有在通过验证后,用户在能与通信服务器连接。

由此可见,整个系统通信任务的实现还是很复杂的。用户端首先必须注册自己,等待注册成功;然后根据自己的注册信息进行服务器登陆,登陆成功后才能与通信服务器连接,进行用户间通信。

注册/登陆服务器接收到用户端的信息后,首先判断是注册信息还是登陆信息。如果是注册信息,则将该数据按预定的格式写入数据库,然后返回注册成功的消息,期间有任何异常产生,服务器都会返回注册失败消息,提示用户重新注册;如果是登陆信息,则从数据中提取用户名和ID与数据库中的内容进行比较,如果该用户存在,则返回登陆成功消息,反之,返回登陆失败消息。

通信服务器所完成的主要功能是数据转发,这是通过与图中的共享数据结构进行交互完成的。服务器接收到用户端发来的消息后,提取消息的一部分与共享数据结构存储的内容进行比较,确定所要转发的对象,最后通过多线程及其通信机制完成数据转发。 下面,我们将分三部分来讨论系统的具体实现过程。



三、具体实施
3.1 注册/登陆服务器

注册/登陆服务器程序是基于对话框的,该程序使用I/O端口56789与用户端连接。
首先,在对话框初始化的同时完成网络初始化,即执行Init_net()函数,代码(不完整)如下:

BOOL CServerDlg::Init_net()
{////////////////////////网络初始化///////////////////////////////
addrLen=sizeof(SOCKADDR_IN);
status=WSAStartup(MAKEWORD(1, 1), &Data);
………
memset(&serverSockAddr, 0, sizeof(serverSockAddr));

/*以下指定一个与某个SOCKET连接本地或远程地址*/

serverSockAddr.sin_port=htons(PORT);
serverSockAddr.sin_family=AF_INET;
serverSockAddr.sin_addr.s_addr=htonl(INADDR_ANY);
serverSocket=socket(AF_INET, SOCK_STREAM, 0);//初始化SOCKET
………

status=bind(serverSocket,(LPSOCKADDR)&serverSockAddr,sizeof(serverSockAddr)); //将SOCKET与地址绑定
………
status=listen(serverSocket, 5); //开始监听
………
return true;
}
接着按下RUN键开始服务器功能,执行Reg_Load()函数,使服务器始终处于等待连接状态,但这样也使该线程始终阻塞。当有用户连接时,该函数创建一个任务用于处理与用户及数据库的事务。具体任务函数略(详见原始代码文件)。 void CServerDlg::Reg_Load()
{
while(1)
{
CWinThread* hHandle;
clientSocket=accept(serverSocket,(LPSOCKADDR)&clientSockAddr,&addrLen); //等待连接,阻塞
hHandle=AfxBeginThread(talkToClient,(LPVOID)clientSocket);//有连接时,创建任务
………
}
}
任务函数在接收到消息时,要对数据库进行操作,由于数据库较简单,采用ODBC连接ACCESS数据库(将netuser.mdb在ODBC数据管理器中安装成同名数据源)具体代码略。
3.2 通信服务器

通信服务器是本程序实现的关键,它运用共享数据结构技术及多线程技术,通过I/O端口56790与用户端连接,实现了数据转发功能。首先,程序初始化网络Init_net(),接着当用户连接到服务器时,创建接收线程和发送线程,这样就可以实现数据转发。最后,当用户断开连接时,服务器关闭与他的连接,并结束相应的线程。

下面我们来看一下本程序中的共享数据结构的具体内容与使用方法以及多线程的相关内容与实现。

● 共享数据结构

本程序的共享数据结构一共有两个,即socket_info和send_info。前者包含了所有登陆用户的一些基本资料,后者则包含了当前服务器接收到的用户端所发送的信息资料。详细内容及注释如下:

struct socket_info
{
SOCKET s_client; //用户的SOCKET值
u_long client_addr; //用户网络地址
CString pet; //用户昵称
CWinThread* thread; //为该用户创建的发送线程对象的指针
};

struct send_info
{
CString data; //用户端发送的数据内容(经过编辑)
CWinThread* thread; //需要发送数据的任务指针
};
在程序中,定义两个全局变量,用来在线程间共享: send_info info_data; CList<socket_info,socket_info&>s_info;
每当有用户连接到服务器,服务器就将用户端的一些信息以socket_info结构体的形式存入s_info列表中;而当服务器接收到用户端发送过来的数据时,就将数据格式化后存入结构体info_data,通过与结构体列表比较,确定需要恢复的发送线程(所有发送线程在创建时都被挂起)。这样,服务器就准确地转了发数据。

●多线程
每当服务器上有用户连接成功,服务器都会为其创建两个线程:接收线程(RecvData)和发送线程(SendData),并且接收线程在创建后处于可执行状态,而发送线程则阻塞,等待服务器将其唤醒。这两个线程都执行一个无限循环的过程,只有当通信出现异常或用户端关闭连接时,线程才被自身所结束,并且,这两个线程一定是同时生成,同时结束的。很显然,每个连接产生两个线程,使得数据转发变的简单,但同时又使得服务器的任务加重。因此,用户端的连接数量有所限制,视服务器软、硬件能力而定。

同时,由于多线程对结构体info_data都需要操作,所以线程间必须同步。这儿,我定义了互斥量CMutex m_mutex,用它的方法Lock()和Unlock()来完成同步。

我们首先来看一下接收线程(RecvData):(不完整代码)

UINT RecvData(void* cs)
{
SOCKET clientSocket=(SOCKET)cs;
while(1)
{
numrcv=recv(clientSocket, buffer, MAXBUFLEN, NO_FLAGS_SET);
buffer[numrcv]=''\0'';
if(strcmp(buffer,"Close!")!=0) //不是接收的“Close”数据
{
…………
for(i=0;i<count;i++)
{
if(po!=NULL)
{
s1=s_info.GetNext(po);
if(s1.pet.Compare(petname)==0) //比较昵称是否一样
{
m_mutex.Lock(); //互锁
info_data
gold_jin 2002-07-30
  • 打赏
  • 举报
回复
我没搞过DXSHOW采集的信号,但我想原理是一样的,把你的数据通过SOCKET传到远程,在远程自己写个播放器,播放就可以了,至于怎么写流的播放器,就看你的信号是什么类型了,MPEG1的话,用微软的MEMFILE的例子改改就可以了
xuying 2002-07-30
  • 打赏
  • 举报
回复
采集帧->选一种编码方式(mpeg4,divx, h263,......)编码->打包成udp->发送。

接收udp包->解码->绘制播放。

如果你的带宽足够,连接的客户不多,问题不大。但如果带宽和客户较多,需要考虑性能和传输问题。这会是瓶颈。传输视频udp报文一般采用rtp和rtcp协议,如果考虑到较多用户,可以采用组播方式。
00000000000 2002-07-30
  • 打赏
  • 举报
回复
怎么没有人回答啊,我只想把他弄明白,请高手指点一二。
软件简介   飞鸽传书(IP Messenger),是由日本人Shirouzu Hiroaki (白水 启章)所发明的免费软件, 是一款局域网内即时通信软件,基于 TCP/IP(UDP)。可运行于多种操作平台(Win/Mac/UNIX/Java),并实现跨平台信息交流。不需要服务器支持, 支持文件/文件夹的传送 (2.00版以上),通讯数据采用 RSA/Blofish 加密 (2.00版以上),十分小巧,简单易用,而且你可以完全免费使用它。目前已有的版本包括: Win32, Win16, MacOS, MacOSX, X11, GTK, GNOME,Java 等, 并且公开源代码. 系统要求   Microsoft Windows 95/98/Me/NT4.0/2000/XP/2003   95/98/NT4.0 ... 要求 comctl32.dll(公共控件) 的版本为 5.x 或更高.   (如果你安装的 IE 是 5.x 或更高版本, 那么就不必担心这个问题了)   注意: Windows 3.1(和 NT3.5x), 请使用 IP Messenger for Win16. 使用说明   < 安装/卸载 >   执行 setup.exe 你可以将 IPMsg 安装到指定目录, 或者重新注册到启动组.   如果需要删除 IPMsg, 请先从控制面板中卸载, 再手动删除 IPMsg 目录.   < 系统托盘区图标 >   左键双击图标, 即可打开发送消息窗口.   右键点击图标, 可进入 [服务设置], [离开] 等.   < 发送消息窗口 >   - 发送消息时, 若勾选了 [封装], 则接收者要先打开信封才能看到消息,   如果你还勾选了 [上锁], 则接收者在打开信封时还需要输入密码.   (密码是由接收者自己在 [服务设置] 中设置的)   - 若要发送文件/文件夹, 可直接将文件/文件夹拖入发送消息窗口   或在发送消息窗口上点击右键, 再选择发送文件或发送文件夹   - 传送文件/文件夹时, 当接收者还没有保存(下载)文件/文件夹时,   若发送者关闭或重启了 IPMsg, 则附带的文件信息将被清除,   接收者将不能继续接收(下载)到此文件.   - 用户列表前缀符号说明   ":" 表示用户处于离开模式.   "|" 表示用户使用的不是 2.0 以上版本的 IPMsg,   将不支持文件/文件夹的传送, 并且不支持通信数据加密.   "|"(短线) 表示只支持文件/文件夹的传送.   - 拖动列表表头标题项可改变其顺序, 并可点击右键选择"保存列表顺序"   - 在消息输入窗口中, 可使用 Ctrl+Tab 输入制表符 Tab.   - 在发送消息窗口上点击右键, 可以进入设置显示优先级, 选择工作组,   搜索用户(Ctrl+F), 传送文件, 传送文件夹, 保存列表顺序, 字体设置,   窗口大小设置, 固定窗口位置, 列表显示设置.   - 在用户名上点击右键, 可设置其显示优先级   优先级按由小到大的顺序排序   - 通过设置显示优先级, 可将经常联系的用户至于列表顶端,   或者隐藏不需要联系的用户   < 接收消息窗口 >   - 在接收消息窗口上点击右键, 可以进入字体设置,   窗口大小设置, 固定窗口位置.   - 接收消息窗口标题栏中的 "+" 或 "-" 表示通信数据使用了加密算法   "+" 表示 RSA/1024 位, blowfish/128 位加密   "-" 表示 RSA/512 位, RC2/40 位加密   - 如果你收到的消息附带了文件, 将会显示出附件按钮.   点击按钮即可保存文件.   < 其他 >   - 如果需要(通过路由器)连接到广域网, 则需要设置广播地址.   详见广域网设置(广播设置)   - 其它功能都很容易理解, 你试一试就明白了 操作技巧   1、隐藏/显示窗口Ctrl+D   2、按住Ctrl键再点[刷新]可保持现有用户,搜索新上线的用户   3、打开发送/接收消息窗口Ctrl+Alt+S/R(需要进行详细设置)   4、打开搜索窗口Ctrl+F   5、接收到多个文件,保存时可勾选[全部] 软件原理   局域网聊天软件飞鸽传书是目前比较流行的局域网即时通讯软件,由于历史悠久,它具有比较多的用户。 因为 FreeEIM 的实现原理和飞鸽传书差不多,希望广大用户了解其原理后,在使用时更加得心应手。   开发多年的飞鸽,在他的基础上增加了些许功能,例如语音对话,这里继续讨论FreeEIM(飞鸽传书),前几天,详细的了解了FreeEIM(飞鸽传书)的网络协议,详细分析并且实现了FreeEIM(飞鸽传书)的消息传递过程,这里就FreeEIM(飞鸽传书)中的文件和文件夹的传输做详细的说明。   在FreeEIM(飞鸽传书)中,如果要进行文件或者文件夹的传输,首先需要做的就是消息的应答,通过UDP发送文件传输报文,另外的FreeEIM(飞鸽传书)客户端收到报文后,使用TCP协议发送应答报文,这样就开始进行文件的传输了。   这里开启两个线程,线程1负责文件的传送,线程2负责文件的接受,下边做一一说明。   首先,我们知道,可以发送多个文件,这些文件需要建立链表保存信息。   typedef struct file_info   {   struct file_info *next; //双向链表   struct file_info *forward;   char *file; //文件名   int type; //文件类型:文件或者文件夹   int size; //文件大小   struct sockaddr_in addr; //目标网络信息   } FILE_INFO;   [1]文件传送链表由专门的线程维护,这样,线程1就可以专心进行处理文件传输队列就可以了,线程1始终查询这个链表,如果表头为NULL,就说明没有要传输的文件,表头非空,就开始发送报文,获得正确的应答后,就可以开始文件的传输了,文件传输结束,将相应的链表节点删除。这里借鉴了很多程序中使用非常广泛的“命名池”相关的概念,只不过这里我们使用的是“文件池”,可以这么认为,如果有文件要传输,可以不用考虑是否有文件正在传输,只要把要传输的文件放入 “文件池”就可以了 , 同时,不用考虑“文件池”的大小,线程1是文件池的服务线程,它检测文件池的大小,如果非空,就会逐次传输文件。   这里需要特别注意的就是关于文件夹的传输,这个FreeEIM(飞鸽传书)一个难点,应为对与文件夹的内容是没有显示的,需要我们逐次的判断,在飞鸽传书中是这么处理的,如果是一个文件夹,就发送文件属性为IPMSG_FILE_DIR的信息包,FreeEIM(飞鸽传书)客户端收到这个信息包后,就创建这个文件夹,然后发起发送的FreeEIM(飞鸽传书)客户端,进入文件夹,传送文件夹内的文件,如果该文件夹下,还有文件夹,使用相同的方法,在文件夹内的文件传送结束后,就发送FREEEIM_FILE_RETPARENT信息包,接受的FREEEI_FILE_RETP报文的FreeEIM(飞鸽传书)客户端,执行返回上一级目录,FreeEIM(飞鸽传书)发送端,就需发送目录下的文件。这样循环操作,最终完成文件的传输,这个过程比较难以理解。   有了上边的知识,开发文件传输功能就变得简单多了,文件的接受也可以类推了,同样开启一个线程维护接受文件链表,逐次接受身下的文件,链表为空时。文件传输会遇到文件读写问题,有的文件发送是被打开了,这样会造成访问违规,所以要有相应的处理,才能让程序更加稳健。   程序启动时先读取用户配置文件,一般是"*.ini"格式,然后,使用Winsock的广播消息给整个局域网发送一个数据包,这时候,如果其他电脑已经运行了飞鸽传书,那么他收到这个包后,会将包的信息读取出来,当然,这个包里有用户的IP,用户名,性别等等。这样,在用户列表里就多了一个用户了。他的用户检查方式就如此简单而已。至于跨网段的实现,只需简单地修改一下广播地址就行了,如果不考虑速度,你可以给整个internet发广播消息。 消息发送,文件传输这些功能,都比较简单,如果你会网络编程,给你对方IP地址,这些功能实现起来再简单不过了。语音、视屏等,只需编写一些语音视频采集代码,传书的话,就像传文件一样。这里给段广播消息的实现代码吧:   // 发送广播登陆消息   void EM_UserLogin::SendLogin_BC(LPEM_DATA msg)   {   SOCKET m_socket;   m_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);   if (INVALID_SOCKET == m_socket)   {   MessageBox(0, "socket failed.", NULL, MB_OK);   }   SOCKADDR_IN sin;sin.sin_addr.s_addr = htonl(INADDR_BROADCAST);   sin.sin_family = AF_INET;   sin.sin_port = htons(BROADCAST_SEND_PORT);BOOL bOpt = TRUE;   if (SOCKET_ERROR == setsockopt(m_socket, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt)))   {   // Error occurred   ::MessageBox(0,"BC setsockopt error.",0,0);   return;   }   char *tmpBuf = msg->GetBuffer();   if (SOCKET_ERROR == sendto(m_socket, tmpBuf, msg->GetLength(), 0, (PSOCKADDR)&sin, sizeof(sin)))   {   // Error occurred   ::MessageBox(0,"BC sendto error.",0,0);   return;   }closesocket(m_socket);    相关信息   - 所有的设置信息都保存在注册表的以下位置:   \\HKEY_CURRENT_USER\Software\HSTools\   用户密码以不可逆加密方式存储.   *******************************************************************   * 如果你忘记了密码, 可以在注册表中将此键值删除 *   * \\HKEY_CURRENT_USER\Software\HSTools\IPMsgEng\PasswordStr *   *******************************************************************   - 本软件使用的默认端口为 2425   若仅使用 UDP 协议的端口, 将不能传送文件/文件夹   (如果安装了防火墙, 则必须打开相应的 TCPUDP 端口)   - 本软件为自由软件, 你可以随意传播, 但源码使用请参见许可协议.   - 只有在启动或退出程序, 使用离开模式, 刷新在线用户时 IPMsg 才会进行消息广播.   - 本软件由 Microsoft Visual C++ 6.0 编译 广域网设置(广播设置)   - 主机号全部为 1 的 IP 地址, 即广播地址   例如, 连接到一个 C 类子网(即 24 位网络号, 8 位主机号), IP 地址为   aaa.bbb.ccc.ddd, 其广播地址即为: aaa.bbb.ccc.255   若对方处于另一个私有子网中, 广播可能无效.   - 更多问题, 请参阅相关资料或咨询你的网络管理员.   - 若两台主机的连接经过了多个路由器, 请直接指定对方IP地址   - 拨号上网用户请勾选 [拨号连接]   当刷新在线用户列表时, 列表不会被清空 补充   - 启动飞鸽传书前, 你可以指定其运行时使用的端口,   且可以使用不同的端口打开多个窗口. 用法如下:   ipmsg.exe 2426 (你可在快捷方式上设置)   但是你只能与同时也使用该端口的用户通信.   - 所以你尽可选用你喜欢的端口运行本软件.   介于 10000 至 60000 可能更安全些.   你也可以咨询你的网络管理员.   - 如果有多个网卡(IP), 你可以将飞鸽传书与指定的网卡(IP)进行绑定.   命令格式如下(你可以在快捷方式上设置):   ipmsg.exe [端口] /NIC IP地址   例如:   C:\>ipmsg.exe /NIC 192.168.10.100   - 支持命令方式发送消息   命令格式如下:   ipmsg.exe [端口] /MSG [/LOG][/SEAL] <主机名或IP地址> <消息>   例如:   C:\>ipmsg.exe /MSG /SEAL localhost Hello.    支持   - IPMsg 的技术讨论区是开放的.   如果你想订阅相关邮件, 请联系 ipmsg-subscribe@ring.gr.jp   - 欢迎报告 bug, 以及提出建议   - 如果你有任何疑问, 请 E-mail 联系.   shirouzu@h.email.ne.jp   中文版可联系阿志: hiwyz@163.net   - 发送错误报告, 请勿必记录以下信息:   软件版本, 操作系统, 故障描述, 以及故障重现方法等. 更新历史   ver 1.00 ... 日文版 (1996/08/19)   ver 1.31 ... 英文版/日文版 (1997/09/01)   ver 2.00 ... 英文版/日文版 (2002/11/19)   支持文件/文件夹传送   支持通信数据加密   ver 2.03 ... Bug 修正 (文件传送引起缓冲溢出)   广播设置支持主机地址(FQDN)解析   ver 2.04 ... 增加绑定网卡(IP)功能   ver 2.05 ... Bug 修正 (2.04版当激活发送/接收消息窗口时,无法注销/关闭系统)   ver 2.06 ... 很小的调整   ver 2007 ... 全面调整软件的界面可用性、性能稳定性 注意:本版本为 IPMSG 2.06版 编译环境: WINXP & VS2005, 可正确编译。
介绍:本书是“DirectShow专业著作”丛书的第二本,侧重介绍了DirectShow技术在当前主要的几个领域中的应用,包括音视频采集、视频聊天、视频点播、视频叠加、媒体播放等。在介绍各种应用的同时,辅助以大量详尽的实例源代码。这些实例,不仅具有很强的实用价值和指导意义,更让读者理论联系实践,使学习DirectShow技术变得轻松自如。本书的配套光盘提供了DirectShow SDK 9.0的安装程序及书中各章节涉及的所有实例源代码。 本书结构合理,内容丰富新颖、条理清晰,适合广大的流媒体应用开发人员、系统设计人员、以及对Windows平台上多媒体处理感兴趣的编程爱好者学习和参考。 目录: 第1章 DirectShow系统 1 1.1 系统概述 1 1.2 使用GraphEdit 3 1.3 最后的话 6 第2章 音视频采集 9 2.1 功能介绍 9 2.2 通用采集 13 2.2.1 采集设备枚举 13 2.2.2 采集设备创建 25 2.2.3 开始视频预览 29 2.2.4 使用高效的VMR 45 2.2.5 选择输入端子 55 2.2.6 采集参数设置 64 2.2.7 支持数码摄像机 76 2.2.8 支持热插拔 82 2.2.9 支持即时抓图 93 2.2.10 采集到AVI文件 114 2.2.11 视频的压缩方案 118 2.3 电视接收 121 2.3.1 预备工作 121 2.3.2 电视选台 124 2.3.3 支持VBI 125 2.4 程序导读 130 2.4.1 一种不错的设计模式 130 2.4.2 程序结构 137 2.4.3 流程概要 141 第3章 网络应用 144 3.1 网络编程基础 144 3.1.1 TCP传输 145 3.1.2 UDP传输 166 3.1.3 IP组播技术 176 3.2 视频聊天 185 3.2.1 功能介绍 185 3.2.2 实现原理 187 3.2.3 采集设备自检 190 3.2.4 角色控制实现 204 3.2.5 开发网络发送Filter 223 3.2.6 开发网络接收Filter 230 3.2.7 程序导读 240 3.3 视频点播 244 3.3.1 功能介绍 244 3.3.2 实现原理 247 3.3.3 开发网络接收Filter 250 3.3.4 支持MPEG1、MP3 261 3.3.5 支持MPEG2 268 3.3.6 支持AVI 270 3.3.7 程序导读 275 第4章 视频叠加 311 4.1 视频抠像 311 4.1.1 抠像原理 311 4.1.2 抠像算法实现 312 4.1.3 MMX算法优化 318 4.1.4 开发抠像Filter 321 4.1.5 模拟实时源 339 4.1.6 应用演示 348 4.2 字符叠加 350 4.2.1 开发字符叠加Filter 350 4.2.2 与媒体播放集成 353 第5章 SDK源码赏析 361 5.1 DSNetwork例子 361 5.1.1 程序结构分析 361 5.1.2 模拟MPEG2-TS源 372 5.1.3 应用演示 380 5.2 VMR-9典型应用 385 5.2.1 位图叠加例子BitmapMix 385 5.2.2 字符叠加例子Ticker 396 5.2.3 流混合例子Blender 405 附录A DirectShow常见问题解答 411 A.1 一般性问题 411 A.2 编程问题 413 附录B PID扩展插件开发 420 B.1 PID应用原理 420 B.2 PID插件开发 421 B.3 PID插件的使用 429 附录C DES扩展Source(实现字符叠加) 432 C.1 自动化基础 433 C.2 字符叠加基础 433 C.3 Source Filter的开发 436 C.4 Source Filter的调试 448 C.5 DES应用举例 449 附录D 让Windows Media Player播放自定义格式文件 452 D.1 播放媒体文件的Filter Graph构建过程 452 D.2 两种解决方案 454 D.3 自定义格式文件的生成 455 D.4 Source Filter的开发 457 D.5 体验QQ文件的播放 471
共3卷,卷2. 第1章 视频监控技术概述 1 1.1 引子 2 1.1.1 安全防范的雏形 2 1.1.2 网络视频监控 2 1.1.3 智能视频识别 2 1.1.4 智能网络视频监控 3 1.2 视频监控技术发展过程 3 1.2.1 模拟视频监控时代 4 1.2.2 数字视频监控时代 6 1.2.3 智能网络视频监控时代 7 1.3 视频监控的核心技术 8 1.3.1 光学成像器件 8 1.3.2 视频编码压缩算法 8 1.3.3 视频编码压缩芯片 9 1.3.4 视频管理平台 9 1.4 视频监控的发展方向 10 第2章 模拟视频监控系统 13 2.1 模拟监控系统的构成 14 2.2 视频采集设备 14 2.2.1 摄像机相关技术 15 .2.2.2 镜头相关介绍 19 2.2.3 防护罩 23 2.2.4 云台及解码器 23 2.2.5 一体球型摄像机 24 2.3 信号传输设备 27 2.3.1 视频信号的传输 27 2.3.2 视频分配器 28 2.3.3 控制信号的传输 28 2.3.4 系统供电 29 2.4 矩阵控制设备 29 2.4.1 矩阵工作原理 29 2.4.2 矩阵的主要功能 30 2.4.3 ptz控制原理 31 2.4.4 控制键盘介绍 31 2.5 显示与录像设备 31 2.5.1 多画面处理器 31 2.5.2 图像显示设备 33 2.5.3 长延时录像机 34 2.6 闭路电视监控系统设计 34 2.6.1 系统需求分析 34 2.6.2 摄像机的选型 36 2.6.3 镜头的选型 37 2.6.4 矩阵的选型 37 2.7 典型厂家设备介绍 37 2.7.1 泰科discover系列半球 37 2.7.2 泰科speeddome快球 38 2.7.3 泰科megapower 48矩阵 40 2.8 本章小结 41 第3章 视频编码压缩技术 43 3.1 多媒体技术基础 44 3.1.1 图像的色彩模型 44 3.1.2 图像的色彩空间变换 46 3.1.3 图像的基本属性 47 3.1.4 图像的格式与质量 48 3.1.5 数据压缩方法 49 3.2 静态图像压缩技术 53 3.2.1 色相变换过程 54 3.2.2 区块切割与采样 55 3.2.3 离散余弦(dct)变换 57 3.2.4 量化过程介绍 58 3.2.5 z字形编码过程 59 3.2.6 dc系数及ac系数编码 59 3.2.7 熵编码介绍 61 3.2.8 jpeg数据流介绍 61 3.2.9 jpeg解压缩过程 61 3.3 视频(动态图像)编码压缩 62 3.3.1 视频压缩的必要性 62 3.3.2 视频压缩的可行性 62 3.3.3 图像格式说明 63 3.3.4 逐行扫描与隔行扫描 66 3.3.5 帧率、码流与分辨率 67 3.3.6 视频编码模型 68 3.3.7 运动补偿技术介绍 69 3.4 主流视频编码技术 70 3.4.1 mjpeg编码压缩 70 3.4.2 mpeg-1技术介绍 71 3.4.3 mpeg-2技术简介 75 3.4.4 mpeg-4技术介绍 76 3.4.5 h.264技术说明 80 3.4.6 视频编解码技术应用 82 3.5 本章小结 84 第4章 硬盘录像机(dvr)技术 87 4.1 dvr产品介绍 88 4.1.1 dvr发展历史 88 4.1.2 dvr工作原理 89 4.1.3 软压缩与硬压缩 89 4.1.4 dvr芯片介绍 91 4.1.5 dvr的录像文件管理 92 4.1.6 dvr配置及接口 93 4.1.7 dvr的关键技术 96 4.1.8 dvr术语介绍 96 4.2 dvr软硬件构成 97 4.2.1 嵌入式dvr 97 4.2.2 pc式dvr 100 4.2.3 嵌入式对比pc式dvr 101 4.3 dvr软件功能 102 4.3.1 设备配置及管理 103 4.3.2 录像管理 103 4.3.3 报警管理 104 4.3.4 视频存储与备份 105 4.3.5 视频浏览与回放 105 4.3.6 设备网管维护 106 4.3.7 用户的管理 106 4.3.8 用户操作日志审计 107 4.4 dvr的应用架构 107 4.4.1 单机工作模式 107 4.4.2 模数混合架构 108 4.4.3 多机联网模式 109 4.5 dvr的亮点功能 111 4.5.1 dvr的多码流技术 111 4.5.2 视频分析技术应用 113 4.5.3 混合dvr技术 113 4.5.4 智能检索与回放 115 4.5.5 场景重组技术 116 4.5.6 视频加密技术 116 4.6 dvr产品选型 117 4.7 dvr的常见故障 119 4.7.1 pc式dvr的常见故障 119 4.7.2 嵌入式dvr的常见故障 119 4.8 dvr应用案例 120 4.8.1 dvr带宽设计 120 4.8.2 dvr存储设计 121 4.9 dvr设置与操作 122 4.9.1 dvr的系统设置 122 4.9.2 dvr的应用操作 122 4.10 dvr产品介绍 123 4.10.1 海康ds-9000介绍 123 4.10.2 朗驰欣创lc7300介绍 126 4.11 本章小结 129 第5章 视频编码器技术 131 5.1 dvs产品介绍 132 5.1.1 dvs发展历程 132 5.1.2 dvs对比dvr 132 5.1.3 dvs的工作原理 134 5.2 dvs产品软硬件构成 135 5.2.1 dvs硬件构成 135 5.2.2 dvs软件构成 136 5.3 dvs系统应用架构 139 5.3.1 矩阵+dvs混合架构 139 5.3.2 dvs+nvr架构 140 5.4 dvs的亮点功能 141 5.4.1 dvs的anr技术 141 5.4.2 dvs冗余技术 142 5.4.3 dvs的多码流技术 143 5.4.4 dvs的poe技术 145 5.4.5 dvs的音频功能 145 5.4.6 dvs组播应用 146 5.4.7 带视频分析功能的dvs 147 5.5 dvs产品选型 147 5.5.1 dvs的主要参数 147 5.5.2 dvs产品的架构 148 5.5.3 编码压缩方式 148 5.5.4 视频分析功能 148 5.5.5 各类接口资源 149 5.5.6 标准化与开放性 150 5.5.7 设备的稳定性 150 5.6 dvs的集成整合 150 5.6.1 dvs的sdk集成 150 5.6.2 dvs的sdk功能 151 5.7 dvs设置与应用 152 5.7.1 dvs工作流程 152 5.7.2 dvs码流分析 153 5.7.3 dvs主要参数说明 153 5.7.4 dvs配置过程 154 5.8 dvs产品介绍 155 5.8.1 nice编码器nve1008 155 5.8.2 朗驰欣创lc8304编码器 157 5.8.3 海康ds-6100编码器 160 5.9 本章小结 162 第6章 网络录像机(nvr)技术 163 6.1 nvr产品介绍 164 6.1.1 nvr的功能角色 164 6.1.2 nvr的功能模块 166 6.1.3 nvr对比dvr 166 6.1.4 pc式与嵌入式nvr 168 6.2 nvr的技术指标 170 6.2.1 nvr的平台需求 170 6.2.2 nvr的瓶颈分析 171 6.2.3 nvr的软件功能 173 6.3 nvr产品亮点功能 178 6.3.1 视频中间件技术应用 178 6.3.2 anr技术 179 6.3.3 nvr冗余技术 180 6.3.4 视频标签功能 181 6.3.5 带视频分析功能的nvr 181 6.4 nvr产品选型要点 181 6.4.1 nvr典型参数 181 6.4.2 nvr产品选型 182 6.5 nvr应用案例分析 183 6.5.1 需求分析 183 6.5.2 网络带宽设计 185 6.5.3 nvr存储设计 186 6.6 nvr产品介绍 187 6.6.1 东方网力nvr2000介绍 187 6.6.2 科达nvr2860介绍 191 6.7 本章小结 195 第7章 网络摄像机(ipc)技术 197 7.1 ipc产品介绍 198 7.1.1 ipc的定义 198 7.1.2 ipc的主要功能 199 7.1.3 ipc的分类 199 7.1.4 ipc的优势 200 7.1.5 ipc的常用术语介绍 203 7.2 ipc的组成及工作原理 204 7.2.1 ipc的硬件构成 204 7.2.2 ipc的软件构成 206 7.2.3 ipc的工作原理 208 7.3 ipc数据的网络传输 208 7.3.1 网络传输协议介绍 208 7.3.2 视音频流的传输 210 7.3.3 控制信号的传输 211 7.4 ipc的核心技术 211 7.4.1 光学成像技术 211 7.4.2 视频编码算法 211 7.4.3 编码压缩芯片 212 7.4.4 视频分析技术 212 7.5 ipc的亮点功能 214 7.5.1 ipc的3g功能 214 7.5.2 poe技术 215 7.5.3 本地缓存功能 215 7.5.4 ddns支持 216 7.5.5 ipc的安全通信 216 7.5.6 报警改变帧率技术 218 7.5.7 ipc的多码流技术 218 7.5.8 视频质量控制qos 219 7.5.9 视频移动探测 220 7.6 ipc的选型要点 220 7.6.1 ipc的主要参数 220 7.6.2 图像质量 221 7.6.3 网络适应性 221 7.6.4 编码压缩算法 221 7.6.5 系统安装与升级 222 7.6.6 产品许可授权方式 222 7.6.7 二次开发与集成 222 7.6.8 厂商产品线考察 223 7.7 ipc的应用设计 223 7.7.1 需求分析 223 7.7.2 系统架构 225 7.7.3 带宽与存储设计 225 7.7.4 系统的主要功能 226 7.8 ipc产品介绍 227 7.8.1 axis公司p33系列ipc 227 7.8.2 海康ds-2cd862mf介绍 229 7.9 本章小结 231 第8章 高清视频监控技术 233 8.1 模拟监控时代的高清 234 8.1.1 电视制式及分辨率 234 8.1.2 高清模拟摄像机 235 8.1.3 高清信号传输 235 8.1.4 高清显示设备 235 8.2 数字时代的高清技术 236 8.2.1 高清电视(hdtv)标准 236 8.2.2 高清ip摄像机 237 8.3 高清摄像机的优势 237 8.3.1 覆盖范围 238 8.3.2 图像细部特征 239 8.3.3 数字云台功能 239 8.3.4 视频校正与处理 240 8.3.5 360°全景摄像机 241 8.4 高清摄像机的关键技术 241 8.4.1 高清配套镜头 242 8.4.2 图像传感器 242 8.4.3 图像灵敏度问题 242 8.4.4 编码压缩算法 242 8.4.5 高清信号传输 243 8.4.6 视频管理平台支持 243 8.4.7 高清信号显示 243 8.5 高清监控的障碍 243 8.5.1 高带宽占用 244 8.5.2 海量存储问题 244 8.5.3 高成本问题 244 8.6 高清摄像机的应用 245 8.6.1 需求分析 245 8.6.2 像素数量计算 245 8.6.3 摄像机选型 246 8.6.4 系统架构说明 247 8.6.5 视频传输与存储 247 8.7 百万高清的产品介绍 247 8.7.1 mobotix智能高清摄像机 247 8.7.2 axis高清摄像机q1755 251 8.8 本章小结 252 第9章 视频内容分析(vca)技术 253 9.1 视频分析技术说明 254 9.1.1 视频内容分析技术背景 254 9.1.2 视频分析实现的功能 255 9.1.3 视频数据结构介绍 257 9.2 vmd技术介绍 259 9.2.1 vmd技术原理介绍 259 9.2.2 vmd技术的缺陷 259 9.3 vca技术介绍 260 9.3.1 vca技术的原理 260 9.3.2 vca技术的突破 260 9.3.3 vca的关键技术 262 9.4 视频分析工作机制 263 9.4.1 视频分析软件框架 263 9.4.2 视频分析的工作流 263 9.4.3 视频分析算法模块 264 9.4.4 视频分析过程 267 9.5 视频分析技术难点 269 9.5.1 环境因素 269 9.5.2 视频场景相关因素 270 9.5.3 平台及芯片的限制 270 9.5.4 成像因素 271 9.6 视频分析系统架构 272 9.6.1 前端独立单元 272 9.6.2 后端服务器方式 273 9.6.3 智能dvs或ipc 274 9.6.4 前后端混合架构 275 9.6.5 目前的架构情况 275 9.7 视频分析的主要应用 276 9.7.1 安全类应用 276 9.7.2 非安全类应用 279 9.7.3 摄像机状态检测 281 9.7.4 特色功能介绍 282 9.8 视频分析软件及设置 283 9.8.1 视频分析设置程序 283 9.8.2 vca设置过程举例 284 9.9 视频分析技术实施 286 9.9.1 视频分析实施流程 287 9.9.2 摄像机部署要点 287 9.9.3 vca效果评定 287 9.10 视频分析产品选型 288 9.10.1 算法实现方式 288 9.10.2 系统架构 289 9.10.3 集成性与易用性 289 9.11 智能编码器设计 290 9.11.1 视频分析过程 290 9.11.2 智能编码器设计 290 9.12 视频分析产品介绍 291 9.12.1 nice视频分析技术介绍 291 9.12.2 中星电子视频分析技术 292 9.13 本章小结 295 第10章 网络视频传输与交换 297 10.1 网络视频监控系统的特点 298 10.1.1 网络视频监控系统的结构 298 10.1.2 mpeg-4技术说明 298 10.1.3 系统中的视频传输 299 10.2 网络传输协议介绍 300 10.2.1 osi模型介绍 300 10.2.2 传输层介绍 303 10.2.3 tcpudp协议 304 10.2.4 rtp与rtcp协议 307 10.2.5 rtsp与rtvp简介 309 10.2.6 网管协议snmp 310 10.3 视频监控系统的数据传输 310 10.3.1 网络视频监控数据流 310 10.3.2 视频流的编码 311 10.3.3 rtp打包过程 311 10.3.4 视频流封装过程 312 10.3.5 视频封装格式 312 10.3.6 视频传输过程 313 10.3.7 网络性能参数说明 313 10.4 组播技术介绍 316 10.4.1 单播、组播与广播 316 10.4.2 组播在视频监控中的应用 319 10.5 流媒体技术在视频监控中的应用 320 10.5.1 视频监控系统需求分析 320 10.5.2 流媒体概念 321 10.5.3 流媒体在视频监控中的 应用 322 10.6 sip协议介绍 324 10.6.1 信道分离技术 324 10.6.2 sip架构下的数据传输 325 10.7 视频互联互通 326 10.7.1 视频互联互通的意义 326 10.7.2 视频互联互通的方式 326 10.7.3 onvif及psia介绍 326 10.8 本章小结 327 第11章 中央管理软件(cms) 329 11.1 cms介绍 330 11.1.1 cms的定义 330 11.1.2 cms的发展历程 331 11.1.3 cms的发展方向 336 11.2 cms的原理及组成 338 11.2.1 cms的结构 338 11.2.2 cms的组成 338 11.2.3 cms的工作流程 345 11.3 cms的主流架构 348 11.3.1 完全集中型 348 11.3.2 完全分散型 348 11.3.3 多级cms架构 349 11.4 cms的客户软件功能 350 11.4.1 设备管理模块 350 11.4.2 视频操作模块 353 11.4.3 事件调查与用户审计 358 11.4.4 报警管理功能 358 11.4.5 系统诊断与维护 359 11.4.6 用户权限管理 360 11.5 cms的增强功能 362 11.5.1 cms服务器冗余 362 11.5.2 冗余nvr机制 364 11.5.3 网络冗余机制 365 11.5.4 安全登录功能 365 11.6 cms的特色功能 365 11.6.1 智能回放检索技术 365 11.6.2 多路图像拼接 367 11.6.3 应急预案功能 368 11.6.4 视频时间链表 368 11.6.5 视频编辑器 369 11.6.6 模糊索引功能 369 11.7 cms平台的考核 369 11.7.1 平台稳定性 369 11.7.2 系统可扩展性 370 11.7.3 系统兼容性 370 11.7.4 系统升级 371 11.7.5 系统安全性 371 11.7.6 cms的维护 372 11.7.7 系统容量支持 372 11.7.8 系统管理及维护 375 11.7.9 良好的人机界面 376 11.8 视频监控系统的集成 377 11.8.1 系统集成的意义 377 11.8.2 硬件集成方式 377 11.8.3 api方式集成 378 11.8.4 视频转码技术介绍 380 11.9 cms产品介绍 381 11.9.1 互信互通全球眼平台 381 11.9.2 中星电子vivs平台 381 11.9.3 东方网力pvg平台 389 11.9.4 广州睿捷cms介绍 396 11.10 本章小结 401 第12章 视频监控系统存储应用 403 12.1 存储基础知识 404 12.1.1 计算机i/o技术 404 12.1.2 磁盘结构与原理 404 12.1.3 硬盘接口技术 408 12.1.4 磁盘阵列技术 410 12.1.5 磁盘iops及带宽 412 12.1.6 磁盘的性能测试 413 12.2 raid技术介绍 415 12.2.1 raid技术基础 415 12.2.2 raid0技术介绍 418 12.2.3 raid1技术介绍 420 12.2.4 raid2简介 421 12.2.5 raid3技术介绍 421 12.2.6 raid4简介 422 12.2.7 raid5技术介绍 422 12.2.8 raid技术的比较 423 12.3 das、nas和san 424 12.3.1 存储系统架构的发展 424 12.3.2 das技术 425 12.3.3 nas技术 427 12.3.4 san技术 430 12.3.5 iscsi技术 431 12.3.6 存储架构比较 433 12.4 视频监控中的存储应用 435 12.4.1 视频监控存储特点 435 12.4.2 视频监控存储需求 437 12.4.3 视频存储的瓶颈说明 440 12.4.4 视频存储的主要架构 443 12.4.5 视频数据归档备份 446 12.4.6 视频存储设计部署 447 12.4.7 视频存储应用案例一 449 12.4.8 视频存储应用案例二 451 12.5 视频存储系统的扩容 452 12.5.1 dvr系统存储扩容 453 12.5.2 nvr系统存储扩容 453 12.5.3 存储扩展注意事项 453 12.6 本章小结 453 第13章 视频解码与图像显示 455 13.1 监视器 456 13.1.1 监视器的分类 456 13.1.2 crt与lcd监视器 456 13.2 视频解码器 457 13.2.1 硬解码器 457 13.2.2 软解码器 458 13.2.3 万能解码器 458 13.2.4 解码器的考核点 459 13.3 控制中心应用 459 13.3.1 系统架构配置 460 13.3.2 控制室操作应用 461 13.4 本章小结 463 第14章 智能网络视频系统实战 465 14.1 智能网络视频系统设计 466 14.1.1 本书知识点回顾 466 14.1.2 系统架构设计 469 14.1.3 系统稳定性考虑 470 14.2 智能网络视频系统选型 471 14.2.1 视频编码系统 471 14.2.2 平台系统考核 472 14.2.3 视频内容分析系统 472 14.2.4 网络系统设计 473 14.2.5 存储系统设计 473 14.3 招标文件案例分析 473 14.3.1 招标文件需求分析 473 14.3.2 投标文件响应结论 475 14.4 10年之后……大话ivs 477 第15章 ivs在不同行业的应用 479 15.1 高铁智能网络视频监控系统 480 15.1.1 高铁项目简介 480 15.1.2 高铁视频监控系统的特点 480 15.1.3 高铁视频监控系统层次 481 15.1.4 高铁视频监控系统拓扑 483 15.1.5 高铁视频监控关键因素 483 15.1.6 视频分析技术的应用 484 15.1.7 视频监控存储的考虑 486 15.1.8 铁路视频监控的平台软件 486 15.2 机场智能网络视频监控应用 487 15.2.1 机场视频监控系统的特点 487 15.2.2 机场视频监控系统的架构 487 15.2.3 智能网络视频监控构成 489 15.2.4 视频监控系统关键因素 490 15.2.5 视频分析技术在机场的应用 491 15.2.6 机场视频监控系统的存储 491 15.2.7 机场视频监控的平台软件 492 15.3 平安城市视频监控系统应用 493 15.3.1 平安城市简介 493 15.3.2 平安城市视频监控的特点 494 15.3.3 平安城市监控主流架构 495 15.3.4 全球眼监控平台介绍 497 15.3.5 某平安城市应用案例 503 参考文献 507
第1章 视频监控技术概述 1 1.1 引子 2 1.1.1 安全防范的雏形 2 1.1.2 网络视频监控 2 1.1.3 智能视频识别 2 1.1.4 智能网络视频监控 3 1.2 视频监控技术发展过程 3 1.2.1 模拟视频监控时代 4 1.2.2 数字视频监控时代 6 1.2.3 智能网络视频监控时代 7 1.3 视频监控的核心技术 8 1.3.1 光学成像器件 8 1.3.2 视频编码压缩算法 8 1.3.3 视频编码压缩芯片 9 1.3.4 视频管理平台 9 1.4 视频监控的发展方向 10 第2章 模拟视频监控系统 13 2.1 模拟监控系统的构成 14 2.2 视频采集设备 14 2.2.1 摄像机相关技术 15 .2.2.2 镜头相关介绍 19 2.2.3 防护罩 23 2.2.4 云台及解码器 23 2.2.5 一体球型摄像机 24 2.3 信号传输设备 27 2.3.1 视频信号的传输 27 2.3.2 视频分配器 28 2.3.3 控制信号的传输 28 2.3.4 系统供电 29 2.4 矩阵控制设备 29 2.4.1 矩阵工作原理 29 2.4.2 矩阵的主要功能 30 2.4.3 ptz控制原理 31 2.4.4 控制键盘介绍 31 2.5 显示与录像设备 31 2.5.1 多画面处理器 31 2.5.2 图像显示设备 33 2.5.3 长延时录像机 34 2.6 闭路电视监控系统设计 34 2.6.1 系统需求分析 34 2.6.2 摄像机的选型 36 2.6.3 镜头的选型 37 2.6.4 矩阵的选型 37 2.7 典型厂家设备介绍 37 2.7.1 泰科discover系列半球 37 2.7.2 泰科speeddome快球 38 2.7.3 泰科megapower 48矩阵 40 2.8 本章小结 41 第3章 视频编码压缩技术 43 3.1 多媒体技术基础 44 3.1.1 图像的色彩模型 44 3.1.2 图像的色彩空间变换 46 3.1.3 图像的基本属性 47 3.1.4 图像的格式与质量 48 3.1.5 数据压缩方法 49 3.2 静态图像压缩技术 53 3.2.1 色相变换过程 54 3.2.2 区块切割与采样 55 3.2.3 离散余弦(dct)变换 57 3.2.4 量化过程介绍 58 3.2.5 z字形编码过程 59 3.2.6 dc系数及ac系数编码 59 3.2.7 熵编码介绍 61 3.2.8 jpeg数据流介绍 61 3.2.9 jpeg解压缩过程 61 3.3 视频(动态图像)编码压缩 62 3.3.1 视频压缩的必要性 62 3.3.2 视频压缩的可行性 62 3.3.3 图像格式说明 63 3.3.4 逐行扫描与隔行扫描 66 3.3.5 帧率、码流与分辨率 67 3.3.6 视频编码模型 68 3.3.7 运动补偿技术介绍 69 3.4 主流视频编码技术 70 3.4.1 mjpeg编码压缩 70 3.4.2 mpeg-1技术介绍 71 3.4.3 mpeg-2技术简介 75 3.4.4 mpeg-4技术介绍 76 3.4.5 h.264技术说明 80 3.4.6 视频编解码技术应用 82 3.5 本章小结 84 第4章 硬盘录像机(dvr)技术 87 4.1 dvr产品介绍 88 4.1.1 dvr发展历史 88 4.1.2 dvr工作原理 89 4.1.3 软压缩与硬压缩 89 4.1.4 dvr芯片介绍 91 4.1.5 dvr的录像文件管理 92 4.1.6 dvr配置及接口 93 4.1.7 dvr的关键技术 96 4.1.8 dvr术语介绍 96 4.2 dvr软硬件构成 97 4.2.1 嵌入式dvr 97 4.2.2 pc式dvr 100 4.2.3 嵌入式对比pc式dvr 101 4.3 dvr软件功能 102 4.3.1 设备配置及管理 103 4.3.2 录像管理 103 4.3.3 报警管理 104 4.3.4 视频存储与备份 105 4.3.5 视频浏览与回放 105 4.3.6 设备网管维护 106 4.3.7 用户的管理 106 4.3.8 用户操作日志审计 107 4.4 dvr的应用架构 107 4.4.1 单机工作模式 107 4.4.2 模数混合架构 108 4.4.3 多机联网模式 109 4.5 dvr的亮点功能 111 4.5.1 dvr的多码流技术 111 4.5.2 视频分析技术应用 113 4.5.3 混合dvr技术 113 4.5.4 智能检索与回放 115 4.5.5 场景重组技术 116 4.5.6 视频加密技术 116 4.6 dvr产品选型 117 4.7 dvr的常见故障 119 4.7.1 pc式dvr的常见故障 119 4.7.2 嵌入式dvr的常见故障 119 4.8 dvr应用案例 120 4.8.1 dvr带宽设计 120 4.8.2 dvr存储设计 121 4.9 dvr设置与操作 122 4.9.1 dvr的系统设置 122 4.9.2 dvr的应用操作 122 4.10 dvr产品介绍 123 4.10.1 海康ds-9000介绍 123 4.10.2 朗驰欣创lc7300介绍 126 4.11 本章小结 129 第5章 视频编码器技术 131 5.1 dvs产品介绍 132 5.1.1 dvs发展历程 132 5.1.2 dvs对比dvr 132 5.1.3 dvs的工作原理 134 5.2 dvs产品软硬件构成 135 5.2.1 dvs硬件构成 135 5.2.2 dvs软件构成 136 5.3 dvs系统应用架构 139 5.3.1 矩阵+dvs混合架构 139 5.3.2 dvs+nvr架构 140 5.4 dvs的亮点功能 141 5.4.1 dvs的anr技术 141 5.4.2 dvs冗余技术 142 5.4.3 dvs的多码流技术 143 5.4.4 dvs的poe技术 145 5.4.5 dvs的音频功能 145 5.4.6 dvs组播应用 146 5.4.7 带视频分析功能的dvs 147 5.5 dvs产品选型 147 5.5.1 dvs的主要参数 147 5.5.2 dvs产品的架构 148 5.5.3 编码压缩方式 148 5.5.4 视频分析功能 148 5.5.5 各类接口资源 149 5.5.6 标准化与开放性 150 5.5.7 设备的稳定性 150 5.6 dvs的集成整合 150 5.6.1 dvs的sdk集成 150 5.6.2 dvs的sdk功能 151 5.7 dvs设置与应用 152 5.7.1 dvs工作流程 152 5.7.2 dvs码流分析 153 5.7.3 dvs主要参数说明 153 5.7.4 dvs配置过程 154 5.8 dvs产品介绍 155 5.8.1 nice编码器nve1008 155 5.8.2 朗驰欣创lc8304编码器 157 5.8.3 海康ds-6100编码器 160 5.9 本章小结 162 第6章 网络录像机(nvr)技术 163 6.1 nvr产品介绍 164 6.1.1 nvr的功能角色 164 6.1.2 nvr的功能模块 166 6.1.3 nvr对比dvr 166 6.1.4 pc式与嵌入式nvr 168 6.2 nvr的技术指标 170 6.2.1 nvr的平台需求 170 6.2.2 nvr的瓶颈分析 171 6.2.3 nvr的软件功能 173 6.3 nvr产品亮点功能 178 6.3.1 视频中间件技术应用 178 6.3.2 anr技术 179 6.3.3 nvr冗余技术 180 6.3.4 视频标签功能 181 6.3.5 带视频分析功能的nvr 181 6.4 nvr产品选型要点 181 6.4.1 nvr典型参数 181 6.4.2 nvr产品选型 182 6.5 nvr应用案例分析 183 6.5.1 需求分析 183 6.5.2 网络带宽设计 185 6.5.3 nvr存储设计 186 6.6 nvr产品介绍 187 6.6.1 东方网力nvr2000介绍 187 6.6.2 科达nvr2860介绍 191 6.7 本章小结 195 第7章 网络摄像机(ipc)技术 197 7.1 ipc产品介绍 198 7.1.1 ipc的定义 198 7.1.2 ipc的主要功能 199 7.1.3 ipc的分类 199 7.1.4 ipc的优势 200 7.1.5 ipc的常用术语介绍 203 7.2 ipc的组成及工作原理 204 7.2.1 ipc的硬件构成 204 7.2.2 ipc的软件构成 206 7.2.3 ipc的工作原理 208 7.3 ipc数据的网络传输 208 7.3.1 网络传输协议介绍 208 7.3.2 视音频流的传输 210 7.3.3 控制信号的传输 211 7.4 ipc的核心技术 211 7.4.1 光学成像技术 211 7.4.2 视频编码算法 211 7.4.3 编码压缩芯片 212 7.4.4 视频分析技术 212 7.5 ipc的亮点功能 214 7.5.1 ipc的3g功能 214 7.5.2 poe技术 215 7.5.3 本地缓存功能 215 7.5.4 ddns支持 216 7.5.5 ipc的安全通信 216 7.5.6 报警改变帧率技术 218 7.5.7 ipc的多码流技术 218 7.5.8 视频质量控制qos 219 7.5.9 视频移动探测 220 7.6 ipc的选型要点 220 7.6.1 ipc的主要参数 220 7.6.2 图像质量 221 7.6.3 网络适应性 221 7.6.4 编码压缩算法 221 7.6.5 系统安装与升级 222 7.6.6 产品许可授权方式 222 7.6.7 二次开发与集成 222 7.6.8 厂商产品线考察 223 7.7 ipc的应用设计 223 7.7.1 需求分析 223 7.7.2 系统架构 225 7.7.3 带宽与存储设计 225 7.7.4 系统的主要功能 226 7.8 ipc产品介绍 227 7.8.1 axis公司p33系列ipc 227 7.8.2 海康ds-2cd862mf介绍 229 7.9 本章小结 231 第8章 高清视频监控技术 233 8.1 模拟监控时代的高清 234 8.1.1 电视制式及分辨率 234 8.1.2 高清模拟摄像机 235 8.1.3 高清信号传输 235 8.1.4 高清显示设备 235 8.2 数字时代的高清技术 236 8.2.1 高清电视(hdtv)标准 236 8.2.2 高清ip摄像机 237 8.3 高清摄像机的优势 237 8.3.1 覆盖范围 238 8.3.2 图像细部特征 239 8.3.3 数字云台功能 239 8.3.4 视频校正与处理 240 8.3.5 360°全景摄像机 241 8.4 高清摄像机的关键技术 241 8.4.1 高清配套镜头 242 8.4.2 图像传感器 242 8.4.3 图像灵敏度问题 242 8.4.4 编码压缩算法 242 8.4.5 高清信号传输 243 8.4.6 视频管理平台支持 243 8.4.7 高清信号显示 243 8.5 高清监控的障碍 243 8.5.1 高带宽占用 244 8.5.2 海量存储问题 244 8.5.3 高成本问题 244 8.6 高清摄像机的应用 245 8.6.1 需求分析 245 8.6.2 像素数量计算 245 8.6.3 摄像机选型 246 8.6.4 系统架构说明 247 8.6.5 视频传输与存储 247 8.7 百万高清的产品介绍 247 8.7.1 mobotix智能高清摄像机 247 8.7.2 axis高清摄像机q1755 251 8.8 本章小结 252 第9章 视频内容分析(vca)技术 253 9.1 视频分析技术说明 254 9.1.1 视频内容分析技术背景 254 9.1.2 视频分析实现的功能 255 9.1.3 视频数据结构介绍 257 9.2 vmd技术介绍 259 9.2.1 vmd技术原理介绍 259 9.2.2 vmd技术的缺陷 259 9.3 vca技术介绍 260 9.3.1 vca技术的原理 260 9.3.2 vca技术的突破 260 9.3.3 vca的关键技术 262 9.4 视频分析工作机制 263 9.4.1 视频分析软件框架 263 9.4.2 视频分析的工作流 263 9.4.3 视频分析算法模块 264 9.4.4 视频分析过程 267 9.5 视频分析技术难点 269 9.5.1 环境因素 269 9.5.2 视频场景相关因素 270 9.5.3 平台及芯片的限制 270 9.5.4 成像因素 271 9.6 视频分析系统架构 272 9.6.1 前端独立单元 272 9.6.2 后端服务器方式 273 9.6.3 智能dvs或ipc 274 9.6.4 前后端混合架构 275 9.6.5 目前的架构情况 275 9.7 视频分析的主要应用 276 9.7.1 安全类应用 276 9.7.2 非安全类应用 279 9.7.3 摄像机状态检测 281 9.7.4 特色功能介绍 282 9.8 视频分析软件及设置 283 9.8.1 视频分析设置程序 283 9.8.2 vca设置过程举例 284 9.9 视频分析技术实施 286 9.9.1 视频分析实施流程 287 9.9.2 摄像机部署要点 287 9.9.3 vca效果评定 287 9.10 视频分析产品选型 288 9.10.1 算法实现方式 288 9.10.2 系统架构 289 9.10.3 集成性与易用性 289 9.11 智能编码器设计 290 9.11.1 视频分析过程 290 9.11.2 智能编码器设计 290 9.12 视频分析产品介绍 291 9.12.1 nice视频分析技术介绍 291 9.12.2 中星电子视频分析技术 292 9.13 本章小结 295 第10章 网络视频传输与交换 297 10.1 网络视频监控系统的特点 298 10.1.1 网络视频监控系统的结构 298 10.1.2 mpeg-4技术说明 298 10.1.3 系统中的视频传输 299 10.2 网络传输协议介绍 300 10.2.1 osi模型介绍 300 10.2.2 传输层介绍 303 10.2.3 tcpudp协议 304 10.2.4 rtp与rtcp协议 307 10.2.5 rtsp与rtvp简介 309 10.2.6 网管协议snmp 310 10.3 视频监控系统的数据传输 310 10.3.1 网络视频监控数据流 310 10.3.2 视频流的编码 311 10.3.3 rtp打包过程 311 10.3.4 视频流封装过程 312 10.3.5 视频封装格式 312 10.3.6 视频传输过程 313 10.3.7 网络性能参数说明 313 10.4 组播技术介绍 316 10.4.1 单播、组播与广播 316 10.4.2 组播在视频监控中的应用 319 10.5 流媒体技术在视频监控中的应用 320 10.5.1 视频监控系统需求分析 320 10.5.2 流媒体概念 321 10.5.3 流媒体在视频监控中的 应用 322 10.6 sip协议介绍 324 10.6.1 信道分离技术 324 10.6.2 sip架构下的数据传输 325 10.7 视频互联互通 326 10.7.1 视频互联互通的意义 326 10.7.2 视频互联互通的方式 326 10.7.3 onvif及psia介绍 326 10.8 本章小结 327 第11章 中央管理软件(cms) 329 11.1 cms介绍 330 11.1.1 cms的定义 330 11.1.2 cms的发展历程 331 11.1.3 cms的发展方向 336 11.2 cms的原理及组成 338 11.2.1 cms的结构 338 11.2.2 cms的组成 338 11.2.3 cms的工作流程 345 11.3 cms的主流架构 348 11.3.1 完全集中型 348 11.3.2 完全分散型 348 11.3.3 多级cms架构 349 11.4 cms的客户软件功能 350 11.4.1 设备管理模块 350 11.4.2 视频操作模块 353 11.4.3 事件调查与用户审计 358 11.4.4 报警管理功能 358 11.4.5 系统诊断与维护 359 11.4.6 用户权限管理 360 11.5 cms的增强功能 362 11.5.1 cms服务器冗余 362 11.5.2 冗余nvr机制 364 11.5.3 网络冗余机制 365 11.5.4 安全登录功能 365 11.6 cms的特色功能 365 11.6.1 智能回放检索技术 365 11.6.2 多路图像拼接 367 11.6.3 应急预案功能 368 11.6.4 视频时间链表 368 11.6.5 视频编辑器 369 11.6.6 模糊索引功能 369 11.7 cms平台的考核 369 11.7.1 平台稳定性 369 11.7.2 系统可扩展性 370 11.7.3 系统兼容性 370 11.7.4 系统升级 371 11.7.5 系统安全性 371 11.7.6 cms的维护 372 11.7.7 系统容量支持 372 11.7.8 系统管理及维护 375 11.7.9 良好的人机界面 376 11.8 视频监控系统的集成 377 11.8.1 系统集成的意义 377 11.8.2 硬件集成方式 377 11.8.3 api方式集成 378 11.8.4 视频转码技术介绍 380 11.9 cms产品介绍 381 11.9.1 互信互通全球眼平台 381 11.9.2 中星电子vivs平台 381 11.9.3 东方网力pvg平台 389 11.9.4 广州睿捷cms介绍 396 11.10 本章小结 401 第12章 视频监控系统存储应用 403 12.1 存储基础知识 404 12.1.1 计算机i/o技术 404 12.1.2 磁盘结构与原理 404 12.1.3 硬盘接口技术 408 12.1.4 磁盘阵列技术 410 12.1.5 磁盘iops及带宽 412 12.1.6 磁盘的性能测试 413 12.2 raid技术介绍 415 12.2.1 raid技术基础 415 12.2.2 raid0技术介绍 418 12.2.3 raid1技术介绍 420 12.2.4 raid2简介 421 12.2.5 raid3技术介绍 421 12.2.6 raid4简介 422 12.2.7 raid5技术介绍 422 12.2.8 raid技术的比较 423 12.3 das、nas和san 424 12.3.1 存储系统架构的发展 424 12.3.2 das技术 425 12.3.3 nas技术 427 12.3.4 san技术 430 12.3.5 iscsi技术 431 12.3.6 存储架构比较 433 12.4 视频监控中的存储应用 435 12.4.1 视频监控存储特点 435 12.4.2 视频监控存储需求 437 12.4.3 视频存储的瓶颈说明 440 12.4.4 视频存储的主要架构 443 12.4.5 视频数据归档备份 446 12.4.6 视频存储设计部署 447 12.4.7 视频存储应用案例一 449 12.4.8 视频存储应用案例二 451 12.5 视频存储系统的扩容 452 12.5.1 dvr系统存储扩容 453 12.5.2 nvr系统存储扩容 453 12.5.3 存储扩展注意事项 453 12.6 本章小结 453 第13章 视频解码与图像显示 455 13.1 监视器 456 13.1.1 监视器的分类 456 13.1.2 crt与lcd监视器 456 13.2 视频解码器 457 13.2.1 硬解码器 457 13.2.2 软解码器 458 13.2.3 万能解码器 458 13.2.4 解码器的考核点 459 13.3 控制中心应用 459 13.3.1 系统架构配置 460 13.3.2 控制室操作应用 461 13.4 本章小结 463 第14章 智能网络视频系统实战 465 14.1 智能网络视频系统设计 466 14.1.1 本书知识点回顾 466 14.1.2 系统架构设计 469 14.1.3 系统稳定性考虑 470 14.2 智能网络视频系统选型 471 14.2.1 视频编码系统 471 14.2.2 平台系统考核 472 14.2.3 视频内容分析系统 472 14.2.4 网络系统设计 473 14.2.5 存储系统设计 473 14.3 招标文件案例分析 473 14.3.1 招标文件需求分析 473 14.3.2 投标文件响应结论 475 14.4 10年之后……大话ivs 477 第15章 ivs在不同行业的应用 479 15.1 高铁智能网络视频监控系统 480 15.1.1 高铁项目简介 480 15.1.2 高铁视频监控系统的特点 480 15.1.3 高铁视频监控系统层次 481 15.1.4 高铁视频监控系统拓扑 483 15.1.5 高铁视频监控关键因素 483 15.1.6 视频分析技术的应用 484 15.1.7 视频监控存储的考虑 486 15.1.8 铁路视频监控的平台软件 486 15.2 机场智能网络视频监控应用 487 15.2.1 机场视频监控系统的特点 487 15.2.2 机场视频监控系统的架构 487 15.2.3 智能网络视频监控构成 489 15.2.4 视频监控系统关键因素 490 15.2.5 视频分析技术在机场的应用 491 15.2.6 机场视频监控系统的存储 491 15.2.7 机场视频监控的平台软件 492 15.3 平安城市视频监控系统应用 493 15.3.1 平安城市简介 493 15.3.2 平安城市视频监控的特点 494 15.3.3 平安城市监控主流架构 495 15.3.4 全球眼监控平台介绍 497 15.3.5 某平安城市应用案例 503 参考文献 507

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧