知识大全 用Delphi开发视频聊天软件(一)

Posted

篇首语:瞄准还不是射中,起跑还不算到达。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用Delphi开发视频聊天软件(一)相关的知识,希望对你有一定的参考价值。

用Delphi开发视频聊天软件(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    一 引言

    我们知道视频聊天软件的关键技术在于采集视频 并实时传输给聊天软件在线的人 对于视频的采集 这里采用微软公司的关于数字视频的一个软件包VFW(Video for Windows) 相信很多人对它都很熟习 VFW能使应用程序通过数字化设备从传统的模拟视频源得到数字化的视频剪辑 VFW的一个关键思想是播放时不需要专用硬件 为了解决数字视频数据量大的问题 需要对数据进行压缩 而VFW引进了AVI的文件标准 该标准未规定如何对视频进行捕捉 压缩及播放 仅规定视频和音频该如何存储在硬盘上及在AVI文件中交替存储视频帧和与之相匹配的音频数据 通过VFW 开发人员通过发送消息或设置属性来捕捉 播放和编辑视频剪辑 当用户在安装VFW时 安装程序会自动地安装配置视频所需要的组件 如设备驱动程序 视频压缩程序等 VFW主要由 个模块组成 VFW功能模块

    AVICAP DLL 包含执行视频捕捉的函数 它给AVI文件的I/O处理和视频 音频设备驱动程序提供一个高级接口

    MSVIDEO DLL 包含一套特殊的DrawDib函数 用来处理屏幕上的视频操作

    MCIAVI DRV 包括对VFW的MCI命令解释器的驱动程序

    AVIFILE DLL 包含由标准多媒体I/O(mmio)函数提供的更高的命令 用来访问 AVI文件

    ICM 压缩管理器 用于管理的视频压缩/解压缩的编译码器(Codec)

    ACM 音频压缩管理器 提供与ICM相似的服务 适用于波形音频

    对于视频的传输 我们使用UDP来传 因为UDP传输速度快 TCP是面向连接的 建立连接时双方需经过三次握手 数据传输可靠 FTP telnet等就是基于TCP的 UDP是面向非连接的 发出信息不需对方确认 但这样速度比TCP快 但有可能丢失数据 象SMTP tftp等就是基于UDP的 另外UDP还支持广播 UDP广播两种 一种是directed broadcast 比如你的网段是 X 你就往 发就可以了 另一种是limited broadcast 广播地址是

    二 视频聊天软件的开发步骤

     创建捕捉窗口 采集视频

    在进行视频捕捉之前必需要先创建一个捕捉窗口 并应以此为基础进行所有的捕捉及设置操作 捕捉窗口可用AVICap窗口类的 CapCreateCaptureWindow 函数来创建 其窗口风格可设置为WSCHILD和WS_VISIBLE参数

    有了捕捉窗口 我们就可以将视频流和音频流捕捉到一个AVI文件中 动态地同视频和音频输入器件连接或断开 用Overlay或Preview模式对输入的视频流进行实时显示 设置捕捉速率 显示控制视频源 视频格式及视频压缩的对话框 创建 保存或载入调色板 将图像和相关的调色板拷贝到剪贴板 将捕捉的单帧图像保存到BMP格式文件中

     捕捉窗口和驱动程序的关联

    仅仅一个捕捉窗口是不能工作起来的 它必须要与一个设备相关联才能取得视频信号 用函数CapDriverConnect可使捕捉窗与其设备驱动程序相关联

     设置视频设备的属性

    通过设置TcaptureParms结构变量的各个成员变量 可以控制设备的采样频率 中断采样按键 状态行为 设置好TcaptureParms结构变量后 可以用函CapCaptureSetSetup使设置生效 之后还可以用CapPreviewScale CapPreviewRate设置预览的比例与速度 也可以直接使用设备的默认值

     打开预览

    利用函数CapOverlay可选择是否采用叠加模式预览 以使系统资源占用小 视频显示速度加快 然后用CapPreview启动预览功能 这时就可以在屏幕上看到来自摄像头的图像了

     使用捕捉窗回调函数

    前的四个步骤就可以建立一个基本的视频捕捉程序了 如果想自己处理从设备捕捉到的视频数据 则要使用捕捉窗回调函数来处理 比如一帧一帧地获得视频数据 也可以以流的方式获得视频数据等等

     传输视频流

    使用回调函数可以取得第一帧的数据 我们使用网络技术将数据发给其它机器 其它机品将接收的数据显示出来

     接收视频

    接收UDP数据 同时将接收到的数据回显出来 这样就可以看到远处传来的视频了

    三 用Delphi编写程序代码

    微软的VFW SDK只有VC和VB版 并没有Delphi版 不过在网上可以找到VFW PAS文件 FW PAS文件声明了调用DLL中的各个函数和变量 (注 源代码中提供了VFW PAS文件)

    下面就以Delphi 开发一个网络视频聊天软件 聊天软件分两个程序 一个是视频采集程序并进行UDP广播的视频聊天软件服务器 另一个是接收UDP广播程序显示传来的视频数据的视频聊天软件客户端

     建立视频聊天软件服务器

     )新建一个工程 命名为Project dpr 并把VFW PAS加到USE中

     )在Form 上放置一个Tpanel控件 该控件用于显示视频 之后再放置两个Tbutton控件 一个caption为 开始 另一个Name为 停止 放置一个UDP组件 这里用indy的IdUDPClient用来传输视频 如图示

    用Delphi开发视频聊天软件(二)

cha138/Article/program/Delphi/201311/24745

相关参考

知识大全 用Delphi开发视频聊天软件(三)

用Delphi开发视频聊天软件(三)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 Delphi开发基于DCOM的聊天室

Delphi开发基于DCOM的聊天室  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 Delphi软件工程师试题

Delphi软件工程师试题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!您为什么选择软件开发这个行

知识大全 delphi中,让程序只运行一次的方法[1]

  公司开发的软件需要对串口进行操作每次打开软件后程序自动去打开串口寻找连接到串口上的设备但是如果用户不知道打开了两次那么第二次打开的程序是不能正常使用的因为对串口的操作时独占的第一个程序独占了串口的

知识大全 我毕业一年了,学软件开发,现在想找工作,我应该去培训吗?

我毕业一年了,学软件开发,现在想找工作,我应该去培训吗?这种培训的都不实际,有基础了自己找整套视频教程自学,然后报考软件工程师证书就ok了。。。如果英文可以的话,就报考国际性的。比较实用。国家的是软考

知识大全 谁知道手机用什么软件可以下载大视频到手机

谁知道手机用什么软件可以下载大视频到手机手机下载视频的方法有很多,可以进行如下操作:1.使用浏览器搜索您需要的视频进行下载。2.使用第三方视频播放器搜索需要的视频下载。3.通过电脑下载视频,然后将手机

知识大全 用什么软件可以获取对方微信聊天记录

用什么软件可以获取对方微信聊天记录查看他人的微信聊天记录,除非可以拿到对方手机设备直接登陆微信账户查看,在聊天对话框里面查看聊天记录。如果无法通过对方的手机设备显示查看到聊天记录信息,就永远不可能查看

知识大全 用DELPHI开发DirectX游戏

用DELPHI开发DirectX游戏  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!这不是一篇关于D

知识大全 用Delphi 6开发ASP上传组件详解

用Delphi6开发ASP上传组件详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  文件上传是

知识大全 用DELPHI开发自动化服务器

用DELPHI开发自动化服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 自动化是从一个应用程