随笔 - 8  文章 - 55  trackbacks - 0
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

朋友的Blog

最新评论

阅读排行榜

评论排行榜

视频录制是FCS经常会用到的一个功能,其中重要的一点是要评估视频录制的带宽需求来采用合适的尺寸和速率。
其大致的算法是:
视频宽度 x 视频高度 x 播放速率 (fps) = 总的带宽( bits/sec)
但是要注意的是,在使用FCS录制的时候,使用的是Bps,而不是kbps,要转换(8 bits 1 byte

打开比方,使用320×240的视频窗口以30fps的速率录制,其带宽消耗计算:

 

1: 320 x 240 x 30 fps = 2.3 Mbps 288,000 Bps

 


那么如何根据自身的带宽条件进行不同的视频设置呢,这里有些建议的设置

 

1 : //如果使用的是1M以上的宽度的话,可以选用如下设置:
2 : Camera.setMode(320,240,15);
3
: setKeyFrame(60);
4
: Camera.setQuality(144,000,85 );
5
: Microphone.setRate(22);
6 : //总的消耗带宽:1,196 kbps

 

 

1 : //786 kbps宽带:
2 : Camera.setMode(240,180,12);
3
: setKeyFrame(48);
4
: Camera.setQuality(64,800,85 );
5
: Microphone.setRate(22);
6 : //总的消耗带宽:562 kbps

 

 

1 : //384 kbps宽带:
2 : Camera.setMode(192,144,7);
3
: setKeyFrame(28);
4
: Camera.setQuality(24,192,85 );
5
: Microphone.setRate(11);
6 : //总的消耗带宽:216 kbps

 

 

1 : //56 kbps 拨号:
2 : Camera.setMode(80,60,8);
3
: setKeyFrame(32);
4
: Camera.setQuality(4,800,85 );
5
: Microphone.setRate(8);
6 : //总的消耗带宽:54 kbps

 



当然,你可以通过管理控制台(通过streams项中的I/O显示)来查看你的应用程序所消耗的带宽进行灵活的调试更换。

 

 

 

记得上次有个朋友提到过这个问题,今天又有网友问起,所以就写出来说明下。
一般默认Microphone的声音频率是8kHz ,如果调节更好的声音品质,就需要使用setRate方法,如:

 

1 : myMic.setRate(userRate);
2 : //其中userRate的可能值有: 5, 8, 11, 22 44

 

 

 

 

FlashCom中的Camera, Microphone, LocalConnection, NetConnection,NetStreamSharedObject对象都提供了onStatus事件响应,onstatus事件的返回信息记录在信息对象中。为了能够响应这些事件,你必须创建一个方法来处理信息对象,而最重要的一点是你必须要清楚不同的信息对象返回值和返回类型。
信息对象具有下面的属性。
code 记录信息的返回内容
level 信息等级状态,有status 状态 warning 警告 error 错误
下面对FlashCom中的对象的onstatus返回值作个总结。

 

Camera信息对象
Camera.Muted (Status)
用户拒绝使用camera
Camera.Unmuted (Status)
用户允许使用
camera

LocalConnection信息对象

none (status)
none (error)

Microphone信息对象
Microphone.Muted (Status)
用户拒绝使用microphone.
Microphone.Unmuted (Status)
用户允许使用
microphone.

NetConnect信息对象

NetConnection.Call.Failed (Error)
NetConnection.call
方法调用服务器端的方法或命令失败
NetConnection.Connect.AppShutdown (Error)
服务器端应用程序已经关闭(由于资源耗用过大等原因)或者服务器已经关闭.
NetConnection.Connect.Closed (Status)
连接中断

NetConnection.Connect.Failed (Error)
连接失败
NetConnection.Connect.InvalidApp (Error)
指定的应用程序名称没有找到
NetConnection.Connect.Rejected (Error)
连接被拒绝
NetConnection.Connect.Success (Status)
连接成功

NetStream 信息对象
NetStream.Buffer.Empty (Status)
数据缓冲区为空
NetStream.Buffer.Full (Status)
缓冲区已慢
NetStream.Failed (Error)
传输中有错误发生
NetStream.Pause.Notify (Status)
播放暂停
NetStream.Play.Failed (Error)
播放出错
NetStream.Play.PublishNotify (Status)
发布开始,信息已经发送到所有订阅者
NetStream.Play.Reset (Status)
播放列表重置
NetStream.Play.Start (Status)
播放开始
NetStream.Play.Stop (Status)
播放停止
NetStream.Play.StreamNotFound (Error)
播放的实时流或文件不存在
NetStream.Play.UnpublishNotify (Status)
发布停止,信息已经发送到所有订阅者
NetStream.Publish.BadName (Error)
发布的数据流已经被发布
NetStream.Publish.Idle (Status)
发布者闲置过长
NetStream.Publish.Start (Status)
发布开始
NetStream.Record.Failed (Error)
录制文件出错
NetStream.Record.NoAccess (Error)
没有足够的文件访问权限
NetStream.Record.Start (Status)
文件录制开始
NetStream.Record.Stop (Status)
录制暂停
NetStream.Seek.Failed (Error)
数据流定位出错
NetStream.Seek.Notify (Status)
数据搜索定位成功
NetStream.Unpause.Notify (Status)
恢复播放
NetStream.Unpublish.Success (Status)
停止发布

ShareObject信息对象
SharedObject.BadPersistence (Error)
SharedObject.getRemote
方法传递的参数不匹配
SharedObject.Flush.Failed Error
写入失败
SharedObject.Flush.Success (Status)
写入成功
SharedObject.UriMismatch (Error)
SharedObject.connect
url参数和SharedObject.getRemote方法不一致

 


注意:对于NetStreamNetConnect和远程共享对象而言,在联机情况下onStatus有更多的返回值,这些返回值将会在服务器端信息对象中介绍,其它对象无须联机也可以响应到返回值。

针对以上不同的对象可以指定各自的onstatus方法,Macromedia Flash中提供了一个超级函数叫做System.onStatus ,如果某个对象的onstatus响应的level属性是error,并且没有指定响应操作的时候,Flash会触发System.onStatus事件。
下面的例子演示了如何创建通用的或者特殊的方法来处理信息对象:

 

01 : //创建通用方法
02 : System.onStatus = function (genericError)
03
: {
04 : // 在这里写上详细的处理代码

05 : trace( 'An error has occurred. Please try again.' );
06
: };
07 : // 创建NetConnection对象的onstatus响应方法

08 : // 如果连接返回的值在响应事件中没有定义,并且是error等级的话
09 : // System.onStatus 事件会被响应
10 : nConn.onStatus = function (infoObject)
11
: {
12 : if (infoObject.code == 'NetConnection.Connect.Success'
)
13
: {
14 : trace( 'Successful connection.'
);
15
: }
16 : if (infoObject.code == 'NetConnection.Connect.Failed'
)
17
: {
18 : trace( 'Connection failed.'
);
19
: }
20
: };
21 : // Attempt to open connection

22 : nConn = new NetConnection();
23 : nConn.connect( 'rtmp://myServer.myDomain.com/myRTMPapp' );

 



评论(2) | 引用(0) | 阅读1019

 

评论

 

目前已发表的评论有:

 

1.                     Liu21st 200472718:21星期二 评论

 

请尝试用
newClient.call("updateRoom",null,roomArray);

 

2.                     腰马合一 200472716:46星期二 评论

 

感谢分享,谢谢了。
有一个问题,希望能帮忙看一下。是textChatroom的问题,
目的是可以让新用户登陆时看到已经有的房间:

client-side:
/////////////////////////////////////
nc = new NetConnection();
//
userName和新开房间的名称传给server
nc.connect("rtmp://ip/myChatTest1/"+_root.newRoom, _root.userName, _root.newRoom);
 //
共享对象
users_so = SharedObject.getRemote("users_so", _root.nc.uri, false);
users_so.connect(nc);
/////
设置callBack函数更新 roomList////////////////
nc.updateRoom = function(arr) {
trace(arr);
for (var i = 0; i<arr.length; i++) {
_root.roomList.addItem(arr[i]);
}
};
////////////////////////////////////


server-side
///////////////////////////////////
application.onAppStart = function(){
application.users_so = SharedObject.get("users_so", false);
roomArray=new Array();
        }
application.onConnect = function(newClient, name,room){

application.acceptConnection(newClient);
roomArray.push(room)
newClient.call("updateRoom",roomArray)

//////////////////////////////


在客户端trace一下 updateRoom ,发现他执行了,但找不到形参arr.
请帮忙看一下,先谢谢了。



 

 

 

 

通过将流、多路音频、视频和实时数据添加到您的网站和 Rich Internet Applications 中,实现通信和应用的完美结合。Macromedia Flash Communication Server MX 专为流媒体、丰富媒体消息接发和实时协作度身打造,为开发创新的通信功能和将之部署到最广泛的用户提供了一个简单、强大、开放的环境。

想想在去年的非典时期,远程办公、远程教学已经成了我们的必需,与视频相关的IT产品也就成了人们关注的焦点,视频会议成了这一特殊时期频率最高的交流方式之一。如何快速建立一个网上视频通信解决方案,来满足各行各业,甚至个人用户的需求呢?选择开发工具最重要。理想的网上视频通信解决方案所涵盖的功能至少应该包括几个方面:统一的通信和应用程序、强大的交互式功能、提供实时流媒体能力、实现多路及多用户通信功能、提供实时协作、轻松地开发丰富通信、与应用服务器无缝集成,等等。引至[E维下载].日前,香港Macromedia公司利用其最新发布的Macromedia Flash Communication Server MX 1.6 ColdFusion MX软件,建立起了一个串流视频通信网站,可供香港医护人员与家人及朋友召开在网上多人视像会议。与此同时,香港浸会大学利用最新版本的Flash Communication Server MX来支持整个网上教室的应用,并配合Macromedia MX系列产品,快速部署及开发线上的演示文档系统,实现了实时网上e-Learning技术及解决方案的最佳效果。
Macromedia Flash Communication Server MX
界面
Macromedia Flash Communication Server MX 1.6
具有强大的通信能力,包括流媒体、丰富媒体消息接发和实时协作。其中,流媒体功能使开发人员能够在一个可自定义的播放器环境中集成带有动态图形的流视频和音频,将互联网上的多媒体演出提升到一个全新的境界;通过丰富媒体消息接发功能(如多路、多用户视频和音频聊天),开发人员可以将实时人性化交互和即时消息接发功能添加到网站之中;实时协作功能(包括强大的共享对象技术)能让多个用户共享实时白板和应用上下文中的其他实时数据。

Macromedia Flash Communication Server MX 1.6
具有多项先进功能,在制作随选随播视频影像、实时网上广播、网上视频通信以及视频电邮、制作互动性高的影音丰富媒体应用程序等方面有显著的提高。此外,它还集成了流媒体、实时协同工作、多种影音及文字信息技术,为客户提供多项先进功能。其中,新增设的HTTP Tunneling以及SSL支持,让服务器的内容资料可以实时穿越防火墙及代理服务器;有了MP3的支持,开发人员可以将高质量的音效以串流方式传送给用户。此新版本程序还改善了对音效的支持。同时,音效与视频影像的同步性以及实时串流处理的延迟(latency)管理也得到大幅改善。

新版软件还具有虚拟网站服务器的操作及管理功能。这个服务器新设有对Red Hat Linux 7.3及以上版本的支持功能。此外,新版本亦大大简化了临时进行网站流量增添的操作。
点这里下载-> Macromedia Flash Communication Server MX v1.6
解压密码:http://www.9iv.com/

 

 

 

 

 

Server 1935

 

Admin Port 1111

 

 

 

 

my_date = new Date();

my_file ="mv"+my_date.getTime();

 

dosave = function() {

   myurl="http://www.zjwto.com/rcmv/mv_save.asp?id="+my_file;

   trace(myurl);

   getURL(myurl,"_self","POST");

}                                

posted on 2006-05-30 15:39 blog搬家了--[www.ialway.com/blog] 阅读(1905) 评论(0)  编辑  收藏 所属分类: FMS

只有注册用户登录后才能发表评论。


网站导航: