Flex 迷你教程 — 基于Stratus的P2P网络电话
前些天把Adobe官方的p2p Video phone demo的研究了一遍,了解了这个基于Stratus的video phone是如何工作的。由于Adobe的demo需要运行一个python写的web service才可以运行 — 这个web service用于用户名与peer ID之间的转换,真实项目中我们不可能用256-bit 的 peer ID作为联系人的用户名,所以做一个用户名到Peer ID之间的转换是很用必要的,打电话时只需要知道对方的登陆用户名就可以联系,不需要知道这个超长的不可能记住的Peer ID。可能很多不熟悉python的人没有成功运行源代码,现在我就从我的角度告诉大家如何创建这么一个 P2P 电话。(当然不需要额外的web service) 首先还是了解一些必要的知识RTMFP?— RTMFP是Adobe公司开发的一套新的通信协议,该协议可以让使用Adobe Flash Player的终端用户之间进行直接通信,RTMFP基于UDP而Flash Media Service支持的RTMP是基于TCP的。 Stratus?— Adobe Stratus service beta 是支持RTMFP 的服务器。它是一个中转式的服务,它的作用是建立flash player之间的通讯。即使它们位于NATs的后面。与FMS不同,Stratus不支持媒体转播,共享对象,脚本等等,你只能开发客户端之间直接联系的应用程序。 我们的网络电话就是基于上面描述的技术,在开始之前有一些准备工作要做。
接上篇,这一讲里我告诉大家如何链接另一个flash客户端,并且发送文字信息,在下一讲中会引入更多的内容,比如,“是否接收对方呼叫”,“语音和视频的发送” 等等。 看这篇教程时一定要把自己分成“呼叫者”和“被呼叫者”两个身份来看,否者有可能会看得头晕,呵呵。现在我们开始。 1. 首先了解一下我们会用到的变量,这里要最主要的四个NetStream,他们的作用请看注释。
2. 下面是主要用到的方法。呼叫者的主要方法/事件触发顺序, init() 被呼叫者主要方法/事件的调用触发顺序 init() 3. Demo (请打开两个浏览器进行Demo) :操作方法:
4. 源代码下载与主要方法代码,学习请看注释,写的很清楚输入用户名,点击 “链接”时触发下面的代码View Code?ACTIONSCRIPT3
与stratus链接成功后在case “NetConnection.Connect.Success”里调用下面的方法 呼叫者输入对方Peerid,点击呼叫后执行下面的代码
被呼叫者在收到呼叫时执行
呼叫者与被呼叫者链接成功后执行
发送信息与接收信息代码
源代码
在Flex 迷你教程 — 基于Stratus的P2P网络电话 (2)中我们已经知道如何链接一个客户端并且互相发送短信,今天来扩展下面的这些内容
首先来看看Demo:Demo 操作: 1. 输入任意名称,点击链接 (两台机器或者两个浏览器) Demo地址: http://flextheworld.com/flash/p2p/P2pPhoneDemo.html
Demo截图:
新添加的代码首先是修改call() function,根据不同的label执行不同的事件,如果callYou.label是 “接受”,执行accpetHandle()与呼叫者建立链接,如果是”挂断”,那么执行hangup()挂断双方的通讯,如果是其他(也就是”呼叫”),则执行后面的内容。 呼叫时调用publishVide和publishAudio将视频与音频附加到outgoingStream发送。在onConnectSuccesss事件中播放被呼叫者返回的视频和音频。监听onHangup事件来控制挂断。呼叫时将“呼叫”改为“挂断”。 View Code?ACTIONSCRIPT3
被呼叫者在监听到呼叫者的呼叫时不马上回应,只是提示被呼叫者 “正在被链接”,同时将“呼叫”改为“接受”,监听onHangup事件 点击“接受”后,开始向呼叫者发送信息流,包括视频与音频。同时播放呼叫者发送的视频与音频,最后发出onConnectSuccess事件
点击挂机后在上面提到的call()中执行hangup(),同时发送onHangup事件,这样另一方也能挂断电话。挂机后将”挂机”再改为”呼叫”,允许下一次的呼叫和链接
publishVideo和publishAudio function
源文件下载 (装了一个类似论坛的回复才能下载的插件,试试)
http://www.flextheworld.com/2009/01/flex-stratus-p2p-phone.html
http://www.flextheworld.com/2009/01/flex-stratus-phone-2.html
http://www.flextheworld.com/2009/01/flex-stratus-phone-3.html
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |