3.1. 关于设置Camera and Microphone 的方法的参数
目前的一个挑战fms3开发者的是:优化摄影头和麦克风的设置。摄像机和麦克风提供的设置方法,有几个不同的参数。根据您的媒体环境与您的硬件(网络摄像机和麦克风)和连接带宽的设置,这些都会影响您的应用程序的性能。
每一个摄像头有一个“本土化”能力,但是这种能力可以真正实现则是另一回事。举例来说,大部分的 USB 2和IEEE 1394 (火线)网路摄影机的视频捕获速度每秒30帧( FPS )的和视频捕分辨率为640 x 480 。或许除非你有相当大幅的带宽能力,大量的RAM内存,以及强悍的处理器,对于这种类型的分辨率,您不可在双向音频/视频聊天中能达到连贯性。
个别网络摄像头提供了”in-between”视频捕捉分辨率规格,下面是网络摄像头和数字视频摄像头内置的典型设置:
本地视频捕捉分辨率一般都设置为4:3(宽和高)的比例。虽然没有操作比例的必要,当你入门它不是一个坏的想法。Fms3使用相当先进的算法来解决 设置,但用4:3的比例,您能够优化你的摄像头看到的东西。然而,如果您有兴趣了解更详细资料,关于设置工作,并使用不同的长宽比,可以看看这些资源:
3.1.1. 实例化Camera and Microphone 对像
不像其它类的实例化时使用一个构造函数,Camera 和Microphone实例化是使用get()方法。Camera.getCamera( )和Microphone.getMicrophone( )的参数是一个本地系统中的设备(例如:指定要获取哪一个摄像头)。通常情况下,实例化的过程中不带任何参数使用的比较多,例如:
var my_cam:Camera = Camera.getCamera();
实例my_cam是指当前选定的已连接的物理设备。举例来说,如果您使用的是罗技5000相机,插入在USB口,选择的可能会是“QuickCam”,设备名称是摄像头的详情情况所提供的。
无论如何,如果你有多个摄像头连接到了你的电脑,他们有不同的设备。你可以使用从零开始的 索引位置的数组内,选择一个。如果你有一个IEEE 1394 (火线)设备和USB设备,您可以从Adobe Flash Player的设置窗口中选择其中一个。例如,图3-1显示,目前选定的设备在最上方,系统中的6个设备都列在了下面。它们的位置是:
因此,语法是:
var my_cam:Camera = Camera.getCamera(1);
设置当前的摄像头为Creative WebCam Live! Pro #3
一个设备后面带有一个数字,像:#3和$4,这代表在系统中有更多的相同型号的摄像头。在上面的情况上,有两个Creative WebCam Live! Pro 型号的摄像头在本机中。
Figure 3-1. Camera drivers in the Camera Tab of the Settings window
一般来说,在Camera.getCamera()语法中,实例摄像头不使用参数。这样,用户会得到 默认使用的摄像头。如果你将它设置为另一个值,you risk the user not having a camera in the defined slot (for example, 4 or 5) or in an inappropriate slot, such as a digital video camera in a slot for an audio/video chat that would consume too much bandwidth.
Microphone以同样的方式工作。Microphone.getMicrophone()语句选择当前的麦克风设备。图3-2展示了多个麦克风,
Using either Camera.names or Microphone.names, you can access the array of driver names in your current computer.
使用Camera.names或者Microphone.names,可以访问数组中的所有在当前电脑上,可用的设备的名称
3.1.2.默认Camera and Microphone设置
当为任何Fms3的应用程序使用摄像头和麦克风,明确设置参数或者使用默认设置都可以。让您的应用恰恰好涉及一个良好的数目不同的设置。所有的方法都有默认值。在设置在一个简单地应用程序时,看看他们在Macintosh上的默认设置:
图3-2. Microphone drivers in the Microphone tab of the Settings window
表3-1. 默认Camera and Microphone设置
方法
默认设置
Camera
Camera.setKeyFrameInterval( )
15 。这意味着,每十五帧后面的那一
帧是关键帧,而其他帧以由视频压缩算法的内插值替换。较低的值,您的电脑工作和使用更多的带宽。
值 1 表示每一帧都是关键帧,值 3 表示每隔两个帧后的那一帧为关键帧,依此类推。 可接受值为 1 至 48。
Camera.setMode( )
160, 120, 15, true.
请求的捕获宽度,请求的捕获高度,摄像头捕获数据应使用的请求速率,以每秒帧数为单位。 默认值为 15。指定在摄像头不具有满足指定要求的本机模式的情况下是否控制宽度、高度和帧频。 默认值为 true,这意味着支持保持捕获大小
Camera.setMotionLevel( )
50, 2000. 第一个参数:指定调度 activity 事件所需的运动量,可接受值的范围为 0 到 100。 默认值为 50。第二个参数:指定在没有活动的情况下经过的毫秒数,必须经过这么长的时间,Flash 才会认为活动已停止并调度 activity 事件。 默认值为 2000 毫秒(2 秒)。setMotionLevel() 设计用于检测运动,并且不影响带宽用量。即使视频流未检测到运动,仍将发送视频。
Camera.setQuality( )
16384, 0.
第一个参数:设置每秒的最大带宽或当前输出视频输入信号所需的画面质量。由于带宽一般是以比特来测量,默认带宽131072比特/秒的手段,约 131kb的带宽可以让你的video看起来不错。第二个参数:视频的质量。若要指定画面质量可以根据需要进行变化以避免超出带宽,请将 0 传递给 quality。默认设置请求服务器: “给我最好的照片与131 KB的带宽” 。
你可以设置它从0-100之间,除了0以外,
其它值指示视频的质量:1(最低品质,最大压缩)到 100(最高品质,无压缩)。 如果你设置第一个参数为0,第二个参数的值除了0以外,Flash 将根据需要使用尽量多的带宽来保持第二个参数指定的品质。
因此,0,85的意思是:服务器给你使用尽量多的带宽来保持85的质量级别。
Microphone
Microphone.rate
8. 麦克风捕获声音的频率,单位是 kHz。 如果您的声音捕获设备支持 8 kHz,则默认值为 8 kHz。 否则,默认值为您的声音捕获设备支持且高于 8 kHz 的下一个可用捕获级别,通常为 11 kHz。
Microphone.gain
50. 麦克风增益 - 即麦克风在传送信号之前应该将信号放大的倍数。 值 0 指示 Flash 将其乘以 0;即麦克风不传送声音。
您可以将此设置想象为立体声音响上的音量旋钮:0 表示没有音量,50 表示正常音量。 小于 50 的数字表示低于正常音量,大于 50 的数字表示高于正常音量。 有效值为 0 到 100。 用户可以在 Flash Player 的“麦克风设置”面板中更改此值。
Microphone.setSilenceLevel( )
10, 2000.
第一个参数:激活麦克风并调度 activity 事件所需的音量。 可接受值的范围为 0 到 100。第二个参数:在没有活动的情况下经过的毫秒数,必须经过这么长的时间,Flash Player 才会认为声音已停止并调度 dispatch 事件。默认值为 2000(2 秒)。
Microphone.setUseEchoSuppression()
false. 指定是否使用音频编解码器的回音抑制功能。 除非用户已经在 Flash Player 的“麦克风设置”面板中选择了“降低回音”,否则默认值为 false。如果您的 SWF 文件允许用户指定声音输出设备,则当他们指定使用扬声器并且还将使用麦克风时,您可能需要调用 Microphone.setUseEchoSuppression(true)。用户也可以在 Flash Player 的“麦克风设置”面板中调整这些设置。
Copyright 2007-2008 51AS.com Extended in kingcms 鲁ICP备06001158号