50分求avphone的中文资料(50分)

  • 主题发起人 delphi009
  • 开始时间
D

delphi009

Unregistered / Unconfirmed
GUEST, unregistred user!
我的信箱是jzy@silict.edu.cn
 
AVPhone 是一个用于实时视频和音频捕获、压缩、回放及存储的控件组。AVPhone 采用 VFW
及 WaveForm 技术编制,支持意ACM和ICM压缩引擎,包括H263及G723和MPEG4,捕获后的数
据直接压缩到内存Byte数组内,可不产生文件,也可以直接写入AVI文件内。

安装程序中包含MyAVPhone示例程序,可在网上打可视电话。它包含四个控件:

1:VidCap,用于视频的内存级捕获及压缩。
第一步:连接视频设备: VidCap.Connect
你的系统内必须装有合乎 VFW 标准的视频捕获设备,在连接时你可以指定一个索引来连接
到你想连接的设备,如果忽略,VidCap 将连接到系统中第一个可用的视频设备。

第二步,调用 StartCapture 方法后,VidCap 立即开始捕获视频,每当捕获并压缩一帧图
象,就会有 Frame 事件产生,其中参数 Data 为一 Byte 数组包含了图象数据。你可以在
此操纵 Data 存盘由传输通路例如 Winsock 发送到远端。VidCap.BitmapFormat 为一 Byte
数组中包含了压缩图象的格式。

第三步:本步骤是可选的。
选择ICM 压缩引擎: VidCap.Compressor = "h263",当然,你可以把当前你
系统的任意压缩引擎的四字节描述付给 VidCap。默认情况下 VidCap 使用 iv50 格式压缩
图象,你可以仅仅通过一个名字就来指定任意的压缩引擎包括 MPEG4 来压缩图象。你也可
以调用 VidCap.CompressorDlg 由用户自由选择。对于某些 ICM,在被打开之后必须要有
License 消息解锁才能工作,你可以在 DriverOpened 事件中使用 VidCap.SendMessage 来
传递这些消息。
压缩速率:VidCap1.Rate,1-30。
捕获的格式:VidCap1.DeviceFormat。此属性为一 Byte 数组,包含了视频
格式。或者直接调用 VidCap.Format 由用户自由选择。
压缩质量:Quality,0-100。
缩放比例:ZoomFactor,1 或 2 或 3 或 4 倍原始大小。
视频源及显示选择:调用 SourceDlg 或者 DisplayDlg。
每当图象尺寸改变,VidCap 将产生 Resize 事件。
每当控件被点击是会产生 Click 事件。

2:VidRnd,用于压缩视频的回放。
第一步:调用 VidRnd.StartDecompress 开始解压视频数据。其中参数 BitmapFormat 是
压缩视频的格式,你可以从另外的 VidCap 控件或 AVIFile 控件的 BitmapFormat 属性
得到(或通过网络传输得到)。

第二步:每当有新的视频数据,就由 VidRnd.Frame Data 写入控件,控件会自动缓冲及解
压并显示。每当缓冲区的数据被显示完,BufferEmpty 事件将会产生,你可以在此写入新的
视频数据到 VidRnd。

第三步:本步骤是可选的。
VidRnd 拥有和 VidCap 相似的 Rate 及 ZoomFactor 属性,SendMessage 方
法和 Resize及Click事件。


3:Audio,用于音频的捕获、压缩及回放。
第一步:Audio.CapConnect 连接音频设备。你可以由参数 Driver 指定一个设备索引或连
接到缺省设备。参数 Format 指定压缩格式,缺省时使用 GSM610 格式,你可以通过选择不
同的 Format 来指定任何 ACM 压缩格式。你也可以调用 Audio.CompressorDlg 由用户自由
选择。

第二步,调用 StartCapture 方法后,Audio 立即开始捕获视频,每当捕获并压缩一帧图象
,就会有 Frame 事件产生,其中参数 Data 为一 Byte 数组包含了音频数据。你可以在此
操纵 Data 存盘或由传输通路例如 Winsock 发送到远端。Audio.WaveFormat 为一 Byte 数
组中包含了压缩音频的格式。

第三步,如果你还要回放音频,你可以调用 Audio.FeedConnect 方法,其中参数 Wft 是压
缩音频的格式,你可以从另外的 Audio 控件或 AVIFile 控件的 WaveFormat 属性得到(或
通过网络传输得到)。

第四步:每当有新的音频数据,就由 Audio.Frame Data 写入控件,控件会自动缓冲及解压
并重放。每当缓冲区的数据被显示完,BufferEmpty 事件将会产生,你可以在此写入新的视
频数据到 Audio。


4:AVIFile,用于与 AVI 格式文件交换数据。
第一步:如果你要捕获并压缩视频及音频到 AVI 文件,你可以在 VidCap 及 Audio 开始工
作后调用 AVIFile.Create "文件名",VidCap.BitmapFormat, Audio.WaveFormat 方法,然
后在每一个 VidCap 或 Audio 的 Frame 事件中把数据 Data 通过 AVIFile.WriteVideo 和
AVIFile.WriteAudio 存盘。

第二步:如果你要回放已压缩的 AVI 文件,你可以调用 AVIFile.OpenA "文件名" 后把
AVIFile.BitmapFormat 和 AVIFile.WaveFormat 传递到 VidRnd.StartDecompress 或
Audio.FeedConnect,并在使用 ReadAudio 和 ReadVideo 方法读取数据并由控件的 Frame
方法写入到控件进行回放,以后可以在控件的 BufferEmpty 事件中继续读取 AVI 文件的数
据并写入到控件。


下面这几行 VB 源代码演示了在同一台机器上进行视频及音频捕获、压缩及回放的最简代码。

Private Sub Audio1_Frame(Data As Variant)
Audio1.Frame Data
End Sub

Private Sub VidCap1_Frame(Data As Variant)
VidRnd1.Frame Data
End Sub

Private Sub Form_Load()

On Error GoTo ErrorHandle

Audio1.CapConnect
Audio1.StartCapture

Audio1.FeedConnect Audio1.WaveFormat

VidCap1.Connect
VidCap1.StartCapture

VidRnd1.StartDecompress VidCap1.BitmapFormat
Exit Sub

ErrorHandle:
MsgBox Err.Description, vbCritical
End Sub

目前,avphone 已发布 3.0 版本,使用更加简洁,其安装程序中包含大量简单明了的示例
代码。其中包括源码程序 BNMeeting, MultiConf 和 Broadcast 稍加修改就是功能强大的
实时视频应用,可于:

http://www.banasoft.net/avphone3/avphone3.htm

下载。


 
多人接受答案了。
 
顶部