??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲无砖砖区免费,亚洲日韩国产精品无码av,久久亚洲精品中文字幕三区http://m.tkk7.com/sl2cj/category/11634.html<br>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp---->乞怪猪blog搬家?-[www.ialway.com/blog]--希望l箋(hu)x(chng)!谢谢!^0^zh-cnWed, 28 Feb 2007 05:52:59 GMTWed, 28 Feb 2007 05:52:59 GMT60【{帖】实C(jin)视频U聊功能 http://m.tkk7.com/sl2cj/articles/55996.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Fri, 30 Jun 2006 09:11:00 GMThttp://m.tkk7.com/sl2cj/articles/55996.htmlhttp://m.tkk7.com/sl2cj/comments/55996.htmlhttp://m.tkk7.com/sl2cj/articles/55996.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/55996.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/55996.html【{帖】实C(jin)视频U聊功能
昨天匆忙实现?jin)视频私聊功能,今天把思\再整理下。顺便和各位做个探讨?br />我的基本思\是这L(fng)Q?br />1. 用户d聊天?/font>后在左边的窗口自动显C频(如果(g)到有的话,如果没有则显C相x(chng)字或囄Q这个暂时还没有加)(j)Q?br />2. 点击用户列表中的相应用户名后取得对应的视频文件名Q然后在双的窗口播攑ְ可以?jin)?br />看v来简单,其实不然哦~下面看详l的分析
注意Q下面所有修攚w是基于FlashCom lgQ相关的lg实现׃再详l叙q。只是摘取视频私聊相关部分分析?br />关于自动开启视频的代码修改Q?br />在avlg中的connectҎ(gu)中添?br />1 : //av1_mc 是左边视频窗口的实例名称
2 : if (this.name=='av1_mc') this.startPublish();
q个比较Ҏ(gu)实现Q关键是U聊用户的视频显C?br />因ؓ(f)AVPresencelg的视频发布是this.prefix + this.soName
1 : this.ns.publish(this.prefix + this.soName);
也就是说是以H口的实例名来定位播攄Q要修改为针对用户定位播攄方式Q因此以上代码改?br />1 : this.ns.publish(this.userID);
q样是以用户ID为文件名发布视频文gQ以便于我们下一步选择不同的用h播放相应的视频?br />下一步,是修Ҏ(gu)收视频部分?br />原先接收的方式是当前H口接收Q代码ؓ(f)Q?br />1 : // Starts receiving a stream from another user
2 : FCAVPresenceClass.prototype.startReceive = function() {
3 : // trace('Start Receiving');
4 : this.seat_video.attachVideo(this.ns);
5 : this.ns.play(this.prefix + this.soName);
6 : this.gotoAndStop('receiving');
7 : this.onStartReceive();
8 : };
现在要改为指定播攄口接收视频(q里是双的窗口了(jin)Q,而且要指明接收哪个用L(fng)Q所以加传递用户ID参数Q代码改为:(x)
1 : FCAVPresenceClass.prototype.startReceive = function(userId) {
2 : if (userId !=this.userID){ //如果选择自己Q则不再接收
3 : this.seat_video.attachVideo(this.ns);
4 : this.ns.play(userId);
5 : this.gotoAndStop('receiving'); }
6 : };
接着要修改同步的部分Q否则一旦视频同步就?x)ؕ了(jin)。下面是修改后的代码Q比较下q道了(jin)?br />01 : this.so.onSync = function(list) {
02 : for (i in list) {
03 : userID[this.data.speaker]=this.data.speakerID;//把用户ID保存到数l?br />04 : if (list[ i ].name == 'broadcast') {
05 : if (this.data.broadcast && this.data.speakerID!=this.userID && this.data.speakerID == this.selectUserID) {
06 : this.owner.startReceive(this.data.speakerID);
07 : this.owner.username_txt.text = this.data.speaker;
08 : } else {
09 : this.owner.stopReceive();
10 : this.owner.level.mask._height = 1;
11 : this.owner.username_txt.text = '(Open)';
12 : // Stop
13 : }
14 : }
15 : }
16 : };其中selectUserID是我们点击用户列表后获取到的|要能够获取到q个值首先要在peopleListlg中保存用户信息,在组件onchange事g触发的时候可以获取到用户名?br />我在用户列表的value中保存(sh)(jin)很多信息Q下面是peopleListlg的同步时候添加List数据代码
1 : this.owner.people_lb.addItem(this.data[ i ].name,{ id:i,sex:this.data[ i ].sex,name:this.data[ i ].name,ip:this.data[ i ].ip,cam:this.data[ i ].cam,mic:this.data[ i ].mic });
q些用户信息是通过׃n对象存储在服务器端的
下面是服务器端people.asc文g中的相关实现
1 : FCPeopleList.prototype.connect = function( client,userSex,cam,mic ) {
2 : var cglobal = this.getClientGlobalStorage(client);
3 : var clocal = this.getClientLocalStorage(client);
4 : clocal.id = 'u' + this.getClientID(client);
5 : userName=cglobal.username == null ? ' fc_lurker' : cglobal.username;
6 : this.users_so.setProperty(clocal.id, { name:userName, cam:cam,mic:mic,sex:userSex,ip:client.ip });
7 : }
最后要做的是点击用户列表中的名称后显C相应的视频?br />在onchange事g中写入下面代码就可以?jin)?x)
1 : //av2_mc 是右边窗口的实例名称
2 : av2_mc.username_txt.text = this.getValue().name;
3 : av2_mc.selectUserId = userID[this.getValue().name];
4 : av2_mc.startReceive(userID[this.getValue().name]);
以上要说明了(jin)ZFlashComlg实现U聊的方法,分析的不是很周全Q难免存在些Bug~只是作些交,本h也会(x)不断完善


]]>
[FCS]Server端与Client端method触发与dataq播概念 http://m.tkk7.com/sl2cj/articles/54478.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Thu, 22 Jun 2006 05:46:00 GMThttp://m.tkk7.com/sl2cj/articles/54478.htmlhttp://m.tkk7.com/sl2cj/comments/54478.htmlhttp://m.tkk7.com/sl2cj/articles/54478.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/54478.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/54478.html[FCS]Server端与Client端method触发与dataq播概念
FCSClientServermethod
method.Servermethod
ServerClientfunctionServerClient
prototypeextendClientmethodClientinstance
method
:
Client.prototype.newfun=function(){}

functionClient instance
:
application.onConnect(newClient)=function(){
.....
newClient.newfun=function(){}
}
.Clientmethod
ClientServerfunctionNetconnection
:
nc=new NetConnection();
.....
nc.myfun=function(){}
.sendcallmethod?
call:methodClientnetconnectionServer
netconnectionClient
1.Clientnetconnection.callServerClient method
2.ServerClient.callClientnetconnectionmethod
3.Servernetconnection.callserverclient
ServerClient method
send:ClientmethodSharedObjectnetStream
sendmethodclientclientfunction
function
SharedObjectonSync
send
1.netStreamSharedObjectmethod "myfun"
2.netStream.send("myfun")sharedobject.send("myfun"myvar)client
"myfun".
1.ClientServerdataServerfunction
:ServerSharedObject
Servermessagemethodclientmsg
Client:
nc.call("message" null msg);
Server:
application.onAppstart=function(){
application.chat_content="";
}
application.onConnect=function(newClient){
.......
newClient.message=function(msg){
application.chat_content+=msg;
}
}
2.ClientClientdataClientfunction
:clineturl_txt
client
Client:
somethod
lobby_so.openPage=function(receive_url){
getURL(receive_url);
}
sendclient
lobby_so.send("openPage"url_txt);

3.ServerdataClient
:serverclient
functionmc...server
:serverserverclientserver
clientfunctionclient

Server:
application.onConnect=function(newClientpwd){
if(pwd=="ok"){
application.acceptConnection(newClient);
newClient.call("get_message"nullmessage);
}else{
application.rejectConnection(newClienterrObj);
}
}
Client:
........
nc.get_message=function(message){};

4.ServerdataClient
:serverclientclientclient
:clinetServerapplication.onDisconnect handler
handlerclient
?
1.remote SharedObjectSOClientso.onSync
remote SharedObjectso
soClientso.onSync handler
Server
application.onDisconnect=function(newClient){
userlist_so.setProperty(newClient.name"");
}
:serverclientnc.onStatushandlerinfo.code

2.soserverapplication.clients
clientclientclient_funserversendvar
server:
application.onDisconnect=function(newClient){
for(var i=0;i<application.clients.length;i++) {
application.clients[i].call("client_fun"nullsendvar);
}
}
Client:
nc.client_fun=function(myvar){ }


Server getRemote ShareObject Client Server
application.abc_so = SharedObject.get("abc_so", false);
application.abc_so.send("msgFromSrvr", msg);

Client
abc_so = SharedObject.getRemote("abc_so", abc_nc.uri, false);
abc_so.msgFromSrvr = function(msg) {
showMsg(msg);
};

FCShelp ..


]]>
【分享】关于编译FFMPEG的初U教E?原创 http://m.tkk7.com/sl2cj/articles/54475.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Thu, 22 Jun 2006 05:43:00 GMThttp://m.tkk7.com/sl2cj/articles/54475.htmlhttp://m.tkk7.com/sl2cj/comments/54475.htmlhttp://m.tkk7.com/sl2cj/articles/54475.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/54475.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/54475.html【分享】关于编译FFMPEG的初U教E?原创
原文来自http://www.kelew.com/

关于~译FFMPEG的初U教E?br />1.首先我们要下载相兛_Pq里不多_(d)大家按照我的地址M载文件就好了(jin)

CODE:

MINGW下蝲地址Q?a target="_blank">http://prdownloads.sourceforge.net/m...1.exe?download
然后在下载MSYS Q?a target="_blank">http://prdownloads.sf.net/mingw/MSYS...0.exe?download
好先喝点咖啡Q哈?br />首先我们先安装一下MINGWQ我的目录是c:/MINGWQ默认的Q然后接下来要安装MSYS

q里要有些注意,安装目录看到别h是这么说的,C:\MinGW\bin\1.0Q意思就是安装在你的MINGW目录下的BIN里面

OKQ开始安装吧Q注意安装完毕以后有个DOS界面Q这里至关重要,误}慎操?br />
按照囄的操作即可,




安装好以后,我们在下载一个LAMEQ我不知道是q嘛用的Q反正就安装?br />
CODE:

下蝲地址Q?a target="_blank">http://prdownloads.sourceforge.net/l...ar.gz?download
然后解压到C:\MinGW\bin\1.0\lame-3.97

好了(jin)Q启动桌面上的MSYSQ然后出入一下代?br />首先q入lame目录Q呵?br />下面步骤

CODE:

1.cd c:
2.cd MinGw
3.cd bin
4 cd 1.0
5.cd lame-3.97
然后开始编译,一下是步骤

CODE:

1 ./configureQ根据的你电(sh)脑速度军_快慢Q?br />2. make
3. make install
好了(jin)Q你可以下蝲FFMPEG文gq行~译?jin),哈?br />首先下蝲FFMPEG
然后解压到磁盘里面,同样使用MSYSq入该目录输入一下代?br />
CODE:

./configure --enable-memalign-hack --enable-mingw32 --enable-mp3lame --extra-cflags=-I/local/include --extra-ldflags=-L/local/lib
执行完毕以后Q在输入

CODE:

make
执行完毕以后Q在输入

CODE:

make install
OK?jin)吧Q)(j)Q如果存在问题,希望高手U错?/div>

]]> 【推荐】编译RED5的教E?http://m.tkk7.com/sl2cj/articles/54473.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Thu, 22 Jun 2006 05:41:00 GMThttp://m.tkk7.com/sl2cj/articles/54473.htmlhttp://m.tkk7.com/sl2cj/comments/54473.htmlhttp://m.tkk7.com/sl2cj/articles/54473.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/54473.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/54473.html
【推荐】编译RED5的教E?/strong>

在eclipse中用svn获取Red5源程?/u>
使用eclipse来过滤源文g列表,使之更可?/u>
用ant来编译源E序,q运行red5 server

eclipse的SVN插gQ?a target="_blank">http://subclipse.tigris.or...
watersound 当前ȝ  (tng)
2006-05-08, 12:06 PM  (tng) #2
watersound
普通会(x)?/div>

注册日期: 05-12
帖子: 58
_֍: 0
现金: 38 闪币
资: 38 闪币
默认 回复: 【推荐】编译RED5的教E?/strong>

RED5现在的最新版本ؓ(f)0.41
介绍:http://www.osflash.org/red5
下蝲地址:http://www.osflash.org/red5/version.4.1_release
ghghghf

]]>
【原创?扫盲)q程׃n对象SharedObject的用?http://m.tkk7.com/sl2cj/articles/54472.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Thu, 22 Jun 2006 05:36:00 GMThttp://m.tkk7.com/sl2cj/articles/54472.htmlhttp://m.tkk7.com/sl2cj/comments/54472.htmlhttp://m.tkk7.com/sl2cj/articles/54472.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/54472.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/54472.html【原创?扫盲)q程׃n对象SharedObject的用?/strong>
学习(fn)fcs也有差不多一个月?感觉最有特色的东西q是SharedObject.
今天写个基本的教程关于?W一ơ写教程(以前都是看教E?_-),手心(j)都出汗了(jin),?j)怕写得有错误D者就惨了(jin) ,
斑竹有空看看,如果我的问题多就马上删掉,免得误了(jin)大家.或是q在q里指出?br />有问题的话在帖中大家讨论,
SharedObject有不东?本地操作׃说了(jin)(怿很多人没接触fcs也用q?;p说远E共享对象吧.
基本的应用流E是:
my_nc = new NetConnection();
my_nc.connect("rtmp:/app",变量1,变量2,...);
mySO=getRemote("mySO",my_nc.uri,false)
mySO.connect(my_nc);
mySO.onSync=function(info){
}
mySO.data[property]=newValue
//----------------------------------------------------------------------------------------------------------------

下面解析一?
my_nc = new NetConnection();
my_nc.connect("rtmp:/app",变量1,变量2,...);
mySO=getRemote("mySO",my_nc.uri,false)

// mySO:׃n对象名字;
// my_nc.uri:׃n对象׃nq接到my_nc.uri的用?
// false:q可以用true或空;英文解析?
// 1. null or false :persistence not on the server
// 2. true: persistence on the server (not on the local);
// 3. A full or partial local path to the shared object
// persistence on the server and local
// 我也不大清楚q个意?但我ȝ:false:当所有用户都停掉
// ?mySO清空;true: 不清I?


mySO.connect(my_nc);
//q接mySO到服务器
mySO.onSync=function(info){
}

//mySO事g
改变它的?font color="red">(一旦改变它的值就?x)触发onSync事g):

mySO.data[property]=newValue

到这里就可以基本应用,当然如果你想在服务器也创Z个对应的mySO来也可以?br />application.mySO = SharedObject.get("mySO", false);
但要注意的是在服务器里操作mySO的属性是要用setProperty来改?或是把一个对象作为它的属?那么操作对象׃用用setProperty?
//----------------------------------------------------------------------------------------------------------------


下面来重点说下mySO的事?onSync

SharedObject有两个事?onStatus和onSync
两个基本上是一L(fng),但是有一?不知道是不是q点使得大家不用onStatus):onStatusҎ(gu)值和旧值相同时是不?x)触发这个事件?
而onSync却不是否相同都?x)触?
先看一个例?
my_So.onSync = function(info) {
for (name in info) {
trace("[sync] Reading Array Object #"+name+" code ("+info[name].code+","+info[name].name+")");
switch (info[name].code) {
case "change" :
var property = info[name].name;
var newValue = this.data[property];
_root[property+"_in"].text = newValue;
break;
case "success" :
break;
case "reject" :
break;
case "clear" :
break;
case "delete" :
break;
trace("data is updated");
}
}
};

操作:
mySO.data[mytxt]=50

//----------------------------------------------------------------------------------------------------------------------


q脆在上面注析?
my_So.onSync = function(info) {
//info:事gonSync触发的返回信? 是个一l数l?两个属?code,name)
for (name in info) {
//name:变化的属性名,q个是一个遍?看看在这ơ事件中有哪些属性改变(sh)(jin),(常常只有一个属性改?
trace("info[name].code:"+info[name].code+" info[name].name: "+info[name].name);
//输出info[name].code:相对于本客户端的事gcd:如下的switch;
//输出info[name].name:属性名?br />switch (info[name].code) {
case "change" :
//当事件类型是"改变"?基本是在这里广播事件的,其它的每个客户都执行q里的语?br />var _property = info[name].name;
var _newValue = this.data[_property];
_root[_property].text = _newValue;
break;
case "success" :
//当事件类型是"成功"?注意:当本客户端上改动触发自已?成功";而其它客L(fng)则是"改变";
break;
case "reject" :
//当事件类型是"修改不成??
break;
case "clear" :
//q个用得比较?yu)?不是很清?Ҏ(gu)p的意思自已也不是很理?
//This value is received by a Flash player that connected to a SharedObject for the first time.
//Clear is also sent if the server and client data are so far out of sync that the client dumps
its version of the SharedObject and resynchronizes itself completely.
break;
case "delete" :
//当mySOldelete掉时
break;
trace("data is updated");
}
}
}
//----------------------------------------------------------------------------------------------------------------
说到my_SO不得不提的是my_SO.send()q个函数(我很喜欢?,它也是类似o(j)nSync的广播事件的用?q个很好?
用法:
mySO.send("toggleBall", 变量1, 变量2...);
对应在client或是server端的mySO属性函?
mySO.toggleBall=function( 变量1, 变量2..){
q个函数在其它所有的客户端执?像onSync一L(fng)效果
}


]]> 【求助】FMS上FLV文g合ƈ的问?http://m.tkk7.com/sl2cj/articles/54471.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Thu, 22 Jun 2006 05:32:00 GMThttp://m.tkk7.com/sl2cj/articles/54471.htmlhttp://m.tkk7.com/sl2cj/comments/54471.htmlhttp://m.tkk7.com/sl2cj/articles/54471.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/54471.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/54471.html 默认 【求助】FMS上FLV文g合ƈ的问?/strong>

现在我的FMS服务器上有一些FLV文gQ我惛_一个批处理E序Q把q些文g跟自q一个FLV文g合ƈQ这是在|上扄合ƈҎ(gu)。不q,我是刚接触FMS和AS语言的。完全搞不清方向Q不知道如何下手Q连代码往哪写都不清楚。。。谁能说说大概的步骤p?jin),q里我先谢谢?jin)?br />===================================================
用SSAS合成FLV
使用SSAS把两个或多个FLV文g合成一个FLV,可以控制FLV的长?SSAS写法如下:

//先得C个流
myStream = Stream.get("TIGER");)//?TIGER是一个不存在的FLV,不可以写入扩展名"
//IF一下得到的是否可以用
if (myStream){
myStream.play("video_1", -1, 10, true);//video_1是一个已存在的FLV文g
myStream.play("video_2", -1, -1, true);//video_2是一个已存在的FLV文g
myStream.record();//写入一个新文g,文g名是"TIGER";
}


]]>Flash Communication Server(FCS) FAQhttp://m.tkk7.com/sl2cj/articles/53898.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Tue, 20 Jun 2006 01:47:00 GMThttp://m.tkk7.com/sl2cj/articles/53898.htmlhttp://m.tkk7.com/sl2cj/comments/53898.htmlhttp://m.tkk7.com/sl2cj/articles/53898.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/53898.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/53898.htmlFlash Communication Server(FCS) FAQ

使用Flash Communication Server也有一D|间了(jin)Q把一些常见的问题列出Q让新手走一些弯路吧Q?img class="middle" alt=":)" src="http://blog.inmedia.cn/img/smilies/icon_smile.gif" />

[更多Q]

Q: Flash Communication Server是什么?有什么功能?
A: Flash Communication Server?a target="_blank">macromedia开发的以Flash Player为客L(fng)的网l视音频交互应用的服务器端YӞUFCS或者FlashcomQ可以基于FCS和Flash Player开发诸如流媒体视媄(jing)音频Ҏ(gu)、直? 视频聊天以及(qing)一些实时协作应用,比如交互白板{。具体功能看q里?/p>

Q: 那里可以下蝲FCS?
A: 请到q里下蝲Q目前可以单独下载的最新版本号是MX 1.5 Updater Release 2, flex内嵌?.6版,不能单独下蝲Q不q有非官方的剥离版本?/p>

Q: 安装FCS mx 1.5以后, 在flash mx 2004中用FCS的组件开发应用,但是lg无法正常工作Q这是ؓ(f)什么?
A: FCS mx 1.5的组件是for mx的,请下?a target="_blank">lg更新?/p>

Q: Flash客户端与FCS通过何种协议通讯Q?br />A: RTMP协议(Real Time Messaging Protocol)?/p>

Q: FCS如何判断Flash客户端要调用哪一个应用程序?
A: 开发FCS应用Ӟ必须先约定一个应用程序名Q如appNameQƈ在FCS安装目录下的applications目录?例如∶C:\Program Files\Macromedia\Flash Communication Server MX\applications)建立一个appName文g夹,每个FCS应用E序都必dapplications目录下徏立自q文g夹,客户端就可以通过相应的rtmp地址Q如rtmp:\appName或者rtmp://127.0.0.1/appName来访问?/p>

Q: 服务器端脚本文g的位|和命名?br />A: 服务器端脚本文g应该在相应的FCS应用E序目录?例如∶C:\Program Files\Macromedia\Flash Communication Server MX\applications\appName)或者该目录的scripts目录下,文g后缀名可以ؓ(f)asc或者jsQ一般以main.asc或者main.js作ؓ(f)入口文gQFCS在执行服务器端脚本的旉循以下优先原?以应用程序名为appNameZ)Q?scripts/main.asc > main.asc > scripts/main.js > main.js > scripts/appName.asc > appName.asc > scripts/appName.js > appName.js?/p>

Q: 我修改了(jin)服务器端脚本Q但是没有效果,q是Z么?
A: 服务器端脚本修改后必dApp Console里面reload相应的application才会(x)生效?/p>

Q: FCS可以实现Ҏ(gu)客户端带宽流Z同质量的flv文g吗?
A: 可以Q具体请?a target="_blank">q里?/p>

Q: 如何创徏一个FCS应用Q?br />A:q篇教程?x)是一个好L(fng)Q?/p>

不断增加?..



]]>
FlashCom发布和播放MP3 http://m.tkk7.com/sl2cj/articles/53193.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Fri, 16 Jun 2006 03:25:00 GMThttp://m.tkk7.com/sl2cj/articles/53193.htmlhttp://m.tkk7.com/sl2cj/comments/53193.htmlhttp://m.tkk7.com/sl2cj/articles/53193.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/53193.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/53193.html FlashCom发布和播放MP3
播放MP3文g
我们知道QFlash中默认的式播放格式是Flv格式Q但是在应用E序中,你可以通过客户端脚本来播放MP3音频文g和ID3信息Qƈ使用服务器端脚本发布到stream?br />你需要上传MP3文g到服务器端的/streams/application_instance目录QMacromedia FCS MX 1.5 在录制视频流的时候会(x)自动创徏 streams 目录Q如果不存在Q你也可以手动创建)(j)。例如你有个名ؓ(f)CDPlayerApp应用E序Q你可以上传MP3文g?applications/CDPlayerApp/streams/application_instance目录?br />通过讑֮׃n目录Q你q可以在其它应用E序之间׃nMP3?br />扑ֈVhost.xml文g中的节点Q在中添加需要共享的目录Q如Q?br />foo;c:\data
表示所有含有foo名称的目录都?x)被定向到c:\data目录Q如foo/bar?x)被定向为c:\data\bar.flv?br />详细的Vhost.xml说明可以参考FlashCom理手册中相关部分?br />然后Q通过Stream.play指o(h)指定播放的\径和惌播放的MP3文g。ؓ(f)?jin)播放MP3文gQ我们需要?NetStream对象的playҎ(gu)Q或者用MC对象的attachAudioҎ(gu)Q特别需要注意的是,在播放文件前面要加上mp3播放标识前缀 mp3:Q我们来看代码示例:(x)
引用:
1 : //非共享方式播?br />2 : vidObj.attachVideo(mystream);
3 : mystream.play( 'mp3:bolero' );
4 : //文gbolero.mp3在FCS服务器的 C:\mp3_files 目录下面
5 : //该目录在vhost.xml中被映射到虚拟目?mp3dir
6 : movieObj.attachAudio(mystream2);
7 : mystream2.play( 'mp3:mp3dir/bolero' );

提示: 在?NetStream.play Ҏ(gu)的时候如果不指定视频或音频格式,?x)默认?f)FLV格式, 所以在播放MP3的时候,你必L定格式播放。也是_(d)flv:granada和granada都会(x)播放文ggranada.flvQ但是mp3:bolero只会(x)播放文gbolero.mp3。注意,q里播放的文仉在服务器端?/font>

要播放MP3文g的ID3信息Q必M用播攑։~id3Qƈ定义相应的回调函数来捕捉id3数据。例如,昄bolero.mp3文g的ID3 信息Q?br />
引用:
1 : //displays the ID3 tag of bolero.mp3
2 : mystream.play( 'id3:bolero' );
3 : //callback function to capture the ID3 data. Data will be displayed with
4 : //'info.' preceding the data from the tag, for example, info.songtitle.
5 : mystream.onId3 = function (info){
6 : for (i in info){
7 : trace(i + ':' + info[ i ]);
8 : }
9 : }

支持的MP3 ID3信息的版?br />FlashCom server 1.5 支持UTF-8, UTF-16, and ISO-8859-1 格式?1.0, 2.3?2.4.版本的ID3信息Qƈ且只支持文本数据Q例如:(x)歌曲名、作者、备注和录制旉{?br />
使用服务器端脚本
你还可以使用服务器端的Stream对象来播放MP3和获取MP3文g的长度,更详l的可以参考服务器端脚本参考中的Stream.play and Stream.length
要删除MP3文g可以使用Application.clearStreamsҎ(gu)Q?br />下面来看一个例子,通过Stream.playҎ(gu)来发布MP3Q?br />
引用:
01 : // Set up the server stream
02 : application.myStream = Stream.get( 'music' );
03 : if (application.myStream)
04 : {
05 : // Publish the MP3 file bolero.mp3 to the stream 'music'
06 : // Use the mp3: prefix in front of the stream name and specify 0 for the
07 : startTime parameter to indicate the server should play the recorded stream
08 : bolero.mp3
09 : application.myStream.play('mp3:bolero', 0, -1);
10 : }

使用 Stream.play Ҏ(gu)来捕获和播放 ID3 信息Q请参考下面的代码CZQ?br />
引用:
01 : // Set up the server stream
02 : application.myStream = Stream.get( 'description' );
03 : application.myStream.onId3 = function(info)
04 : {
05 : for (i in info)
06 : {
07 : trace(i + ': ' + info[ i ]);
08 : }
09 : }
10 : if (application.myStream)
11 : {
12 : // Publish the ID3 text tag data of bolero.mp3 to a stream 'description'.
13 : // Use the id3: prefix in front of the stream name and specify 0 for the
14 : startTime parameter
15 : application.myStream.play( 'id3:bolero', 0, -1);
16 : }


]]>FCSlg:(x)ConnectionLightlghttp://m.tkk7.com/sl2cj/articles/51337.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Thu, 08 Jun 2006 06:00:00 GMThttp://m.tkk7.com/sl2cj/articles/51337.htmlhttp://m.tkk7.com/sl2cj/comments/51337.htmlhttp://m.tkk7.com/sl2cj/articles/51337.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/51337.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/51337.html FCSlg:(x)ConnectionLightlg

2004q?1?7?0:01星期?[ FMS ]


q个一个表C目前连接状态的lgQ绿色表C正常,U色表示断开q接Q黄色表C响应gq,灰色表示未连接。点击该指示灯后?x)显C接信息显C框Q其中包含了(jin)延迟速率和即时的上传、下载的速率?br />如果使用SimpleConnectlg的话Q不需要添加Q何代码就可以使用ConnectionLightlg?br />如果没有使用SimpleConnectlgQ则需要添加下面的代码?br />
1 : nc=new NetConnection();
2 : nc.connect( 'rtmp:/connect_test');
3 : light_mc.connect(nc); //light_mc是ConnectionLightlg的实例名

ConnectionLightlg可以讄的两个参Cؓ(f)Q?br />measurementInterval 定时侦测间隔旉 默认gؓ(f)2U?br />latencyThreshold 延迟最大时?默认gؓ(f)0.1U,过则变黄灯

以上的参C可以通过讄FCConnectionLight对象的属性来完成
FCConnectionLight.measurementInterval
FCConnectionLight.latencyThreshold

FCConnectionLight对象的方法:(x)
FCConnectionLight.connect()
FCConnectionLight.close()

可以在不同的指示灯的状态下d自己的行为?br />


]]>
FCSlg:(x)使用SimpleConnectlghttp://m.tkk7.com/sl2cj/articles/51332.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Thu, 08 Jun 2006 05:59:00 GMThttp://m.tkk7.com/sl2cj/articles/51332.htmlhttp://m.tkk7.com/sl2cj/comments/51332.htmlhttp://m.tkk7.com/sl2cj/articles/51332.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/51332.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/51332.html FCSlg:(x)使用SimpleConnectlg

2004q?1?2?0:12星期?[ FMS ]


当你使用FCSlg开发应用程序的时候,l常需要添加不同的lgQ而每个组仉需要连接到服务器,你可以用相同的|络q接实例把应用程序中所有的实例q接到服务器QSimpleConnectlg是用来控制所有的应用E序对象到服务器的连接,另外q提供了(jin)用户d界面?br />我们把上一中的例子通过SimpleConnectlg来重新完成。上中我们在peopleListlg中用了(jin)NetConnect对象来连接服务器Q如果用了(jin)SimpleConnectlgQ就不需要自己添加连接代码了(jin)?br />下面来详l看一下如何用SimpleConnect的:(x)
1. 在服务器端的applications目录下创Z个com_test_simcon目录Q目录下面创Z个main.asc文gQ添加下面代码行
1 : load( 'components.asc' );

注意Q你可以把main.asc文g命名为com_test_simcon.asc
2. 在FlashMX2004中创Z个新的文Ӟ拖入peoplelistlgQ实例名为peopleList_mc
3. 拖入simpleConnectlgQ在属性对话框中,讄Application Directory?rtmp:/com_test_simcon
注意Q如果你的服务器不是本地Q那么需要用完整地址
4. 双击Communication Components属性,在弹出的对话框中dpeopleList_mc
5. 试swf文gQ在d框中输入用户名,用户列表中就?x)显CZ(jin)
比v上篇中的例子Q方便之处就是每d一个FCSlg在应用程序中Q只需要在simpleConnectlg的Communication Components属性框中添加实例名可以了(jin)Q而不需要ؓ(f)每个lgdq接代码?br />
如果你不想用SimpleConnectlg的话Q那么需要在服务器端的application.onConnectҎ(gu)中添加代码,以便向服务器注册用户名?br />
1 : gFrameworkFC.getClientGlobals(newClient).username = newUserName;

无论什么时候用了(jin)onconnectҎ(gu)Q你必L的接受用户端的q接Q如果你没有使用SimpleConnectlg的话Q徏议在main.asc文g中添加如下代码:(x)
01 : load( 'components.asc');
02 : // Listen for the new connection to this application.
03 : // newUserName is a parameter passed in from the client-side nc.connect call.
04 : application.onConnect = function (newClient, newUserName)
05 : {
06 : // Set the global user name with the user name passed into this function.
07 : gFrameworkFC.getClientGlobals(newClient).username = newUserName;
08 : // Accept the connection from the user.
09 : application.acceptConnection(newClient);
10 : // Note that if your application requires additional code following the
11 : // explicit acceptConnection, you must place that code in an
12 : // application.onConnectAccept statement (required when using components)
13 : }

关于onConnectAccept ?onConnectReject Ҏ(gu)的用请参考Applications对象?br />
如果你用了(jin)SimpleConnectlg的话Q在服务器端的main.asc文g中只需要包含下面一行代码就可以?jin)?br />
1 : load( 'components.asc' );


SimpleConnectlg比较重要的方法主要有Q?br />connect
close
setUsername
在以后的lg中也?x)有涉?qing)到SimpleConnectlg的部分?br />
深入SimpleConnectlgQ请参考下面文章:(x)
SimpleConnectlgd的问?/font>
SimpleConnectlg一点小技?/font>
Application对象


]]>
FCSlg:(x)RoomListlghttp://m.tkk7.com/sl2cj/articles/51334.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Thu, 08 Jun 2006 05:59:00 GMThttp://m.tkk7.com/sl2cj/articles/51334.htmlhttp://m.tkk7.com/sl2cj/comments/51334.htmlhttp://m.tkk7.com/sl2cj/articles/51334.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/51334.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/51334.html FCSlg:(x)RoomListlg

2004q?1?1?0:01星期?[ FMS ]


好像q挺多h喜欢使用roomlistlgQ我倒是没有怎么使用q个lgQ所以原本对q个lg的作用也有点模糊Q总觉得这个组件的作用不大Q因为完全可以通过动态改变simpleconnect的参数来实现d不同的房_(d)(j)Q不q看?jin)下q个lgq是其它复杂的用,写这文章的同时我也学习(fn)一下?br />RoomList的组件的作用是让用户可以创徏、进入和删除戉KQ确切的说是一个应用程序实例)(j)。该lgcM于一个应用程序管理处Q可以控制用戯问不同的应用E序?br />RoomListlg有两U用方式:(x)
1. 通过虚拟大厅d不同的应用程序实例;
2. 使用大厅应用E序作ؓ(f)入口Q登录另外的戉K应用E序
W一U方法是比较单的Q不q其实道理都相同。下面以W二U方式ؓ(f)例说明?br />要用RoomListlgQ你必须要创Z个应用程序:(x)大厅和房间。打个比方的话,大厅应用E序可以认ؓ(f)是v始入口,而房间才是用L(fng)目的地。其实roomlistlg可以dMfcs应用E序Q你也可以打开同一个应用程序的不同实例Q只要这些实例具有唯一的会(x)话ID?br />如果你用simpleconnectlg的话Qƈ不需要在客户端添加代码就可以使用roomlistlg。服务器端的大厅应用E序目录的main.asc文g中需要加载component.asc文g?br />在房间应用程序的服务器脚本中Q也需要加载component.asc文gQƈ取得用户和房间的名称Q以?qing)管理房间和用户l计{。中间包含了(jin)在服务器端的来回带参数调用,但是q不控制用户是否以及(qing)q接到该应用E序。如果需要单独用roomlistlg的话Q在戉K应用E序中,你必M递用户名和应用程序实例名。你使用?jin)simpleconnectlg的话Q这些都是自动完成的?br />下面我们来分析一个简单的例子?br />首先创徏大厅应用E序Q步骤如下:(x)
1. 在服务器端创建lobby_com_test目录Qƈ创徏main.asc文gQ添加下面代?br /> (tng)load('components.asc');
2. 创徏客户端文Ӟ名ؓ(f)lobby_com_test. dSimpleConnectlgQ应用程序\径ؓ(f)rtmp:/lobby_com_test
3. droomlistlgQ实例名为roomList_mc
4. 在simpleconnectlg列表中添加roomList_mc实例
5. 讑֮roomlistlg的目标room应用E序位置Q如../chat_room_test/chat_room_test.htmlQ这个\径是调用|站的html文gQ根据你的实际位|调_(d)(j)
6. 创徏一个房间应用程序(或者用之前开发的M聊天室应用程序)(j)Q名UCؓ(f)chat_room_test
7. 在chat_room_test.fla中添加simpleconnectlgQ实例名为connector_mcQ应用程序\径ؓ(f) rtmp:/chat_room_testQ?br />8. 发布应用E序的时候,?x)生成一个chat_room_test.html文g
9. 更改HTML参数讑֮Q把文gbody标识内容替换?

10. 在服务器端的chat_room_test目录下面创徏main.asc文gQ其中添加代码如下:(x)
01 : // 加蝲lg包含文g
02 : load( 'components.asc' );
03 :
04 : //在应用程序连接事件中增加用户ID到全局变量Q允许客L(fng)q接Q调用方法获取房间实例名U等
05 : application.onConnect = function( newClient, username, password ) {
06 : // Save the user name
07 : gFrameworkFC.getClientGlobals(newClient).username = username;
08 : // Accept the new user’s connection
09 : application.acceptConnection(newClient);
10 : // Get the instance name and update the room count
11 : if (this.name.indexOf('/'
) != -1) {
12 : newClient.room = this.name.substr(this.name.lastIndexOf('/')+1);
13 : roomConnect(newClient);
14 : }
15 : }
16 :
17 : //定义q接到房间的q回值处?/font>
18 : function roomResult(newClient) {
19 : this.onResult = function(roomName) {
20 : newClient.call( 'FCSimpleConnect/connector_mc/roomName' ,null,roomName);
21 : }
22 : }
23 :
24 : //戉Kq接时候传递用户选择的房间名Uͼ调用roomResult得到q回?/font>
25 : function roomConnect (newClient, room) {
26 : // Create a new NetConnection
27 : lobby_nc = new NetConnection();
28 : lobby_nc.onStatus = function (infoStatus) {
29 : if (infoStatus.code == 'NetConnection.Connect.Success' ) {
30 : lobby_nc.call( 'FCRoomList/roomlist_mc/roomConnect', new roomResult(newClient), newClient.room);
31 : }
32 : };
33 : // Connect to the lobby application
34 : lobby_nc.connect( 'rtmp://localhost/lobby_com_test' );
35 : }
36 :
37 : // 断开q接的事件响?/font>
38 : // 客户端断开q接Q通知大厅应用E序
39 : application.onDisconnect = function( client ) {
40 : if (client.room != null) {
41 : roomDisconnect(client.room);
42 : }
43 : }
44 : //调整戉K数据Q移除用hC?/font>
45 : function roomDisconnect (room) {
46 : // Create a new NetConnection
47 : lobby_nc = new NetConnection();
48 : lobby_nc.onStatus = function (infoStatus) {
49 : if (infoStatus.code == 'NetConnection.Connect.Success' ) {
50 : lobby_nc.call( 'FCRoomList/roomlist_mc/roomDisconnect' , null, room);
51 : }
52 : }
53 : // Connect to the lobby application
54 : lobby_nc.connect( 'rtmp://localhost/lobby_com_test' );
55 : }
保存main.asc文gQ重启应用程序,按照下面步骤试r(sh)oomlistlg?br />1. 打开包含lobby_com_test.swf文g的lobby_com_test.htmlQƈd服务?br />2. 增加戉K到房间列?br />3. 选择戉KQ进?br />4. 一个新?chat_room_test应用E序实例H口?x)打开
5. 用同L(fng)方式打开另一个房间实?/font>


]]>
我的聊天室开发教E(三)(j)Q和服务器之间传递参?/title><link>http://m.tkk7.com/sl2cj/articles/51329.html</link><dc:creator>blog搬家?-[www.ialway.com/blog]</dc:creator><author>blog搬家?-[www.ialway.com/blog]</author><pubDate>Thu, 08 Jun 2006 05:56:00 GMT</pubDate><guid>http://m.tkk7.com/sl2cj/articles/51329.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/51329.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/51329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/51329.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/51329.html</trackback:ping><description><![CDATA[ <h1> <font size="2">我的聊天室开发教E(三)(j)Q和服务器之间传递参?/font> </h1> <div> <h2> <span id="arttime"> <font size="2">2004q?1?0?0:11星期?[ </font> <a > <font size="2">FMS</font> </a> <font size="2"> ] </font> </span> <a title="用狗狗订? target="_blank"> <font size="2"> <img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" src="http://www.gougou.com/imgs/btn-sub80.gif" border="0" /> </font> </a> </h2> <br /> </div> <div style="FONT-SIZE: 14px; WIDTH: 95%; LINE-HEIGHT: 155%"> <span id="zoom"> <font size="2">在用FCS原来的组件过E中Q默认的与服务器之间传递的参数只有username变量Q但是在开发自qFlashcom应用E序Ӟl常需要向服务器传递更多的参数。要做到q一点,我们需要修改组件和服务器端的代码?br />先D个简单的例子。在SimpleConnectlgq接服务器的时候,是通过call指o(h)呼叫服务器端的方法?br />如果我们希望客户端和服务器之间除?jin)传递用户名之外Q还想传递用L(fng)P便于后台操作数据库)(j)、用h别Q用于客L(fng)昄性别标识Q、摄像头是否可用、麦克风是否可用Q用于列表显C状态)(j){参敎ͼ可以修改服务器端的simpleconnect.asc文gconnectҎ(gu)Q增加相应的参数Q?br /></font> <div class="hbzlntb" id="code"> <div style="MARGIN-LEFT: 5pt"> <font size="2"> <font color="#999966">1</font> : FCSimpleConnect.prototype.connect = <font color="#ff9900">function</font>( client, username, userId, userSex,cam,mic) { <br /><font color="#999966">2</font> : <font color="#ff9900">var</font> clocal = this.getClientLocalStorage(client);<br /><font color="#999966">3</font> : <font color="#ff9900">var</font> cglobal = this.getClientGlobalStorage(client);<br /><font color="#999966">4</font> : cglobal.username = username;<br /><font color="#999966">5</font> : clocal.id = <font color="#ff00ff">'u'</font> + this.getClientID(client);<br /><font color="#999966">6</font> : this.users_so.setProperty(client.id, { id:userId, name:username, sex:userSex,cam:cam,mic:mic });<br /><font color="#999966">7</font> : <font color="#ff9900">return</font> clocal.id;<br /><font color="#999966">8</font> : }</font> </div> </div> <br /> <font size="2">接下来客L(fng)q接FCSimpleConnect对象的方式就按照服务器端定义的方法来调用可以了(jin)Q例如:(x)<br /></font> <div class="hztvfdv" id="code"> <div style="MARGIN-LEFT: 5pt"> <font size="2"> <font color="#999966">1</font> : this.nc.call(this.prefix + <font color="#ff00ff">'connect'</font> , res, this.username, this.UserSex, this.Camera, this.Mic);</font> </div> </div> <br /> <font size="2">其实q些参数在simpleconnect.asc中ƈ没有实际的作用,只是用来说明向服务器传递变量的Ҏ(gu)Qƈ且方便以后的扩展。如果希望ɘq些参数在全局有效Q可以注册服务器端全局变量。注册方式类gQ?br /></font> <div class="ztdjpnl" id="code"> <div style="MARGIN-LEFT: 5pt"> <font size="2"> <font color="#999966">1</font> : cglobal.username = username;</font> </div> </div> <br /> <font size="2">那么当我们需要接受服务器端的参数呢,又应该如何处理呢Q下面通过peoplelistlg来看下客L(fng)如何实现接受服务器端的参数?br />服务器端people.asc中connectҎ(gu)代码为:(x)<br /></font> <div class="bbdphxf" id="code"> <div style="MARGIN-LEFT: 5pt"> <font size="2"> <font color="#999966">1</font> : FCPeopleList.prototype.connect = <font color="#ff9900">function</font>( client,userSex,cam,mic ) { <br /><font color="#999966">2</font> : <font color="#ff9900">var</font> cglobal = this.getClientGlobalStorage(client);<br /><font color="#999966">3</font> : <font color="#ff9900">var</font> clocal = this.getClientLocalStorage(client);<br /><font color="#999966">4</font> : clocal.id = <font color="#ff00ff">'u'</font> + this.getClientID(client);<br /><font color="#999966">5</font> : userName=cglobal.username == <font color="#ff9900">null</font> ? <font color="#ff00ff">'</font> fc_lurker'</font> : cglobal.username;<br /><font color="#999966">6</font> : this.users_so.setProperty(clocal.id, { name:userName, cam:cam,mic:mic,sex:userSex,ip:client.ip });<br /><font color="#999966">7</font> : }</div> </div> <br /> <font size="2">在连接peoplelistlg的时候,?x)呼叫服务器端的FCPeopleList对象的callҎ(gu)?br /></font> <div class="tnxztbz" id="code"> <div style="MARGIN-LEFT: 5pt"> <font size="2"> <font color="#999966">1</font> : this.nc.call(this.prefix + <font color="#ff00ff">'connect'</font> , <font color="#ff9900">null</font>, this.UserSex, this.Camera, this.Mic );</font> </div> </div> <br /> <font size="2">在同步用户列表的时候,Ҏ(gu)代码修改为:(x)<br /></font> <div class="tlxzjpf" id="code"> <div style="MARGIN-LEFT: 5pt"> <font size="2"> <font color="#999966">01</font> : this.so.onSync = function(list) { <br /><font color="#999966">02</font> : this.owner.people_lb.removeAll();<br /><font color="#999966">03</font> : <font color="#ff9900">var</font> totalUsers = 0;<br /><font color="#999966">04</font> : <font color="#ff9900">var</font> totalLurkers = 0;<br /><font color="#999966">05</font> : <font color="#ff9900">for</font> (<font color="#ff9900">var</font> i <font color="#ff9900">in</font> this.data) { <br /><font color="#999966">06</font> : <font color="#ff9900">if</font> (this.data[ i ].name == <font color="#ff00ff">'</font> fc_lurker'</font> ) { <br /><font color="#999966">07</font> : totalLurkers++;<br /><font color="#999966">08</font> : } <font color="#ff9900">else</font><font color="#ff9900">if</font> (this.data[ i ].name != <font color="#ff9900">null</font>) { <br /><font color="#999966">09</font> : totalUsers++;<br /><font color="#999966">10</font> : this.owner.people_lb.addItem(this.data[ i ].name,{ id:i,sex:this.data[ i ].sex,name:this.data[ i ].name,ip:this.data[ i ].ip,cam:this.data[ i ].cam,mic:this.data[ i ].mic });<br /><font color="#999966">11</font> : }<br /><font color="#999966">12</font> : }</div> </div> <br /> <font size="2">q样Q把每个用户的相关信息全部记录在listlg的data属性中Q便于后l的其它操作?br />另外一个比较实际的应用是在chatlg的用过E中Q需要判断用L(fng)w䆾Q和发送私聊信息的时候需要知道私聊对象的名字Q这些都需要扩展服务器参数。这些地方各位可以仔l参详源文g?br />服务器端相关的asc文g下蝲Q[ </font> <a target="_blank"> <font size="2">up/1101744642.rar</font> </a> <font size="2"> ]<br />PSQ如果需要在服务器端昄中文Q请把服务器端脚本文件{换ؓ(f)utf8~码格式?/font> </span> </div> <img src ="http://m.tkk7.com/sl2cj/aggbug/51329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-06-08 13:56 <a href="http://m.tkk7.com/sl2cj/articles/51329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的聊天室开发教E(二)(j)Q添加聊天表?/title><link>http://m.tkk7.com/sl2cj/articles/51327.html</link><dc:creator>blog搬家?-[www.ialway.com/blog]</dc:creator><author>blog搬家?-[www.ialway.com/blog]</author><pubDate>Thu, 08 Jun 2006 05:55:00 GMT</pubDate><guid>http://m.tkk7.com/sl2cj/articles/51327.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/51327.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/51327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/51327.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/51327.html</trackback:ping><description><![CDATA[ <h1> <font size="2">我的聊天室开发教E(二)(j)Q添加聊天表?/font> </h1> <div> <h2> <span id="arttime"> <font size="2">2004q?1?8?3:39星期?[ </font> <a > <font size="2">FMS</font> </a> <font size="2"> ] </font> </span> <a title="用狗狗订? target="_blank"> <font size="2"> <img style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" src="http://www.gougou.com/imgs/btn-sub80.gif" border="0" /> </font> </a> </h2> <br /> </div> <div style="FONT-SIZE: 14px; WIDTH: 95%; LINE-HEIGHT: 155%"> <span id="zoom"> <font size="2">q个问题是网友提到的最多的问题Q也的确是我在开发过E中遇到问题最多的地方。今天大致归U下Q不知道能不能全面?br />主要是因为Flash本n对HTML的支持程度不I才导致在Flashcom应用E序中用表情符可通过其它方式来处理。网上也有不同的实现方式Q但是我认ؓ(f)smileyTextFieldlg是最方便的一U?br /></font> <a target="_blank"> <font size="2">SmileyTextField表情lg介绍</font> </a> <br /> <a target="_blank"> <font size="2">更多的表情实现方?/font> </a> <br /> <font size="2">但是Q结合到FlashCom应用E序中,却很多问题:(x)<br />1. </font> <a target="_blank"> <font size="2">表情W号L昄在第一?/font> </a> <font size="2"> <br />2. </font> <a target="_blank"> <font size="2">表情W号位置Y坐标偏移</font> </a> <br /> <font size="2">3. </font> <a target="_blank"> <font size="2">表情lgҎ(gu)版Listlg的媄(jing)?/font> </a> <br /> <font size="2">4. </font> <a target="_blank"> <font size="2">表情lg的中文字W显C问?/font> </a> <br /> <font size="2">l过不断的测试和交流Q在Flashcom聊天室中集成表情lg的问题都已经解决Q请详细阅读和参考以上日志。完整的SmileyTextField代码请参考源文g?br />主要影响到的和需要修改代码的lg是:(x)PeopleListlg和Chatlg?br />Chatlg主要是要修改和和服务器端的结合部分,因ؓ(f)SmileyTextFieldlg只是负责前端昄的{换,同步工作仍然要通过FlashCom服务器。这部分的具体实施细节留待Chatlg的用描q?br />q里再讲下如何添加自q表情W号Q一般用默认的表情W号也够用了(jin)。因为,要添加自定义的表情符h些复杂?br />首先Q找到隐藏的assets囑ֱQ选中smiLibrary_mc实例->~辑后,可以在第二扑ֈ表情MC库,除了(jin)d自定义表情MC为,不要忘(sh)(jin)注册表情实例Q通过使用registerSmiley(smiVarsObj)Ҏ(gu)?br />smiVarsObj是一个表情对象,主要包含属性:(x)<br /></font> <div class="dlxrbbp" id="code"> <div style="MARGIN-LEFT: 5pt"> <code> <ol> <li> <span style="COLOR: #000000"> <font size="2"> <span style="COLOR: #0000cc">_w (tng)</span> <span style="COLOR: #006600">: (tng)</span> </font> <span style="COLOR: #0000cc"> <font size="2">表情MC的宽?br /></font> <li> <font size="2">_h (tng)</font> </li> </span> <span style="COLOR: #006600"> <font size="2">: (tng)</font> </span> <span style="COLOR: #0000cc"> <font size="2">表情MC的高?br /></font> <li> <font size="2">_code (tng)</font> </li> </span> <span style="COLOR: #006600"> <font size="2">: (tng)</font> </span> <span style="COLOR: #0000cc"> <font size="2">表情对应的代?br /></font> <li> <font size="2">_link (tng)</font> </li> </span> <span style="COLOR: #006600"> <font size="2">: (tng)</font> </span> <span style="COLOR: #0000cc"> <font size="2">表情对应的实例名<br /></font> <li> <font size="2">_anim (tng)</font> </li> </span> <span style="COLOR: #006600"> <font size="2">: (tng)</font> </span> <span style="COLOR: #0000cc"> <font size="2">是否有动?br /></font> <li> <font size="2">_code和_link属性是必须的,其实q有_show (tng)和?tng)_base (tng)属性不太常用,可以不用理会(x)?/font> </li> </span> <font size="2"> </font> </span> </li> </ol> </code> <br /> </div> </div> <br /> <br /> <font size="2">注册Ҏ(gu)如:(x)<br /></font> <div class="nzjvnvt" id="code"> <div style="MARGIN-LEFT: 5pt"> <font size="2"> <font color="#999966">1</font> : <font color="#ff9900">#initclip</font> 2<br /><font color="#999966">2</font> : SMI_NS.registerSmiley({ _code:':kiss:'</font>, _link:'smi_kiss', _w:37, _anim:true });<br /><font color="#999966">3</font> : <font color="#ff9900">#endinitclip</font></div> </div> <br /> <br /> <font size="2">曄一直想把SmileyTextFieldlg的显C框换成V2lg的文本框Q但是问题很多,有朋友解决不妨交下</font> </span> </div> <img src ="http://m.tkk7.com/sl2cj/aggbug/51327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-06-08 13:55 <a href="http://m.tkk7.com/sl2cj/articles/51327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的聊天室开发教E(一Q:(x)d配置文ghttp://m.tkk7.com/sl2cj/articles/51326.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Thu, 08 Jun 2006 05:54:00 GMThttp://m.tkk7.com/sl2cj/articles/51326.htmlhttp://m.tkk7.com/sl2cj/comments/51326.htmlhttp://m.tkk7.com/sl2cj/articles/51326.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/51326.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/51326.html 我的聊天室开发教E(一Q:(x)d配置文g

2004q?1?7?1:45星期?[ FMS ]


一直没有顾上,今天开个头Q也不知道什么时候可以写完?br />如果不知道我的聊天室是什么, 看这里吧 ?br />今天首先讲下加蝲聊天配置文g
加蝲配置文g是通过调用php文g来动态生成XML文gQ然后通过Flash本nXML对象的方法来d?br />首先Q我们要定义php文g调用路径
1 : var PhpPath = 'chat/' ; //E序执行路径

q定义了(jin)配置变量的保存数l?br />
1 : _global.Setup = new Array(); //配置数组


接下来就?strong>d配置文g

1 : var myXML = new XML() ;
2 : myXML.ignoreWhite = true ;
3 : myXML.load(PhpPath + 'config.php?rand=' + Math.random());

注意使用rand参数是ؓ(f)?jin)防止缓?br />
定义加蝲完成事g
1 : myXML.onLoad = function(succes){
2 : if(succes){
3 : //dXML 数据
4 : } else {
5 : showMsg( '配置文gd错误Q? );
6 : }
7 : }


dXML数据的方?br />
1 : var root = this.firstChild ;
2 : nodes = root.childNodes ;
3 : for(var j=0; j < nodes.length; j++)
4 : {
5 : varName = nodes[j].attributes.name;
6 : varExpr = nodes[j].attributes.expr;
7 : Setup[varName] = varExpr;//把传递的变量存入数组
8 : }


我定义的XML配置文g格式如下Q?br />
1 : <data >
2 : <var name='变量名称'
expr='变量? />
3 : 。。。。。?br />4 : < /data >

至于如果取得变量的值就要根据你使用的编E语a?jin),如果你不惛_态生成XML文gQ或者觉得没有一些变动的参数的话Q就可以直接dxml文g的方式,q样׃需要WEB环境的支持,myXML.load的时候直接加载XML文g可以了(jin)。如果用PHP、ASP{动态语aQ请按照各自的方式获取和定义变量的倹{?br />
其中?strong>各个变量含义如下
01 : AppDirectory 应用E序目录
02 : MaxConnect 最大连接数
03 : UserName 用户?br />04 : UserSex 性别
05 : UserLevel 用户U别
06 : RoomId 戉K?br />07 : RoomName 戉K?br />08 : MaxUser 戉K最多用h
09 : WebSiteUrl 服务器地址
10 : ChatStatus 聊天状?/font>

你可以根据自ql的需要增减参?br />
XML数据d完成后,p开始做一?strong>聊天室系l的初始?/strong>工作?jin),Q当?dng)在这里你可以加上条g判断Q如聊天状态chatStatus的值是否ؓ(f)1{)(j)。首先要做的事情是连接服务器?br />
1 : simpleconnect.appDirectory= 'rtmp://' + Setup[ 'WebSiteUrl' ] + '/' + Setup[ 'AppDirectory' ];
2 : simpleconnect.serverConnect(Setup[ 'UserName' ], Setup[ 'RoomId' ]);


另外Q在q里可以Ҏ(gu)配置参数来做条g判断Q如是否隐藏理员功?br />
1 : if (Setup[ 'UserLevel' ]==1){
2 : clearBut._visible = true; //清屏
3 : kickBut._visible = true; //th
4 : banBut._visible = true; //止
5 : lookBut._visible = true; //查看IP
6 : }


其它斚wQ就是要(g)用L(fng)摄像头和麦克风是否可?br />q里使用?jin)两个方?br />checkForCam() (g)摄像头
checkForMic() (g)麦克风
具体请参考源文g
Ҏ(gu)?hu)(g)情冉|讄配置数组
1 : if(checkForCam()==1) Setup[ 'Camera' ]=1;
2 : else Setup[ 'Camera' ]=0;
3 : if(checkForMic()==1) Setup[ 'Mic' ]=1;
4 : else Setup[ 'Mic' ]=0;

在这个部分,你可以添加自q条g判断?jin)?br />
现在d配置文g的工作和pȝ初始化的工作已经完成Q其实大家可以根据我的实现方式发挥,不要拘惔于我的代码实玎ͽ


]]>FlashCom Port Test工具 (01-12-2005) http://m.tkk7.com/sl2cj/articles/51025.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Wed, 07 Jun 2006 01:37:00 GMThttp://m.tkk7.com/sl2cj/articles/51025.htmlhttp://m.tkk7.com/sl2cj/comments/51025.htmlhttp://m.tkk7.com/sl2cj/articles/51025.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/51025.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/51025.html FlashCom Port Test工具 (01-12-2005)

MacromediaE站有一個連接FlashCom?/font> 測試工具 Q通常客戶的End User遇到連接問題Q我都會叫他們叫End User到哪裡測試一下,結果報告我,通常問題只有一個,大公叔R有FirewallQ員工連出外面一定經過Proxy ServerQ通常1935這些Port一定封?jin),所以基於測試結果,我才可以提供可行解決Ҏ(gu)?/font>

可是Q測試工具在Macromedia ServerQEnd User能夠連上不代表能夠連上客戶自己FlashCom。MacromediaE站那個工具其實隱藏兩個Input TextFieldQ可以連向其他ServerQ但沒有理由叫End User自行輸入。而且Q真實FlashCom安全a定Q一定將其他外來Domain連接擋了(jin)?/font>

因此有必要每個FlashCom部vServer都應該有這樣測試工具Q於是我下載(j)?jin)Macromedia那個工具並改做?jin)?/font> FlashComPortTest.swf Q只要將它放在自己ServerQ它支援FlashvarsQhost和appQhost是FlashCom路徑Qapp是一個可供連接測試的Application InstanceQ最單是?lt;FlashCom>/applications建立一個FolderQ不用放main.ascQapp{於它就可以。例如:(x)FlashComPortTest.swf?host=mydomain.com&app=porttest

其他似工具

本文章由 luar D?/font>


]]>
連接FlashCom服務器或Flash Remoting Gateway跨網?Across Domain)的問? (15-08-2003) http://m.tkk7.com/sl2cj/articles/51024.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Wed, 07 Jun 2006 01:33:00 GMThttp://m.tkk7.com/sl2cj/articles/51024.htmlhttp://m.tkk7.com/sl2cj/comments/51024.htmlhttp://m.tkk7.com/sl2cj/articles/51024.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/51024.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/51024.html 連接FlashCom服務器或Flash Remoting Gateway跨網?Across Domain)的問?/strong> (15-08-2003)

所連接跨網域FlashCom服務器意思就是:(x)SWF文g在domainA.comQFlashCom服務器在domainB.comQ在SWF文g中用Q?/font>

my_nc = new NetConnection();
my_nc.connect("rtmp://www.domainB.com/appsInst");

我測試過Q這是可以的,忽然有一個奇惻I豈不是可以偷別h的FlashCom服務器來用?當然啦,別h的main.asc有你需要用的程序?/font>

所連接跨網域Flash Remoting Gateway意思就是:(x)SWF文g在domainA.comQFlash Remoting Gateway在domainB.comQ在SWF文g中用Q?/font>

NetServices.setDefaultGatewayUrl("http://www.domainB.
com/flashremoting/gateway.aspx");
gatewayConnection=NetServices.createGatewayConnection();

我測試過Q這個當然是不可?/font>的,因為Flash Remoting Gateway只是x(chng)Q跟著就可以連接Remote ServicesQ如果可以這樣做,所有h都不用Macromedia的產品,哈哈?/font>

本文章由 luar D?/font>


]]>
Hello World (02-05-2003) http://m.tkk7.com/sl2cj/articles/51023.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Wed, 07 Jun 2006 01:31:00 GMThttp://m.tkk7.com/sl2cj/articles/51023.htmlhttp://m.tkk7.com/sl2cj/comments/51023.htmlhttp://m.tkk7.com/sl2cj/articles/51023.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/51023.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/51023.html Hello World (02-05-2003)
這是最單的範例,當Flash連到FlashCom中一個Application後,它會Send一句Hello WorldiFlash?br />
在applications下徏立一個叫helloworld Folder後,建立一個純文字檔main.ascQ裡面入:(x)
												application.onConnect = function(newClient) {
 (tng) (tng) (tng) (tng) application.acceptConnection(newClient);
 (tng) (tng) (tng) (tng) newClient.call("msgFromSrvr", false, "Hello World");
}

										
它作用時是當有Flashq連上它時Q它?yu)會Call那個Flash中一個負責與FlashCom聯繫的NetConnection Object的一個自定Method叫msgFromSrvrQ並傛_參數"Hello World"?br />
在Flash MX中,Frame 1輸入Q?br />
												fc = new NetConnection();
fc.connect("rtmp:/helloworld");
fc.msgFromSrvr = function(msg) {
 (tng) (tng) (tng) (tng) trace(msg);
};

										
測試qQ就可以在OutputH口中見到Hello World? 注意Q?/u>
新手E常面對的問,是E常來回修改Flash MX和main.asc中的ActionScriptQ但測試qL有改應,原因是因為凡main.ascE過修改後,都必須Reload那個Application才有效?br />
Ҏ(gu)是在Flash MX Menu Bar選Window>Communication App InspectorQ登入後在Active Application Instances怽那個ApplicationQ例如:(x)helloworldQ按View Detail後,再按Reload AppQ按OKQ再測試q便可?br />
[
源文?/font> ]

本文章由 luar D?/font>
意見
  • 請問是否所有的應用都必須徏立在applications這個文件夾??
    如果我想攄在其他位|可以嗎??

    ?/font> zipli ?3-05-2003D

  • 可以攑֜其他地方Q不過你要修改C:\Program Files\Macromedia\Flash Communication Server MX\conf\_defaultRoot_\_defaultVHost_\Vhost.xml裡面的一句:(x)
    <AppsDir>?\Program Files\Macromedia\Flash Communication Server MX\applications</AppsDir>Z新地斏V?/font>



]]>
安裝? (01-05-2003) http://m.tkk7.com/sl2cj/articles/51020.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Wed, 07 Jun 2006 01:30:00 GMThttp://m.tkk7.com/sl2cj/articles/51020.htmlhttp://m.tkk7.com/sl2cj/comments/51020.htmlhttp://m.tkk7.com/sl2cj/articles/51020.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/51020.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/51020.html 安裝?/strong> (01-05-2003)

當你安裝FlashCom 1.0試用版或者真正版?Personal或Professional)時,安裝E序會問你安裝Development模式或者Production模式。在解釋兩者分別前Q先認識5點:(x)

FlashCom Applicationi構
一個FlashCom Application分為Client Presentation?qing)Application Files兩部分,前者就是被E民可以看到的部分,x(chng)HTML和swf文gQ後者就是在Server裡對這個FlashCom Application的設?main.asc)、Server-side ActionScript、Shared Objects、FLVq{?/font>

FlashCom Application跟FlashCom聯繫Ҏ(gu)
一般網頁,是通過HTTP跟Server聯繫Q但是FlashCom Application跟FlashCom聯繫是不用經HTTPQ它是自定一個Protocol叫RTMPQ因此你可以直接用Flash Player看FlashCom ApplicationQ都可以連到FlashCom去,這只限於Local製作時Q當你完成FlashCom ApplicationQ要廣大的h看到你的?j)血Q你要將Client Presentation(x(chng)HTML和swf文g)的部分放在Web Server中,別h通過Browser看到你那個FlashCom Application的FlashqQFlashq暗地裡就是用RTMP跟FlashCom聯繫?/font>

Client Presentation?qing)Application Files攄Folder
名思義QClient Presentation要放在Web Server攄頁的地方QW(xu)indows的IIS是Inetpub\wwwrootQUnix/Linux通常是usr\yourName\public_html。Application Files必須攑֜你安裝FlashCom的Folder下一個叫applications的地?例如QC:\Program Files\Macromedia\Flash Communication Server MX\applications)Q每個FlashCom Application都必須在applications下徏立自qFolder?/font>

Development模式的作?/u>
通常Flash Developer都喜歡將fla和swf攑֜deploy的地方,E常Ctrl+Enter進行測試QDevelopment模式是那個applications的地斚w搬到Web Server?Inetpub\wwwroot\FlashCom\applications)Q方便你進行測試?/font>

Production模式的作?/u>
x(chng)Deploy的情形,你的作品已經完成Q可以公布天下,叫所有h來看你的作品Q但是將Application Files攑֜Web Server裡,人家有會偷取你的a定、源文g、Shared ObjectQ因此Production模式是要將applications攑֜FlashCom的Folder下,即C:\Program Files\Macromedia\Flash Communication Server MX\applications?/font>

補充
FlashCom 1.5提供的Developer Edition免費版本Q安裝時自動以Production模式d裝?/font>



]]>
Flash 8 摄像头拍? http://m.tkk7.com/sl2cj/articles/50715.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Tue, 06 Jun 2006 04:00:00 GMThttp://m.tkk7.com/sl2cj/articles/50715.htmlhttp://m.tkk7.com/sl2cj/comments/50715.htmlhttp://m.tkk7.com/sl2cj/articles/50715.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/50715.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/50715.html Flash 8 摄像头拍?

作者:(x) hawkOnFlying  旉Q?2005-12-28 文档cdQ原创 来自Q?/font> 蓝色理想
览l计 total:7345 | year:5785 | Quarter:1482 | Month:108 | Week:46 | today:9

前几天帮朋友做一个东西用到的 code Q因为很久不?Flash coding ?jin)。所以也很关?Flash 8 的新?Calss。但听大家说q有q个功能。本想从|上找段教程?code 来做。可是发现国内还没有cM的。就只能自己动手丰衣食?jin)?/font>

开始做法:(x)
W一步:(x)在库中徏立一个视频元Ӟcd选择Q视??ActionScript 控制)?br />W二步:(x)视频元件拖到场景中Qƈ调整寸到想要的大小。ƈ起名为“my_video?br />W三步:(x)在时间u中粘入下边的 code Q?/font>

var my_video:Video;
my_video._x=100;
my_video._y=40;
var my_cam:Camera = Camera.get();
my_cam.setMode(180, 140, 10, true);
my_video.attachVideo(my_cam);

shutter.onRelease = function() {
 (tng)myBitmap = new flash.display.BitmapData(180, 240, true, 0);
 (tng)myBitmap.draw(my_video);
 (tng)var tempObj = _root.createEmptyMovieClip("photo", 100);
 (tng)tempObj._x = 300;
 (tng)tempObj._y = 40;
 (tng)tempObj.attachBitmap(myBitmap, 1, "always", true);
};

Testing 发现有问题,拍出来照片只?160x120 的区域有囑փ。ƈ且图像变形了(jin)?/font>

什么地方出?jin)问题呢Q?/font>

最后发?my_video 复制到场景中调整大小时ƈ不是改变 my_video.width ?my_video.height 属性,而是改变 my_video._width ?my_video._height 属性。原有视频元件的寸只有 160x120 。这q当于?my_video 作了(jin)形变。?BitmapData.draw() 是不?x)考虑源元件的形变的?strong>官方的说法是Q?/strong>?MovieClip 对象不对此调用用其M舞台中{换。该?MovieClip 对象?x)被视?f)存在于库或文件中Q没有矩阵{换、没有颜色{换,也没有؜合模式。如果?zhn)希望通过使用q剪辑自n?transform 属性来l制q剪辑Q则可以使用它的 Transform 对象来传递各U?transformation 属性?/strong>

我开始没注意他给出的解决办法。我x(chng)?draw() 不考虑源元件的形变Q那只能自己在输出的照片元g上想办法做Ş变(sh)(jin)。于是有?jin)下面这D?code Q?

var my_video:Video;
my_video._x=100;
my_video._y=40;
var my_cam:Camera = Camera.get();
my_cam.setMode(180, 140, 10, true);
my_video.attachVideo(my_cam);

shutter.onRelease = function() {
 (tng)myBitmap = new flash.display.BitmapData(160, 120, true, 0);
 (tng)myBitmap.draw(my_video);
 (tng)var tempObj = _root.createEmptyMovieClip("photo", 100);
 (tng)tempObj._x = 300;
 (tng)tempObj._y = 40;
 (tng)tempObj._width= 180;
 (tng)tempObj._height = 240;
 (tng)tempObj.attachBitmap(myBitmap, 1, "always", true);
};

q下照片是想要的大小?jin),而且囑փ也没有了(jin)变Ş。但发现囑փ没有摄像头显C的清晰?br />想了(jin)一下,那是当然Qdraw() 不考虑源元件的形变Qdraw时my_video 被当?160x120 来draw?jin)?br />那能不能通过改变 my_video.width ?my_video.height 属性来改变 my_video 的尺寸而不是将 my_video 作Ş变呢Q不能!Q!my_video.width ?my_video.height 属性是只读属性?/font>

解决Ҏ(gu)Q?br />W一步:(x)用视频编辑Y件制作一?180x240 寸?贞的白色 mov 视频文g?br />W二步:(x)?Macromedia Flash 8 Video Encoder mov视频文g转ؓ(f) flv 视频文g?br />W三步:(x)在库中徏立一个视频元Ӟcd选择Q嵌?与时间u同步)?br />W四步:(x)视频元件拖到场景中Qƈ起名为“my_video”Testing 发现 my_video.width ?my_video.height 属性ؓ(f) 180x120 ?br />W五步:(x)在时间u中粘入下边的 code Q?/font>

var my_video:Video;
my_video.clear()
my_video._x=100;
my_video._y=40;
var my_cam:Camera = Camera.get();
my_cam.setMode(180, 140, 10, true);
my_video.attachVideo(my_cam);

shutter.onRelease = function() {
 (tng)myBitmap = new flash.display.BitmapData(160, 120, true, 0);
 (tng)myBitmap.draw(my_video);
 (tng)var tempObj = _root.createEmptyMovieClip("photo", 100);
 (tng)tempObj._x = 300;
 (tng)tempObj._y = 40;
 (tng)tempObj._width= 180;
 (tng)tempObj._height = 240;
 (tng)tempObj.attachBitmap(myBitmap, 1, "always", true);
};

好了(jin)Q现在所有问题都解决?jin)?/font>



]]>FlashCom中的主要对象和组?/title><link>http://m.tkk7.com/sl2cj/articles/50326.html</link><dc:creator>blog搬家?-[www.ialway.com/blog]</dc:creator><author>blog搬家?-[www.ialway.com/blog]</author><pubDate>Sun, 04 Jun 2006 12:17:00 GMT</pubDate><guid>http://m.tkk7.com/sl2cj/articles/50326.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/50326.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/50326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/50326.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/50326.html</trackback:ping><description><![CDATA[     摘要: FlashCom中的主要对象和组? FlashCom中的主要对象和组?FlashCom中主要的内置对象有:(x)1 Camera Q摄像机Q对象:(x)获取摄像机的影像和设定媄(jing)像的品质? VideoQ视讯)(j)对象Q显CZ摄像取或者f(xi)lashcom服务器播攄影像? MicrophoneQ麦克风Q对象:(x)取得麦克风的声音来源和相兌定? SharedOb...  <a href='http://m.tkk7.com/sl2cj/articles/50326.html'>阅读全文</a><img src ="http://m.tkk7.com/sl2cj/aggbug/50326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-06-04 20:17 <a href="http://m.tkk7.com/sl2cj/articles/50326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FCS camera对象的用这一节主要讲qcamera对象的用,包括camera的用优化、设|合适的带宽和如果得一个camera用于多个应用E序?/title><link>http://m.tkk7.com/sl2cj/articles/50323.html</link><dc:creator>blog搬家?-[www.ialway.com/blog]</dc:creator><author>blog搬家?-[www.ialway.com/blog]</author><pubDate>Sun, 04 Jun 2006 12:08:00 GMT</pubDate><guid>http://m.tkk7.com/sl2cj/articles/50323.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/50323.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/50323.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/50323.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/50323.html</trackback:ping><description><![CDATA[ <strong>FCS camera对象的?/strong> <div style="PADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word" onload="this.style.overflowX='auto';"> <span id="zoom">q一节主要讲qcamera对象的用,包括camera的用优化、设|合适的带宽和如果得一个camera用于多个应用E序?br />Camera对象允许你从摄媄(jing)机捕捉视频ƈq加CQ何一个MC中,当用FlashMx Com server的时候,q可以在联机对象间传输、显C,甚至录制捕捉到的视频。应用这个特性,你可以开发例如视频会(x)议、视频聊天等应用E序。当然你也可以不通过服务器来使用Camera对象Q例如可以捕捉你的视频ƈ附加到某个MC?br /><strong>Camera常用的属性:(x)</strong><br /><div class="drlfzxj" id="code"><div style="MARGIN-LEFT: 5pt"><code><ol> (tng) <li><span style="COLOR: #000000"><span style="COLOR: #0000cc">bandWidth (tng)每秒U传送的最大字节数<br /> (tng) <li>currentFps (tng)当前传送的fps?br /> (tng) </li><li>fps (tng)setModeҎ(gu)讑֮的fps?br /> (tng) </li><li>name (tng)当前使用的摄像机名称<br /> (tng) </li><li>names (tng)可用视频捕捉讑֤的数l?br /> (tng) </li><li>index (tng)可以视频讑֤的烦(ch)引?br /> (tng) </li><li>keyFrameInterval (tng)关键帧间?br /> (tng) </li><li>loopback (tng)是否压羃影像<br /> (tng) </li><li>motionLevel (tng)灉|??00 (tng)数D高动作越q钝<br /></li><li>width (tng)影像的宽?br /></li><li>height (tng)影像的高?br /></li><li>quality (tng)传送的影像品质0?00<br /></li><li>muted (tng)客户端是否允许Flash取用本地端的摄像?<br /></li></span></span></li><li>currentFps (tng)当前传送的fps?br /> (tng) </li><li>fps (tng)setModeҎ(gu)讑֮的fps?br /> (tng) </li><li>name (tng)当前使用的摄像机名称<br /> (tng) </li><li>names (tng)可用视频捕捉讑֤的数l?br /> (tng) </li><li>index (tng)可以视频讑֤的烦(ch)引?br /> (tng) </li><li>keyFrameInterval (tng)关键帧间?br /> (tng) </li><li>loopback (tng)是否压羃影像<br /> (tng) </li><li>motionLevel (tng)灉|??00 (tng)数D高动作越q钝<br /></li><li>width (tng)影像的宽?br /></li><li>height (tng)影像的高?br /></li><li>quality (tng)传送的影像品质0?00<br /></li><li>muted (tng)客户端是否允许Flash取用本地端的摄像?<br /></li></ol></code><br /></div></div><br /><br />需要创建Camera对象Q用下面代码:(x)<br /><div class="rnztnlj" id="code"><div style="MARGIN-LEFT: 5pt"><font color="#999966">1</font> : MyCamera = Camera.get();<br /><font color="#999966">2</font> : <font color="#669966">//如果有多个视频设备,请用indexQ烦(ch)引|(j)指定讑֤</font><br /><font color="#999966">3</font> : MyCamera = Camera.get(index);<br /><font color="#999966">4</font> : </div></div><br />如果在不同的|域讉KQ就?x)弹出窗口让用户认使用或是拒绝使用Q?br /><div align="center"><a target="_blank"><img style="CURSOR: pointer" onclick="" alt="囄点击可在新窗口打开查看" src="http://blog.liu21st.com/up/1090592095.gif" onload="imgresize(this);" border="0" /></a></div><br />当用户对弹出H口响应后就?x)触发onStatus事gQ请参考muted参数<br />当然也可以记住用L(fng)选择Q点击鼠标右键出现设|窗?br /><div align="center"><a target="_blank"><img style="CURSOR: pointer" onclick="" alt="囄点击可在新窗口打开查看" src="http://blog.liu21st.com/up/1090592463.gif" onload="imgresize(this);" border="0" /></a></div><br />在该H口选择允许Qƈ选中CQ下ơ就不会(x)弹出认H口?jin)?br />更高U的CZ是弹?gu)备选择H口让用户选择Q?br /><div class="phldxnd" id="code"><div style="MARGIN-LEFT: 5pt"><font color="#999966">1</font> : camArray = Camera.names;<br /><font color="#999966">2</font> : <font color="#ff9900">if</font> (camArray.length == 1){ <br /><font color="#999966">3</font> : Camera.get();<br /><font color="#999966">4</font> : }<br /><font color="#999966">5</font> : <font color="#ff9900">else</font><br /><font color="#999966">6</font> : System.showSettings(3);//弹出视频讄H口<br /><font color="#999966">7</font> : Camera.get();</div></div><br /><div align="center"><a target="_blank"><img style="CURSOR: pointer" onclick="" alt="囄点击可在新窗口打开查看" src="http://blog.liu21st.com/up/1090594226.gif" onload="imgresize(this);" border="0" /></a></div><br /><br />Flashcomguru ?arckid 提供?jin)一个很好的(g)Camera的方法,把它略作修改如下<br /><div class="nxptdbz" id="code"><div style="MARGIN-LEFT: 5pt"><font color="#999966">01</font> : <font color="#ff9900">function</font> checkforCam() { <br /><font color="#999966">02</font> : camArray = Camera.names; <br /><font color="#999966">03</font> : <font color="#ff9900">if</font> (camArray.length >= 1){ <br /><font color="#999966">04</font> : temp_cam = Camera.get(); <br /><font color="#999966">05</font> : if(temp_cam == -1) <br /><font color="#999966">06</font> : trace('视频讑֤正忙'); <br /><font color="#999966">07</font> : <font color="#ff9900">else</font><br /><font color="#999966">08</font> : trace('视频讑֤可用'); <br /><font color="#999966">09</font> : <font color="#ff9900">delete</font> temp_cam; <br /><font color="#999966">10</font> : } <font color="#ff9900">else</font><font color="#ff9900">if</font> (camArray.length == 0) { <br /><font color="#999966">11</font> : trace('没有视频讑֤'); <br /><font color="#999966">12</font> : } <br /><font color="#999966">13</font> : } <br /><font color="#999966">14</font> : <font color="#669966">//-----------------------------------------------------------------</font><br /><font color="#999966">15</font> : <font color="#669966">//或者下面的函数更精Q?/font><br /><font color="#999966">16</font> : <font color="#ff9900">function</font> checkForCam(){ <br /><font color="#999966">17</font> : <font color="#ff9900">return</font> Camera.names.length; <br /><font color="#999966">18</font> : }<br /><font color="#999966">19</font> : <font color="#ff9900">function</font> isCamBusy(){ <br /><font color="#999966">20</font> : if(arguments.length) <font color="#ff9900">return</font> Camera.get(arguments[0]) == -1; <br /><font color="#999966">21</font> : <font color="#ff9900">return</font> Camera.get() == -1; <br /><font color="#999966">22</font> : } <br /><font color="#999966">23</font> : </div></div><br /><br /></span> </div> <div id="hhdphtr" class="postbottom1"> <div id="rzbnzhp" class="postuserinfo" style="HEIGHT: 28px"> <div style="FLOAT: left"> <img style="MARGIN: 4px" alt="ip地址已设|保? src="http://bbs.helpcms.com/skins/Default/ip.gif" /> </div>2006-2-28 13:03:12</div> <div id="fnptdbz" class="postie" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; TEXT-INDENT: 10px; PADDING-TOP: 0px; HEIGHT: 28px"> <div style="FLOAT: right; MARGIN-RIGHT: 5px"> <a > <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 4px; BORDER-RIGHT-WIDTH: 0px" alt="" src="http://bbs.helpcms.com/skins/Default/p_up.gif" /> </a> </div> <div> </div> </div> </div> <a name="334"> </a> <div id="pzdnxnv" class="postlary2"> <div id="zztfhpf" class="postuserinfo"> <div style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 30px; PADDING-TOP: 10px; HEIGHT: 30px"> <div style="FILTER: glow(color='#9898BA',strength='2'); FLOAT: left; WIDTH: 120px"> <font face="Verdana" color="#da2549"> <b>netfound</b> </font> </div> <div style="FLOAT: left; MARGIN: 3px; WIDTH: 23px; TEXT-INDENT: 0px"> <img alt="帅哥哟,ȝQ有人找我吗Q? src="http://bbs.helpcms.com/skins/Default/ofMale.gif" /> </div> <div style="FLOAT: left; MARGIN: 5px; WIDTH: 15px; TEXT-INDENT: 0px"> <script language="javascript" type="text/javascript"><![CDATA[ocument.write (astro(''));]]></script> </div> </div> <div> <img height="32" alt="" src="http://bbs.helpcms.com/Images/userface/image59.gif" width="32" /> </div> <div> <img style="MARGIN: 5px 0px" src="http://bbs.helpcms.com/skins/Default/star/level19.gif" /> </div> <div>头衔QCMS服务?/div> <div>{Q超U版?/div> <div>文章Q?07</div> <div>U分Q?438</div> <div>门派Q无门无z?/div> <div>注册Q?006q???/div> </div> <div id="tldhhfd" class="postie"> <div> <div style="FLOAT: right">W?<font color="red">2</font> ?/div> (tng)<a target="_blank"><img alt="用支付宝lnetfound付款或购买其商品Q支付宝交易免手l费、安全、快P" src="http://bbs.helpcms.com/skins/Default/alipay_s.gif" align="middle" border="0" /></a><a href="mailto:netfound@hotmail.com"><img alt="点击q里发送电(sh)子邮件给netfound" src="http://bbs.helpcms.com/skins/Default/email.gif" align="middle" border="0" /></a></div> <hr /> <div style="LINE-HEIGHT: 22px; HEIGHT: 22px"> <div style="FLOAT: left"> <img alt="发脓(chung)?j)? src="http://bbs.helpcms.com/skins/Default/topicface/face1.gif" /> </div> <b> </b> </div> <div style="PADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word" onload="this.style.overflowX='auto';">要设|Camera对象的模式,可以用setMode()Ҏ(gu)Q如下:(x)<br /><div class="prtlnlt" id="code"><div style="MARGIN-LEFT: 5pt"><font color="#999966">1</font> : MyCamera.setMode(width, height, fps [, favorSize])<br /><font color="#999966">2</font> : <font color="#669966">//width,height 是Camera对象宽高Q默认值是160×120</font><br /><font color="#999966">3</font> : <font color="#669966">//fps 捕捉视频的速率 默认值是15</font><br /><font color="#999966">4</font> : <font color="#669966">//favorSize 是一个可选的布尔|默认为trueQ表C采用最大匹配当前的H口大小的速率Q如果设为falseQ则?x)优先考虑影像的流畅度?/font></div></div><br /><strong>不同带宽的徏议设|?/strong><br />默认的Camera讄Ҏ(gu)有的带宽提供?jin)一个相同的_好的传输品质Q如果需要手动设|以适应不同的带宽要求,讄Camera参数的方法如下:(x)<br /><div class="rzdnrxv" id="code"><code><div style="MARGIN-LEFT: 5pt"><ol><li><span style="COLOR: #000000"><span style="COLOR: #0000cc">MyCamera</span><span style="COLOR: #006600">.</span><span style="COLOR: #0000cc">setQuality</span><span style="COLOR: #006600">(</span><span style="COLOR: #0000cc">bandwidth</span><span style="COLOR: #006600">, (tng)</span><span style="COLOR: #0000cc">frameQuality</span><span style="COLOR: #006600">)<br /><li><span style="COLOR: #ff9900">//bandwidth (tng)频宽指每U传送的最大字节数 (tng)默认?6384 (tng)如果设ؓ(f)0则维持frameQuality讑֮的媄(jing)像品质,量使用最大频?br /><li>//freamQuality (tng)影像的压~品??00Q设?表示在bandwidth讑֮范围内自动调整媄(jing)像品?br /><p> (tng)</p></li></span></li></span><span style="COLOR: #ff9900">//bandwidth (tng)频宽指每U传送的最大字节数 (tng)默认?6384 (tng)如果设ؓ(f)0则维持frameQuality讑֮的媄(jing)像品质,量使用最大频?br /><li>//freamQuality (tng)影像的压~品??00Q设?表示在bandwidth讑֮范围内自动调整媄(jing)像品?br /><p> (tng)</p></li></span></span></li><li><span style="COLOR: #ff9900">//bandwidth (tng)频宽指每U传送的最大字节数 (tng)默认?6384 (tng)如果设ؓ(f)0则维持frameQuality讑֮的媄(jing)像品质,量使用最大频?br /><li>//freamQuality (tng)影像的压~品??00Q设?表示在bandwidth讑֮范围内自动调整媄(jing)像品?br /><p> (tng)</p></li></span></li><li>//freamQuality (tng)影像的压~品??00Q设?表示在bandwidth讑֮范围内自动调整媄(jing)像品?br /></li></ol></div><p> (tng)</p></code><font face="?hu)? MS Song"> (tng)</font></div></div> </div> </div> <div id="nlpblrp" class="postbottom2"> <div id="vdzjfnd" class="postuserinfo" style="HEIGHT: 28px"> <div style="FLOAT: left"> <font face="?hu)? MS Song"> <img style="MARGIN: 4px" alt="ip地址已设|保? src="http://bbs.helpcms.com/skins/Default/ip.gif" /> </font> </div>2006-2-28 13:04:57</div> <div id="rjnhlbr" class="postie" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; TEXT-INDENT: 10px; PADDING-TOP: 0px; HEIGHT: 28px"> <div style="FLOAT: right; MARGIN-RIGHT: 5px"> <a > <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 4px; BORDER-RIGHT-WIDTH: 0px" alt="" src="http://bbs.helpcms.com/skins/Default/p_up.gif" /> </a> </div> <div> </div> </div> </div> <a name="335"> </a> <div id="ptnfzzp" class="postlary1"> <div id="rbdvzfd" class="postuserinfo"> <div style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 30px; PADDING-TOP: 10px; HEIGHT: 30px"> <div style="FILTER: glow(color='#9898BA',strength='2'); FLOAT: left; WIDTH: 120px"> <font face="Verdana" color="#da2549"> <b>netfound</b> </font> </div> <div style="FLOAT: left; MARGIN: 3px; WIDTH: 23px; TEXT-INDENT: 0px"> <img alt="帅哥哟,ȝQ有人找我吗Q? src="http://bbs.helpcms.com/skins/Default/ofMale.gif" /> </div> <div style="FLOAT: left; MARGIN: 5px; WIDTH: 15px; TEXT-INDENT: 0px"> <script language="javascript" type="text/javascript"><![CDATA[ocument.write (astro(''));]]></script> </div> </div> <div> <img height="32" alt="" src="http://bbs.helpcms.com/Images/userface/image59.gif" width="32" /> </div> <div> <img style="MARGIN: 5px 0px" src="http://bbs.helpcms.com/skins/Default/star/level19.gif" /> </div> <div>头衔QCMS服务?/div> <div>{Q超U版?/div> <div>文章Q?07</div> <div>U分Q?438</div> <div>门派Q无门无z?/div> <div>注册Q?006q???/div> </div> <div id="vxrdxdj" class="postie"> <div> <div style="FLOAT: right">W?<font color="red">3</font> ?/div> (tng)<a target="_blank"><img alt="用支付宝lnetfound付款或购买其商品Q支付宝交易免手l费、安全、快P" src="http://bbs.helpcms.com/skins/Default/alipay_s.gif" align="middle" border="0" /></a><a href="mailto:netfound@hotmail.com"><img alt="点击q里发送电(sh)子邮件给netfound" src="http://bbs.helpcms.com/skins/Default/email.gif" align="middle" border="0" /></a></div> <hr /> <div style="LINE-HEIGHT: 22px; HEIGHT: 22px"> <div style="FLOAT: left"> <img alt="发脓(chung)?j)? src="http://bbs.helpcms.com/skins/Default/topicface/face1.gif" /> </div> <b> </b> </div> <div style="PADDING-RIGHT: 0px; MARGIN-TOP: 10px; FONT-SIZE: 9pt; OVERFLOW-X: hidden; WIDTH: 97%; WORD-BREAK: break-all; TEXT-INDENT: 24px; LINE-HEIGHT: normal; HEIGHT: 200px; WORD-WRAP: break-word" onload="this.style.overflowX='auto';"> <p> (tng)下面对不同的带宽l出?jin)徏议设|:(x)<br /> (tng)<br />[ Modem (tng) ]<br /> (tng)<br />较低画质Q较高动作流畅度 my_cam.setQuality(4000,0)<br /> (tng)<br />较高画质Q较低动作流畅度 my_cam.setQuality(0,65)<br /> (tng)<br />[ DSL ]<br /> (tng)<br />较低画质Q较高动作流畅度 my_cam.setQuality(12000,0)<br /> (tng)<br />较高画质Q较低动作流畅度 my_cam.setQuality(0,90)<br /> (tng)<br />[ LAN ]<br /> (tng)<br />较低画质Q较高动作流畅度 my_cam.setQuality(400000,0)<br /> (tng)<br />较高画质Q较低动作流畅度 my_cam.setQuality(0,100) </p> <p> <br />打开和设|完Camera之后后要附加C个视频实体才可以昄<br />MyVideo.attachVideo(MyCamera); </p> <p> (tng)</p> <p>正常关闭camera<br />如果你的应用E序使用camera对象和NetStream对象记录数据Qcamera仍然保持打开状态,Z(jin)保关闭Camera对象Q请在结束的时候?br />NetStream.attachVideo(false) </p> <p> (tng)</p> <p>在多个应用程序中使用同一个Camera<br />多个应用E序QswfsQ可以在同时使用一个Camera。一般而言Q多个浏览器H口使用相同的进E,所以在览器环境中多个应用E序可以正常使用同一个Camera。但是,如果一个是在浏览器中运行,一个是独立应用E序Q就不能׃n使用同一个CameraQ因为Camera不能被多个进E共享?/p> <p>事g响应<br />在Camera有两个重要的事g响应<br />1. onStatus事g muted属性变化会(x)触发该事?br />原参考手册中的一个示例可以说明onstatus的用?br />01 : myCam = Camera .get ();<br />02 : myVideoObject.attachVideo(myCam);<br />03 : myCam.onStatus = function ( infoMsg ) { <br />04 : if ( infoMsg.code == 'Camera.Muted' )<br />05 : { <br />06 : trace ( 'User denies access to the camera' );<br />07 : }<br />08 : else<br />09 : trace ( 'User allows access to the camera' );<br />10 : }<br />11 : // Change the Allow or Deny value to invoke the function<br />12 : System .showSettings(0);</p> <p>2. onActivity事g 视频是否zd的事件响?br />请参考原手册的范例:(x)<br />1 : // Assumes a Video object named 'myVideoObject' is on the Stage<br />2 : c = Camera.get();<br />3 : myVideoObject.attachVideo(c);<br />4 : c.setMotionLevel(10, 500);<br />5 : c.onActivity = function (mode)<br />6 : { <br />7 : trace(mode);<br />8 : };</p> </div> </div> </div> <img src ="http://m.tkk7.com/sl2cj/aggbug/50323.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-06-04 20:08 <a href="http://m.tkk7.com/sl2cj/articles/50323.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flash与后台数据交换方法整?-FlashComQF(tun)MSQ篇Submitted by kinglong on 2006-3-13 15:43:14五、FlashComQF(tun)MSQ?/title><link>http://m.tkk7.com/sl2cj/articles/50241.html</link><dc:creator>blog搬家?-[www.ialway.com/blog]</dc:creator><author>blog搬家?-[www.ialway.com/blog]</author><pubDate>Sun, 04 Jun 2006 03:40:00 GMT</pubDate><guid>http://m.tkk7.com/sl2cj/articles/50241.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/50241.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/50241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/50241.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/50241.html</trackback:ping><description><![CDATA[ <a >flash与后台数据交换方法整?-FlashComQF(tun)MSQ篇</a> <div id="fpjdhxt" class="meta"> <small>Submitted by kinglong on 2006-3-13 15:43:14</small> </div> <!-- Node content --> <div id="rblxjzv" class="content"> <p>五、FlashComQF(tun)MSQ?/p> <p>q一是前四个(<a >LoadVars(XML)</a>?a >Flash Remoting</a>?a >Webservice</a>?a >XMLSocket</a>Q的补充,本来我没有考虑q去Q因为FlashComQF(tun)MSQ主要用于流媒体技术,今天要感?a >Danger</a>提出来了(jin)Q呵呵,今天?j)情不错Q就一气合成了(jin)Q?/p> <p>FlashComQF(tun)MSQ主要用于与服务端进行流媒体通信Q目前应用领域就?strong>Flash媒体播?/strong>Q?strong>Flash在线直播</strong>Q?strong>Flash视频音频聊天</strong>Q?strong>Flash视频?x)?/strong>Q?strong>Flash在线游戏</strong>{?/p> <p> <strong>FlashCom的运行环?/strong>(<a target="_blank">FMS的运行环?/a>)Q?br /><br />1、Windows操作pȝQWindows 2000 Server或者Windows NT 4.0 ServerQsp6Q;<br />2、Linux操作pȝQRed Hat Linux 7.3 或?8.0Q?br />3、服务器的CPU是Pentium III 500 MHz或者更高(推荐值是双个Pentium 4 CPUQ;<br />4、服务器的内存是256M RAM 或者更高(推荐值是512MQ?/p> <p> <strong>FlashComQF(tun)MSQ的优点</strong>Q?br />1、能够实现即时视频音频通信Q当然它也支持文本通信的)(j)Q?br />2、能够流媒体同步播放Q也叫在U直播)(j)Q?br />3、能够通过Flash PlayerQ?.0以上版本Q录制视频音频,无需其他客户端;<br />4、能够实现客L(fng)实现之间的控Ӟ如会(x)议主持h权限Q?/p> <p> <strong>FlashComQF(tun)MSQ的~点</strong>Q?br />1、FlashComQF(tun)MSQ服务端软g?a >MM公司</a>的品,需要花银子M的(一W不的投入Q,好在现在有一个正在完善中的开源项目—?a >RED5</a>Q?br />2、由于是媒体服务端软gQ所以对服务器的带宽Q内存,以及(qing)CPU也是很高的要求的Q上面已l作说明?jin)?j)Q?br />3、同时在U视频通信的hC能太多?/p> <table cellspacing="1" cellpadding="1" width="100%" border="0"> <tbody> <tr> <td>//=======================================;<br />//<em> Flash客户端(以简单的在线录制视频ZQ?/em><br />//=======================================;<br />stop();<br />var nc:NetConnection = new NetConnection();<br />var ns:NetStream;<br />var cam:Camera = Camera.get();<br />var mic:Microphone = Microphone.get();<br />//<em>预览本地摄像头视?/em>;<br />video_box.attachVideo(cam);<br />//<em>初始化NetStream</em>;<br />function initNetStream():Void {<br />ns = new NetStream(nc);<br />//<em>讄2U的~冲旉</em>;<br />ns.setBufferTime(2);<br />//<em>使用NetStream加蝲视频和音频对?/em>;<br />ns.attachVideo(cam);<br />ns.attachAudio(mic);<br />//<em>NetStream状态信?/em>;<br />ns.onStatus = function(info:Object) {<br />trace("ns.onStatus:"+info.code);<br />};<br />}<br />//<em>录制视频音频</em>;<br />function recordStream(){<br />ns.publish("kinglong","record");<br />}<br />//<em>停止录制</em>;<br />function stopStream(){<br />ns.close();<br />}<br />//<em>删除视频音频文g</em>;<br />function deleteStream(){<br />nc.call("clearStream",null,"kinglong");<br />}<br />//<em>NetConnection状态信?/em>;<br />nc.onStatus = function(info:Object) {<br />trace("nc.onStatus:"+info.code);<br />switch (info.code) {<br />case "NetConnection.Connect.Success" :<br />initNetStream();<br />break;<br />}<br />};<br />//<em>q接FlashCom服务?/em><br />nc.connect("rtmp:/"+"recordstream");</td> </tr> </tbody> </table> <br /> <br /> <br /> <table cellspacing="1" cellpadding="1" width="100%" border="0"> <tbody> <tr> <td>//=======================================;<br />// <em>FlashComQF(tun)MSQ服务端代码</em><br />//<em>下列代码存成main.asc文gQ此文g名固定)(j)Q在FlashCom的applications目录下徏立一个recordstream目录Q对应着客户端的”recodstream”)(j)Qƈmain.asc攑֜q个目录中?/em><br />//=======================================;<br />application.onAppStart = function(){<br />}<br />application.onAppStop = function(){<br />}<br />application.onConnect = function(client){<br />application.acceptConnection(client);<br />}<br />application.onDisconnect = function(client){<br />}<br />//=======================================;<br />//<em>获取flv文g旉长度</em>Q?br />function getStreamLength(name) {<br />return Stream.length(name);;<br />}<br />//=======================================;<br />//<em>删除flv文g</em>Q?br />function clearStream(name) {<br />trace("clearStream("+name+");");<br />var stream = Stream.get(name);<br />return stream.clear();<br />}<br />//=======================================;<br />//<em>讄Client.prototype</em>;<br />//=======================================;<br />Client.prototype.getStreamLength = getStreamLength;<br />Client.prototype.clearStream = clearStream;</td> </tr> </tbody> </table> </div> <img src ="http://m.tkk7.com/sl2cj/aggbug/50241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-06-04 11:40 <a href="http://m.tkk7.com/sl2cj/articles/50241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>主题: [asp]直接保存URL囑փ或网到服务器本地的c~~ http://m.tkk7.com/sl2cj/articles/50235.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Sun, 04 Jun 2006 03:23:00 GMThttp://m.tkk7.com/sl2cj/articles/50235.htmlhttp://m.tkk7.com/sl2cj/comments/50235.htmlhttp://m.tkk7.com/sl2cj/articles/50235.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/50235.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/50235.html阅读全文

]]>
[转蝲]flash asp大头贴出现杂点的解决全过E?/title><link>http://m.tkk7.com/sl2cj/articles/50232.html</link><dc:creator>blog搬家?-[www.ialway.com/blog]</dc:creator><author>blog搬家?-[www.ialway.com/blog]</author><pubDate>Sun, 04 Jun 2006 03:15:00 GMT</pubDate><guid>http://m.tkk7.com/sl2cj/articles/50232.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/50232.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/50232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/50232.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/50232.html</trackback:ping><description><![CDATA[ <h1 class="ContentTitle"> <strong>[转蝲]flash asp大头贴出现杂点的解决全过E?/strong> </h1> <h2 class="ContentAuthor">作?luke 日期:2006-04-22</h2> <div id="phjlvtj" class="Content-Info"> <div id="jtfrlrp" class="InfoOther">字体大小: <a accesskey="1" href="javascript:SetFont('12px')">?/a><a accesskey="2" href="javascript:SetFont('14px')">?/a><a accesskey="3" href="javascript:SetFont('16px')">?/a></div> <div id="bbtvpxf" class="InfoAuthor"> <img style="MARGIN: 0px 2px -6px 0px" alt="" src="http://www.sun-sky.cn/images/weather/hn2_sunny.gif" /> <img alt="" src="http://www.sun-sky.cn/images/weather/hn2_t_sunny.gif" /> <img style="MARGIN: 0px 2px -1px 0px" alt="" src="http://www.sun-sky.cn/images/level3.gif" /> </div> </div> <div id="pxtnpnl" class="Content-body" id="logPanel">//从闪吧{?br /><br />前几天在|上找了(jin)一下flash ASP的大头脓(chung)E序 <br />用后普遍存在杂点的现象?<br />在网上也咨询q相关程序编写的作?有的已经发现q改q但是ƈ不向外发布(只做商业使用Q,而网上又无法查找到相兌军_?<br />几经 寻觅帮助最?认识?闪吧中的 W耗子 Q只不过他做的是PHPQ,l他提点 说是 flash丢色问题?<br />于是 研究?jin)一下他的flash代码 原以为是 if(pix == 0xFFFFFF) pixer = ""; // don’t send blank pixel <br />的问题,可是当我在我的flash中也加入此代码后 问题?sh)旧存在?<br />今日 下定军_(j)好好研究研究 Q用于调试的代码比较?q里只提一下我的思\Q?<br />1 在flash ?加入 一个变?用于存储 getPixel获取的所有像素?q将其输出到flash中的一?textarealg?/用于以后比较判断 <br />2 在asp的处理部?对从flash传来的数?写入文g 同时输出一行“=???l过10q制转换后的 内容也写入文?//用于比较调试 <br />l过比较 发现flash到asp 以及(qing)asp 转换 均未出错Q! 下面?用来比较的文件的内容 <br /><br /><a title="在新H口打开囄" target="_blank"><img alt="" src="http://www.sun-sky.cn/attachments/month_0604/e200642210482.jpg" width="500" border="0" /></a><br /><br />郁闷中!Q!Q?<br />后来 用取色Y?Ҏ(gu)到的囄中的杂色 q行分析 Qcef30bQ?把他按照 从右到左两位一转换的方法{?0q制?׃(x)得到 像上图中 <br />xxx-xxx-xxx的Ş?然后在上面用来测试的 文g中找到和此内容相同的一?你会(x)发现{号双的数据不?位的 只有5位(呵呵 我想应该是q个原因Q?<br /><br />于是回到flash?加入if(pixer.length<6)pixer="0"+pixer; //我认为应该是加?" 因ؓ(f)对于像素q方面我不太?jin)?但计机一般会(x)略去0 所以我加的是?" <br />试 发现杂点没有?<br />用网上的 E序拍摄?有杂?<br /><br /><img alt="" src="http://www.sun-sky.cn/attachments/month_0604/92006422104850.jpg" border="0" /><br /><br />修改后的 <br /><br /><img alt="" src="http://www.sun-sky.cn/attachments/month_0604/e2006422104915.jpg" border="0" /><br /><br />好了(jin) p到这里了(jin)<br />在下也是初学 也不敢保证以上说?没有错误 望谅?<br /></div> <img src ="http://m.tkk7.com/sl2cj/aggbug/50232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-06-04 11:15 <a href="http://m.tkk7.com/sl2cj/articles/50232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FLASH大头?FLASH部分源程序解?http://m.tkk7.com/sl2cj/articles/50213.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Sun, 04 Jun 2006 01:37:00 GMThttp://m.tkk7.com/sl2cj/articles/50213.htmlhttp://m.tkk7.com/sl2cj/comments/50213.htmlhttp://m.tkk7.com/sl2cj/articles/50213.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/50213.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/50213.html

FLASH大头?FLASH部分源程序解?

   (tng) (tng) (tng) 原来有几个前辈脓(chung)q了(jin)一些关于这个技术的代码Q有JAVA的,也有FLASH COM的。现在我把FLASH部分通过摄象头获得图象信息的代码贴出来。供大家参考。?br /> (tng) (tng) (tng) q段代码是我参考了(jin)别h的代码自己写出来的。原来的那个|站里d提供?jin)两个类来实现这个问题。估计脓(chung)出来大多Ch也会(x)看的D~ؕ不知所以(其实我也没太看明白)(j)。所以按原来E序的思\自己重新写了(jin)一部分。大多数语句都写?jin)注释。如果大家有什么不明白的,Ƣ迎跟脓(chung)讨论
 (tng) (tng) (tng) 注意Q本E序需要Video的支持。具体添加办法请搜烦(ch)FLASH8帮助Q这个东西是FLASH库本w自带的Q?
/*FLASH大头贴原E序
/*E序~写QBenmouse (tng)2005-12-01
import (tng)flash.display.BitmapData; (tng)//要应用这个对象。。必要包含一?

myCrame=Camera.get(); (tng) (tng) (tng) (tng) (tng) (tng)//创徏摄象头对?
myVideo.attachVideo(myCrame); (tng) (tng) (tng)//昄视频
var (tng)imger:BitmapData (tng)= (tng)new (tng)BitmapData(myVideo._width, (tng)myVideo._height, (tng)false);
imgShow.attachBitmap(imger, (tng)this.getNextHighestDepth(), (tng)"auto", (tng)true);
var (tng)thehang:Number=0;
var (tng)I(yng)D:Number;
var (tng)PX:Array=new (tng)Array();
btn1.onRelease=function()
{
 (tng)imger.draw(myVideo); (tng)//imger是场景中一个空的组Ӟ用来昄myVideo的图?
 (tng)thehang=0;
 (tng)_root.ID=setInterval(makeImg, (tng)5);
}
function (tng)makeImg()
{
 (tng)var (tng)pix:Number;
 (tng)var (tng)pixer:String;
 (tng)PX[thehang]=new (tng)Array();
 (tng)for(w=0;w<imgShow._width;w++)
 (tng){
 (tng) (tng)pix=imger.getPixel(w,thehang);
 (tng) (tng)pixer=pix.toString(16);
 (tng) (tng)if(pix (tng)== (tng)0xFFFFFF) (tng)pixer (tng)= (tng)""; (tng)// (tng)don’t (tng)send (tng)blank (tng)pixel
 (tng) (tng)PX[thehang].push(pixer);
 (tng)}
 (tng)thehang+=1;
 (tng)if(thehang>=imgShow._height)
 (tng){
 (tng) (tng)clearInterval(_root.ID);
 (tng) (tng)imger.dispose();
 (tng) (tng)sendVars();
 (tng)}
}
function (tng)sendVars()
{
 (tng)sender=new (tng)LoadVars();
 (tng)sender.w=myVideo._width;
 (tng)sender.h=myVideo._height;
 (tng)
 (tng)for(i=0;i<sender.h;i++)
 (tng){
 (tng) (tng) (tng) (tng) (tng)sender["PX"+i]=_root.PX[i];
 (tng)}
 (tng)sender.send("send.php","_blank","POST");
}

 (tng) (tng) (tng) 旉有限Q今天先把代码脓(chung)上,注释回头写上来,见谅。。。程序测试地址:http://benmouse.521j.com



]]>
按钮中蟩转场景问?/title><link>http://m.tkk7.com/sl2cj/articles/50162.html</link><dc:creator>blog搬家?-[www.ialway.com/blog]</dc:creator><author>blog搬家?-[www.ialway.com/blog]</author><pubDate>Sat, 03 Jun 2006 11:30:00 GMT</pubDate><guid>http://m.tkk7.com/sl2cj/articles/50162.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/50162.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/50162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/50162.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/50162.html</trackback:ping><description><![CDATA[on(release)<br /> (tng) {<br /> (tng) (tng) (tng) tellTarget("_root")<br /> (tng) (tng) {<br /> (tng) (tng) (tng) (tng) (tng) gotoAndPlay("SceneName",1);<br /> (tng) (tng) }<br /> }<br />首先Q直接写gotoAndPlay()肯定是不行的Q因Z是在一个mc中的按钮<br />q样写,goto语句作用的是mcQ而不是_root<br />但是写成_root.gotoAndPlay("SceneName",1);也不?br />因ؓ(f)mc.gotoAndPlay();没有带场景参数的函数原型Q只有mc.gotoAndPlay(frame);<br />只有单独使用gotoAndPlay()才有gotoAndPlay(scene,frame)的用?br />所以采取这U折L(fng)办法<br />用tellTarget()<br />既可以确保作用对象是_root.而非mc,也可以单独用gotoAndPlay()语句<img src ="http://m.tkk7.com/sl2cj/aggbug/50162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-06-03 19:30 <a href="http://m.tkk7.com/sl2cj/articles/50162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【{帖】制作一个全功能的FLV播放?http://m.tkk7.com/sl2cj/articles/50160.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Sat, 03 Jun 2006 11:02:00 GMThttp://m.tkk7.com/sl2cj/articles/50160.htmlhttp://m.tkk7.com/sl2cj/comments/50160.htmlhttp://m.tkk7.com/sl2cj/articles/50160.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/50160.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/50160.html【{帖】制作一个全功能的FLV播放?/strong>
创徏一个全功能的FLV播放?/b>

我们制作的q个FLV播放器由q样几部分组成:(x)
一个用于显C频图像的视频对象Q?br />三个分别用于播放、暂停和停止视频的按钮,
以及(qing)一个用于显C缓冲区装蝲q度的动态文本?br />
1. 创徏三个按钮元gQ分别命名ؓ(f)“播䏀、“暂停”、“停止”,其各自一个实例拖攑ֈ场景舞台中?br />
2. 创徏一个视频元Ӟ其一个实例拖攑ֈ场景舞台中,q赋予其实例名myVideo?br />
3. 在场景舞C攄一个动态文本,赋予其实例名myText?br />
4. 在根旉U的W?帧中捆绑下面的脚本:(x)

//创徏一个NetConnection对象?br />myFLVConnection=new NetConnection();
//创徏一个流q接?br />myFLVConnection.connect(null);
//创徏一个NetStream对象?br />//myFLVConnection被指定给该NetStream对象?br />myFLVStream=new NetStream(myFLVConnection);
//myFLVStream被捆l到Video对象myVideoQ?br />myVideo.attachVideo(myFLVStream);
//讄~冲旉?br />myFLVStream.setBufferTime(10);

分析q段脚本Q首先我创徏?jin)一个NetConnection对象myFLVConnectionQ然后我调用NetConnection对象的connect()Ҏ(gu)打开?jin)一个流q接Q在调用connect()Ҏ(gu)时你必须传递给它一个nullg为参数?br />
接下来,我利用myFLVStream=new NetStream(myFLVConnection);q行代码创徏?jin)一个NetStream对象myFLVStreamQ在创徏时我需要把“流”提供的“连接”告知它Q即把myFLVConnection对象作ؓ(f)参数传递给NetStreamcȝ构造函数?br />之后Q我把myFLVStreamQ“流”)(j)捆绑到Video对象myVideo。然后,我还用NetStreamcȝsetBufferTime()Ҏ(gu)以秒为单位指定了(jin)一个缓冲时_(d)卌在缓冲区中装入可供播攑֤长时间的数据后才开始播放?br />
5. 在“播䏀按钮实例上捆绑下面的脚本:(x)

on(release){
//装蝲q播放FLV文g?br />myFLVStream.play("myFLV.flv");

//定义bufferLoad函数以供setInterval函数调用来显C缓冲进度?br />function bufferLoad(){
//在动态文本中昄~冲区的装蝲q度?br />myText.text="~冲区已装蝲"+int((myFLVStream.bytesLoaded/myFLVStream.bytesTotal)*100)+"%";
}
//讄旉间隔?br />setInterval(bufferLoad,20);
}

q行代码—myFLVStream.play("myFLV.flv");用来装蝲和播放FLV文g。如果你的FLV文g位于某个HTTP地址或本地文件系l的某处Q你可以使用http://或file://q样的格式作???的位|?/font>
q个表达式—myFLVStream.bytesLoaded/myFLVStream.bytesTotal用来(g)查缓冲区已装载的字节占缓冲区要装载的d节的比倹{bytesLoaded和bytesTotal是NetStreamcȝ两个属性?br />
6. 在“暂停”按钮实例上捆绑下面的脚本:(x)

on(release){
//暂停FLV文g?br />myFLVStream.pause();
}

7. 在“停止”按钮实例上捆绑下面的脚本:(x)

on(release){
//停止FLV文gq同时删除下载的FLV文g?br />myFLVStream.close();
}

8. 制作完成。你应该在你的网站中试q个FLV播放器?/div>

]]>NetStream对象 http://m.tkk7.com/sl2cj/articles/50159.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Sat, 03 Jun 2006 10:57:00 GMThttp://m.tkk7.com/sl2cj/articles/50159.htmlhttp://m.tkk7.com/sl2cj/comments/50159.htmlhttp://m.tkk7.com/sl2cj/articles/50159.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/50159.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/50159.htmlNetStream对象

NetStream对象是在所有联机对象之间传递媄(jing)音串。如果你仅仅是ؓ(f)?jin)传递文字聊天内容,使用׃n对象可以解冻I不必要用这个对象?br />该对象的基本属性有
time 到目前ؓ(f)止,串流资料播放的秒?br />bufferTime ~冲区的最大秒?br />currentFps 当前播放影像的速率Q每U敎ͼ(j)
bufferLength 当前~冲区的资料U数
liveDelay 实时播放视频的间隔
但是当你想知道当前播攄影像的总长度的时候,必须调用服务器端的方法才可以Q因为客L(fng)的FlashPlayer是无法获知数据流的总长的。你需要在客户端写如下Ҏ(gu)Q?br />01 : function getInfo()
02 : {
03 : nc.call( 'sendInfo', new MyResultSetName(), myStream);
04 : }
05 : function MyResultSetName()
06 : {
07 : this.onResult = function ( retVal )
08 : {
09 : _root.streamlength = retVal;
10 : };
11 : this.onStatus = function(info)
12 : {
13 : trace ( 'Level:' + info.level + 'Code:' + info.code);
14 : // process error object
15 : };
16 : }


然后在服务器端的main.asc文g中的相关事g中写入:(x)
01 : application.onAppStart = function ()
02 : {
03 : trace('::: Application has started :::');
04 : }
05 : application.onConnect = function (client)
06 : {
07 : application.acceptConnection (client);
08 : // Add methods
09 : client.prototype.sendInfo = function (name) {
10 : var slen = Stream.length (name);
11 : trace ( 'slen:' + slen);
12 : return slen;
13 : };
14 : }


相关Ҏ(gu)参考:(x)
setBufferTime ( U数)
可以讄~冲区的大小以提高(sh)品质的网l情?br />注意QbufferLength大小L不大于bufferTime

attachVideo ( 影像来源,[ 拍摄模式 ] )
摄像机对象的媄(jing)像追加给串流对象Q如果媄(jing)像来源ؓ(f)nullQ将停止捕捉影像
拍摄模式省略表示捕捉q箋(hu)的媄(jing)像;若ؓ(f)0则只拍摄单元格画面;大于0Q将以此数gؓ(f)U数间隔Q连l拍摄单元格影像?br />
attactAudio ( 声音来源 )
麦克风的音源设定给串流对象

publish ( 串流资料?[ 播出方式 ])
如果串流资料名没有指定则停止播出
播出方式有liveQ默认|(j)实时播出但不存储Qrecord 播出同时以串资料名.flv文g存储Q\径ؓ(f)应用E序路径下面的streams文g夹;append 播出的同时追加到指定名称的flv文g中,如果不存在,则自动创建?br />
pause()
暂停、开始播?br />
close ()
停止发布或播攑ֽ前所有数据流Q把 NetStream.time 属性设|ؓ(f) 0, 使得其它客户端可以用该数据?hu),该方法当你?NetStream.play() 或NetStream.publish() 的时候被隐含调用

play( 串流名称Qv始时_(d)长度Q是否清除前一个串?)
起始旉默认gؓ(f)Q? 表示flash?x)先试播放实时影音Q否则就播放指定识别名称的文?br />若ؓ(f)Q? 只播放实时影音 若ؓ(f)0 只播放指定名称的录像内?br />长度参数指定影音播放的秒?默认为-1 表示一直播攑ֈl束 为其它gؓ(f)播放到指定秒数的内容

receiveVideo(fps)
指定播放串流的速率fps讑֮?Ӟflash停止播攑֪(jing)?br />
seek(U数)
快倒倒录像文件倒指定秒数的画面Q如果设?Q则跌{到开?br />可以使用相对旉来蟩转,?br />client_ns.seek(client_ns.time-3)

如果要在传输音频或视频流的同Ӟ包含文本数据{,也就是说q行数据交换Q则可以使用sendҎ(gu)?br />可以在客L(fng)包含下面的actionscriptQ?br />1 : var my_nc:NetConnection = new NetConnection();
2 : my_nc.connect('rtmp://myServer.myDomain.com/appName/appInstance');
3 : var my_ns:NetStream = new NetStream(my_nc);
4 : my_ns.publish('slav', 'live');
5 : my_ns.send('Fun', 'this is a test');

在接收端可以使用下面代码Q?br />1 : var my_nc:NetConnection = new NetConnection();
2 : my_nc.connect('rtmp://myServer.myDomain.com/appName');
3 : my_ns = new NetStream(my_nc);
4 : my_ns.play('slav', -1, -1);
5 :
6 : my_ns.Fun = function(str) { //Fun is the handler name
7 : trace (str);
8 : }
关闭视频的几种Ҏ(gu)Q?br />1 : myStream_ns.publish(false);// 停止整个串流
2 : myStream_ns.close();//关闭串流Q当然也停止了(jin)串流播放
3 : mystream_ns.attachVideo(null);//仅仅停止视频播放Q仍然保持音频播?


]]>使用 Flash com MX构徏视频应用 http://m.tkk7.com/sl2cj/articles/50054.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Fri, 02 Jun 2006 12:34:00 GMThttp://m.tkk7.com/sl2cj/articles/50054.htmlhttp://m.tkk7.com/sl2cj/comments/50054.htmlhttp://m.tkk7.com/sl2cj/articles/50054.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/50054.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/50054.html使用 Flash com MX构徏视频应用

作者:(x)mjking 旉Q?2003-07-02 文档cdQ原创 来自Q?a >7yue.com
览l计 total:10719 | year:951 | Quarter:406 | Month:20 | Week:43 | today:10

 

  q个教程讲解?jin)一个用Flash Communication Server MX的基本的开发过E,本教E适用于初学者(教程原型改编自Flash Com帮助文档Q?/p>

  面向对象我们不谈Q这里我也没有时间跟各位探讨q个。如果每个开发者面临的问题是,我必d短短几天之内p够开发一个应用出来(或者是一个模块)(j)Q那么从头学?fn)Flash Communication Server MX的语法是一U不可取的方式。而且很多很多国内的开发者,一看好几百(甚至上千)(j)的英文资料,头都大了(jin)Q更不要谈什么快速学?fn)和融?x)贯通。学?fn)没有捷径,但是有方法,?gu)正确Q那p效快Q方法不对,那就可能旉长痛苦。初学者除?jin)看文档外,q要多多自己学习(fn)别h公开的源E序Q笔者这里不d用什么asv之类的东西)(j)。我虽然也不是什么高U开发h员,但是希望我的q些教程能够帮助国内的开发h员进一步快速的?jin)解Flash Communication Server MX?/p>

我们先来看看q个教程必须的工P(x)

  • Macromedia Flash Communication Server MX
  • Macromedia Flash MX
  • 一个usb接口的Camera

下面我按照我的操作步骤来讲解q个Demo的制作过E:(x)

  1. 打开Flash MXQ确定你需要多个层来容纳你所需要的东西。注意,q种方式可能不适合设计人员Q因计h员在做Flash MTV的时候可能有他们的方法,q里是我的方法。我惛_?jin)表C个实时播攄视频H口Q一个用来发布视频的H口。还需要一些action Script来控刉辑Q此外,q需要一个简单的逻辑。因此,应该有三个图层(LayerQ。如下图Q?br />

  2. 背景没什么可说的Q各位随便制作,能多花哨多花哨。我们现在是需要向Content囑ֱ的所在场景嵌入视频。F11打开库窗口,点击右上角图标,弹出菜单Q选择“新徏视频”。如下图Q?br />

  3. 把库中生成的视频拖拽两次到场景中Q注意当前Layer所在ؓ(f)Content。如下图Q?br />

  4. l场景中的两个嵌入视频指定相应的Instance NameQ左边的视频命名为live_videoQ右边的定ؓ(f)Publish_videoQ注意修改了(jin)一下宽和高Q。如果没有属性面板,按快捷键CTRL+F3


  5. 再两个视频窗口下面各放一个Push Button的Flash UI Component。左边的命名为record_btnQ右边的命名为replay_btn。看下图Q?br />

  6. 接下来就该写代码?jin),我们选则action所在层。我在写Flash Communication Server MX的程序的时候L有一个小的经验和序Q就是不你是什么视频、音频还是什么其他交互的lgQ这些组件在能够使用之前Q先l他们来一个NetConnection的连接,C?jin),没这个NetConnectionq接Q你什么也别干Q也什么都q不?jin)。程序都在下图了(jin)Q各位可以仔l观看一下?br />

  7. 最后,我们q接在Flash MX的编辑环境里输出查看l果?br />


]]>
评估视频录制的带宽需求来采用合适的寸和速率http://m.tkk7.com/sl2cj/articles/49016.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Tue, 30 May 2006 07:39:00 GMThttp://m.tkk7.com/sl2cj/articles/49016.htmlhttp://m.tkk7.com/sl2cj/comments/49016.htmlhttp://m.tkk7.com/sl2cj/articles/49016.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/49016.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/49016.html阅读全文

]]>
վ֩ģ壺 Ʒmnbavվ| պƵѿ| ҹҹAһ| ˾þۺӰԺҳ| 99߹ۿ| ҹþþþƷӰԺ| ĻӰ| þþþavëƬ| ػɫĴƬۿƵ| Ļ߹ۿ| һˮëƬѿ| ޳AVƬ߹ۿ| ѵȫһ¼| 78˾ƷӰ߲պƷӰһ | պƵѹۿ| ɫһ| ִֻˬƬ | һ| ޹Ʒ۲ӰԺ߹ۿ| պӰѹۿ| ޽Сɫxxxx| һ| AëƬվѿ| AVһ| 2019ĻƵ| ɫWW47| ޹СƵƷþþ | ƷպAV| þþøƵ| ޹߹ۿ| ҹɫһ| ˸徫Ʒѹۿ| ˵һavվ| һһһƵѿ| һѾƷƵ| þҹɫƷav| 99þѹۿ| AVվ| avպavӰƬƷ| ĻѸ| һëƬѲ|