上一页
|
下一页
|
目录
SunVideo Plus 1.3 用户指南
4
SunVideo Plus 实例程序
本章包括 SunVideo Plus 编程工具以及 XIL 程序实例。SunVideo Plus 软件附带几个实例程序的源代码。下表列出了这些实例程序并作了简要说明。后面提供了每个语法和相关选项的详细说明。
表 4-1 SunVideo Plus 实例程序
|
实例程序
|
说明
|
swmtool
|
通过 GUI 安装 SunVideo Plus 的工具。
|
o1k_audrec
|
将音频录制到文件的工具。
|
o1k_audplay
|
播放音频文件的工具。
|
o1k_audloop
|
将音频输入环路到音频输出的工具。
|
soundtool
|
录制、播放和修改 u-law 音频文件的 GUI 工具。
|
xil_compress
|
捕获和压缩视频并将压缩数据保存到文件的 XIL 实例。
|
xil_decompress
|
XIL 实例,它从文件中读取压缩数据,进行解压缩,然后显示解压缩后的视频。
|
xil_display
|
捕获并显示视频的 XIL 实例。
|
xil_video_broadcast/xil_video_receiver
|
这是两个 XIL 实例:broadcast 传输通过 TCP 捕获和压缩的视频; receiver 接收视频流,进行解压缩,随后显示。
|
xil_video_broadcast/xil_video_receiver
|
该实例程序的功能与前一个相同,但在压缩格式列表中添加了 H.261 协议。
|
o1k_conf
|
使用 XIL 和 SunVideo Plus 音频库构建的点对点音频/视频会议系统实例。
|
o1k_ctl
|
用于更改到 SunVideo Plus 的输入的音频和视频控制器。
|
这些程序还帮助校验 SunVideo Plus 卡的适当操作。
音频录制
o1k_audrec 程序是将音频录制到文件的工具,它是由命令行驱动的。
下面显示 o1k_audrec 实例的命令行语法:
hostname% o1k_audrec 选项 -o 文件名
|
下表描述命令选项和缺省设定。
表 4-2 o1k_audrec 选项
|
选项
|
说明和值
|
缺省值
|
-D 设备
|
设备名
|
/dev/o1k0
|
-f 格式
|
编码格式
(0=ULAW、1=ALAW、2=PCM8、3=PCM16、4=G722)
|
0
|
-r 速率
|
采样速率 (8000、11025、16000、22050)
|
8000
|
-c 通道
|
通道 (1、2)
|
1
|
-p 端口
|
输入端口(0=线路、1=话筒)
|
0
|
-g 增益
|
输入增益(0 到 1.0)
|
.125
|
-m 监视器增益
|
监视器增益 (0 到 1.0)
|
0
|
-I 信息
|
音频文件字符串信息
|
""
|
-b 大小
|
缓冲区大小
|
1000
|
-h 数量
|
在数量后打印散列标志
|
0
|
音频播放
o1k_audplay 程序是播放音频文件的工具,它是由命令行驱动的。
下面显示 o1k_audplay 实例的命令行语法:
hostname% o1k_audplay 选项 -i 文件名
|
下表描述命令选项和缺省设定。
表 4-3 o1k_audplay 选项
选项
|
说明和值
|
缺省值
|
-D 设备
|
设备名
|
/dev/o1k0
|
-v 增益
|
输出增益(0 到 1.0)
|
1.0
|
-b 大小
|
缓冲区大小
|
1000
|
音频环路
o1k_audloop 程序是用于从音频输入环路到音频输出的工具,它是由命令行驱动的。
下面显示 o1k_audloop 实例的命令行语法:
下表描述命令选项和缺省设定。
表 4-4 o1k_audloop 选项
选项
|
说明和值
|
缺省值
|
-D 设备
|
设备名
|
/dev/o1k0
|
-f 格式
|
编码格式
(0=ULAW、1=ALAW、2=PCM8、3=PCM16、4=G722)
|
0
|
-r 速率
|
采样速率 (8000、11025、16000、22050)
|
8000
|
-c 通道
|
通道 (1、2)
|
1
|
-p 端口
|
输入端口(0=线路、1=话筒)
|
0
|
-g 增益
|
输入增益(0 到 1.0)
|
.125
|
-v 增益
|
输出增益(0 到 1.0)
|
1.0
|
-b 大小
|
缓冲区大小
|
1000
|
soundtool 程序
soundtool 程序是录制、播放和修改 u-law 音频文件(压缩的音频文件)的 GUI 工具。
下面显示 soundtool 实例的命令行语法:
hostname% soundtool [-D 设备]
|
下图是 soundtool 演示程序的显示。
图 4-1 soundtool 显示
soundtool 是随 SUNWaudmo 软件包分发的演示程序,通常安装在 /usr/demo/SOUND/src/soundtool/ 下。soundtool 使用 libaudio 音频库和一些系统调用(例如 open/close、read/write、ioctl 以及 fcntl) 在 Sun 的标准硬件及音频设备上进行操作。SunVideo Plus 软件中的 soundtool 演示源程序安装在 O1KHOME 的实例子目录下(通常为 /opt/SUNWo1kp/examples/soundtool)。
使用 SunVideo Plus 控制面板
SunVideo Plus 控制面板 o1k_ctl 允许对系统中安装的 SunVideo Plus 的各种音频/视频属性(例如视频/音频输入选择、音频音量/增益、视频亮度、对比度等)进行静态或动态更改。
| 打开 SunVideo Plus 控制面板:
|
下图显示 SunVideo Plus 控制面板。
图 4-2 SunVideo Plus 控制面板
每个 SunVideo Plus 设备的设定都保存在数据库中。在控制面板上更改各种属性时,选定设备的数据库即被修改。打开 SunVideo Plus 设备时,使用数据库中的当前设定对设备进行配置。在 SunVideo Plus 处于打开状态时,控制面板也将与使用 SunVideo Plus 设备的进程通讯,以便动态更改设定。
控制面板中有几个设定不能进行动态更改,因此只有打开 SunVideo Plus 时它们才能生效。这些设定在控制面板中用星号(*)标记。
视频制式可以设置为 NTSC、PAL 或 AUTO。如果选择 AUTO,则打开 SunVideo Plus 设备时将自动检测视频制式。但是由于自动检测需要 1.5 秒,因此,如果您知道所用的视频制式,最好手动设置视频制式。
“Query”按钮用于动态检查选定的 SunVideo Plus 设备当前是否被另一个进程打开。
控制面板上的各种属性也可以通过编程由用户程序更改。由于可以在控制面板打开时由另一个进程进行这些更改,所以这些属性状态可能并不总是正确的。按一下控制面板上的“Update”按钮可以更新控制面板设定的当前状态。
图像压缩
这是一个经过修改的 XIL 实例,其中添加了 H.261(视频)压缩。有关特定 H.261 代码的更改,请参阅源代码注释。该演示程序的 SunVideo 版本不经修改就可以在 SunVideo 二进制兼容模式下运行(SunVideo 版本不包括 H261)。注意:缺省收缩因子为 2 (-s 2),它引起 CIF 大小的图像压缩。要压缩 QCIF 大小的图像,使用 -s 4。
下面显示 xil_compress 实例的命令行语法:
hostname% xil_compress 选项 -o 文件名
|
下表描述命令选项和缺省设定。
表 4-5 xil_compress 选项
|
合法选项
|
说明和值
|
缺省值
|
-o %s
|
在文件中保存比特流
|
NULL
|
-C %s
|
压缩类型 (CellB、JPEG、MPEG1、H261)
|
CellB
|
-s %d
|
收缩因子
|
2
|
-I %d
|
选择输入通道
|
1
|
-f %d
|
要捕获的帧数
|
100
|
-i %d
|
捕获间跳过的帧数
|
0
|
-D %s
|
设备名
|
/dev/o1k0
|
-B %d
|
H261 比特率、千比特/秒
|
2000
|
-Q %d
|
H261 最大数
|
10
|
-R %d
|
H261 速率控制(0=可调、1=固定)
|
1
|
合法开关
|
|
|
-E
|
遇到第一个错误时退出
|
|
实例用法
要压缩 CIF CellB 比特流,键入:
hostname% xil_compress -C CellB -o /tmp/t.clb
|
要压缩 CIF JPEG 比特流,键入:
hostname% xil_compress -C Jpeg -o /tmp/t.jpeg
|
要压缩 CIF H261 比特流,键入:
hostname% xil_compress -C H261 -o /tmp/t.h261
|
要压缩 QCIF H261 比特流,键入:
hostname% xil_compress -C H261 -s 4 -o /tmp/t.h261
|
图像解压缩
这是一个经过修改的 XIL 实例,其中添加了 H.261。对于 H.261 解压缩,SunVideo Plus XIL 分子在缺省情况下使用系统中安装的第一块 SunVideo Plus 卡来进行 H.261 的硬件加速解码。如果要使用另一个 SunVideo Plus 设备进行解码,则必须明确地使用 -D 选项。
下面显示 xil_decompress 实例的命令行语法:
hostname% xil_decompress 选项 -i 文件名
|
下表描述命令选项和缺省设定。
表 4-6 xil_decompress 选项
|
选项
|
说明和值
|
缺省值
|
-C
|
压缩类型 (CellB、JPEG、H.261、Cell、MPEG1)
|
CellB
|
-s %d %d
|
CellB 宽度和高度
|
320, 240
|
-r %d
|
回放帧速率(0为尽可能快)
|
0
|
H261 选项
|
|
|
-D
|
h/w 解压缩的 SunVideo Plus 设备名
|
NULL
|
实例用法
要解压缩 CellB 比特流,键入:
hostname% xil_decompress -C CellB -s 320 240 -i /tmp/t.clb
|
要解压缩 JPEG 比特流,键入:
hostname% xil_decompress -C Jpeg -i tmp/t.jpeg
|
要解压缩 H261 比特流,键入:
hostname% xil_decompress -C H261 -i tmp/t.h261
|
要使用系统中的第二块 SunVideo Plus 卡解压缩 H261 比特流,键入:
hostname% xil_decompress -C H261 -i tmp/t.h261 -D /dev/o1k1
|
视频显示
这是经过修改的 XIL 实例,它捕获并显示视频。
对影响图像颜色(亮度、对比度、色调等)的视频属性进行更改也将对控制面板所用的数据库作相应更改。因此,上述设定的缺省值取决于上次设置。如果运行了一次该应用程序,并将亮度设置为某个值,则下次运行视频应用程序时该值就成为缺省设定。
下面显示 xil_display 实例的命令行语法:
下表描述命令选项和缺省设定。
表 4-7 xil_display 选项
|
合法选项
|
说明和值
|
缺省值
|
-s %d
|
收缩因子
|
2
|
-I %d
|
选择输入通道
|
1
|
-f %d
|
要捕获的帧数
|
100
|
-w %d
|
捕获子图像宽度
|
640
|
-h %d
|
捕获子图像高度
|
480
|
-i %d
|
捕获间跳过的帧数
|
0
|
-m %d
|
缓冲区最大帧数
|
2
|
-x %d
|
x 窗口位置
|
(随机)
|
-y %d
|
y 窗口位置
|
(随机)
|
-D %s
|
设备名
|
/dev/o1k0
|
合法开关
|
|
|
-g
|
启用灰度级模式
|
|
-E
|
遇到第一个错误时退出
|
|
-d
|
不显示捕获的结果
|
|
视频属性
|
|
|
-B %d
|
亮度
|
无
|
-C %d
|
对比度
|
无
|
-H %d
|
色调
|
无
|
-U %d
|
饱和度/增益 U 组件
|
无
|
-V %d
|
饱和度/增益 V 组件
|
无
|
-c %d
|
色彩图版本(0=XIL 标准、1=XIL 伽马校正)
|
1
|
如果当前显示深度为 24 位,则色彩图版本选项不起作用。对于 8 位显示深度,该选项将影响视频窗口所安装的色彩图。XIL 版本可以使 SunVideo Plus 捕获 16 位视频数据,而后由 XIL 分子通过软件抖动处理转换为 8 位。
实例用法
要显示视频,键入:
视频广播和视频接收器
xil_video_broadcast 和 xil_video_receiver 这两个程序是经过修改的 XIL 实例,它们在 SunVideo Plus 卡上运行。这些演示程序的 SunVideo 版本不经修改就可以在 SunVideo 二进制兼容模式下运行。
xil_video_broadcast 程序
下面显示 xil_video_broadcast 实例的命令行语法:
hostname% xil_video_broadcast 选项
|
下表描述命令选项和缺省设定。
表 4-8 xil_video_broadcast 选项
|
合法选项
|
说明和值
|
缺省值
|
-C %s
|
压缩类型 (CellB、Jpeg、UYVY)
|
CellB
|
-H %s
|
目标主机名
|
本地子网
|
-c %d
|
广播通道 (0-9)
|
0
|
-F %s
|
目标主机名的文件
|
无
|
-D %s
|
SunVideo Plus 设备名
|
/dev/o1k0
|
-I %d
|
选择输入通道
|
1
|
-P %d
|
每次传输延迟 x 毫秒
|
0
|
-d %s
|
在文件中保存比特流
|
NULL
|
-f %d
|
要广播的帧数
|
18000
|
-i %d
|
捕获间跳过的帧数
|
0
|
-m %d
|
缓冲区最大帧数
|
2
|
-s %d
|
收缩因子
|
2
|
-w %d
|
捕获窗口的宽度
|
NTSC: 640
PAL: 768
|
-h %d
|
捕获窗口的高度
|
NTSC: 480
PAL: 576
|
-x %d
|
显示窗口的 x 坐标
|
(随机)
|
-y %d
|
显示窗口的 y 坐标
|
(随机)
|
合法开关
|
|
|
-p
|
禁止预览
|
|
-b
|
启用接收器显示部分 CellB 帧
|
|
-t
|
禁止传输
|
|
-E
|
遇到第一个错误时退出
|
|
-v
|
打印冗长信息
|
|
xil_video_receiver 程序
下面显示 xil_video_receiver 实例的命令行语法:
hostname% xil_video_receiver 选项
|
下表描述命令选项和缺省设定。
表 4-9 xil_video_receiver 选项
|
合法选项
|
说明和值
|
缺省值
|
-C %s
|
压缩类型 (CellB、Jpeg、UYVY)
|
CellB
|
-c %d
|
广播通道 (0-9)
|
0
|
-f %d
|
要广播的帧数
|
18000
|
-x %d
|
显示窗口的 x 坐标
|
(随机)
|
-y %d
|
显示窗口的 y 坐标
|
(随机)
|
合法开关
|
|
|
-b
|
启用接收器显示部分 CellB 帧
|
|
-E
|
遇到第一个错误时退出
|
|
-v
|
打印冗长信息
|
|
实例用法
要广播/接收视频,键入:
hostname% xil_video_receiver -C CellB
hostname% xil_video_broadcast -C CellB
|
H.261 的视频广播和视频接收器
xilh_video_broadcast 和 xilh_video_receiver 这两个程序是经过修改的 XIL 实例,它们在 SunVideo Plus 卡上运行,并使用 H.261 压缩。
xilh_video_broadcast 程序
下面显示 xil_video_broadcast 实例的命令行语法:
hostname% xilh_video_broadcast 选项
|
下表描述命令选项和缺省设定。
表 4-10 xilh_video_broadcast 选项
|
合法选项
|
说明和值
|
缺省值
|
-C %s
|
压缩类型 (CellB、Jpeg、H261、UYVY)
|
CellB
|
-H %s
|
目标主机名
|
本地子网
|
-c %d
|
广播通道 (0-9)
|
0
|
-F %s
|
目标主机名的文件
|
无
|
-D %s
|
SunVideo Plus 设备名
|
/dev/o1k0
|
-I %d
|
选择输入通道
|
1
|
-P %d
|
每次传输延迟 x 毫秒
|
0
|
-d %s
|
在文件中保存比特流
|
NULL
|
-f %d
|
要广播的帧数
|
18000
|
-i %d
|
捕获间跳过的帧数
|
0
|
-m %d
|
缓冲区最大帧数
|
2
|
-s %d
|
收缩因子
|
2
|
-w %d
|
捕获窗口的宽度
|
NTSC: 640
PAL: 768
|
-h %d
|
捕获窗口的高度
|
NTSC: 480
PAL: 576
|
-x %d
|
显示窗口的 x 坐标
|
(随机)
|
-y %d
|
显示窗口的 y 坐标
|
(随机)
|
-B %d
|
H261 比特率
|
256
|
-Q %d
|
H261 最大量化
|
10
|
合法开关
|
|
|
-p
|
禁止预览
|
|
-b
|
启用接收器显示部分 CellB 帧
|
|
-t
|
禁止传输
|
|
-E
|
遇到第一个错误时退出
|
|
-v
|
打印冗长信息
|
|
xilh_video_receiver 程序
下面显示 xil_video_receiver 实例的命令行语法:
hostname% xilh_video_receiver 选项
|
下表描述命令选项和缺省设定。
表 4-11 xilh_video_receiver 选项
|
合法选项
|
说明和值
|
缺省值
|
-C %s
|
压缩类型 (CellB、Jpeg、H261、UYVY)
|
CellB
|
-c %d
|
广播通道 (0-9)
|
0
|
-f %d
|
要广播的帧数
|
18000
|
-x %d
|
显示窗口的 x 坐标
|
(随机)
|
-y %d
|
显示窗口的 y 坐标
|
(随机)
|
合法开关
|
|
|
-b
|
启用接收器显示部分 CellB 帧
|
|
-E
|
遇到第一个错误时退出
|
|
-v
|
打印冗长信息
|
|
音频视频会议
实例程序 o1k_conf 是用 C++ 语言编写的点对点音频/视频会议,使用 XIL 和 SunVideo Plus 音频 API。它支持 CellB、JPEG 和 H261 视频格式以及各种音频格式。
o1k_conf 命令
下面显示 o1k_conf 实例的命令行语法:
下表描述命令选项和缺省设定。
表 4-12 o1k_conf 选项
|
合法选项
|
说明和值
|
缺省值
|
-u %s
|
user@host
|
NULL
|
-t
|
禁止 XIL 模式(仅适宜 Solaris 2.6)
|
|
-p
|
用于接收 PAL 制式
|
|
-D %s
|
SunVideo Plus 设备名
|
/dev/o1k0
|
- 在 Solaris 2.5.1中,XIL 1.2 不是一种安全的多线程处理方式。会议实例使用访问 XIL 的多个线程。线程在调用 XIL 前相互锁定。这并非一种有效的方法,但对于 XIL 1.2 是必需的。在 Solaris 2.6 中,XIL 1.3 是一种安全的多线程处理方式。-t 选项用于解除会议应用程序使用的锁定。
- 如果知道该呼叫将以 PAL 制式发送,则使用 -p 选项。如果发送 PAL 制式时不使用该选项,则将出错。
下图显示主会议面板:
图 4-3 o1k_conf 主会议面板
这允许配置音频/视频参数,同时提供通讯簿以存储有关要连接的用户的信息。
要打开通讯簿,按一下“Address”按钮。下图显示通讯簿。
图 4-4 通讯簿
选择“New”按钮以添加用户。最重要的信息是 User@Host 字段。它用于在开电话会议时联系另一个人。通讯簿中的其它信息均为可选的。填写完用户信息后,按一下“Add”按钮(仅在选择“New”按钮后才显示该按钮)。要保存通讯簿,选择“File”菜单上的“Save”。要选择会议的用户,从列表中选择该用户,然后按一下“Done”按钮。这将关闭弹出式窗口并将 User@Host 名放置在主会议面板(
图 4-3)中。
只有呼叫会议的用户才需要配置主会议面板,因为呼叫会议时远端即被告知呼叫者的配置。o1k_conf 的缺省设定为
- 视频: H261、QCIF、10fps、256 千比特/秒
- 音频:ulaw、8 KHz、mono
要更改会议的配置,按一下“Setup”,然后按菜单和弹出窗口的指令继续操作。
当被另一个用户呼叫时,将打开弹出式窗口通知您呼叫者和呼叫参数(参阅下图)。这样您可以决定是否参加会议。
图 4-5 被呼叫窗口
会议期间可以监视状态信息,例如音频及视频比特率和帧速率以及网络包活动。这可以从主会议面板的视图中获得。然后选择“A/V Panel”,这样可以在音频/视频面板中更改音频和视频参数。
会议呼叫期间,屏幕上将出现两个窗口,即本地视图 (Local View) 和远端视图 (Far View)(会议的另一方)。下图显示了这两个窗口。
图 4-6 本地视图和远端视图窗口
利用 H.261 可以在远端视图窗口中实现画中画,您的视图将嵌在左上角。要减少 CPU 的使用,可以将本地视图转换为图标。建议在 H261 会议中使用此方法。
电话会议结束后,按一下“HangUp”。呼叫接通后,主会议面板上将显示“HangUp”按钮。
上一页
|
下一页
|
目录