加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex 迷你教程 — 基于Stratus的P2P网络电话

发布时间:2020-12-15 04:19:04 所属栏目:百科 来源:网络整理
导读:前些天把Adobe官方的p2p Video phone demo的研究了一遍,了解了这个基于Stratus的video phone是如何工作的。由于Adobe的demo需要运行一个python写的web service才可以运行 — 这个web service用于用户名与peer ID之间的转换,真实项目中我们不可能用256-bit

前些天把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不支持媒体转播,共享对象,脚本等等,你只能开发客户端之间直接联系的应用程序。

我们的网络电话就是基于上面描述的技术,在开始之前有一些准备工作要做。

  1. 确定你安装了 Flex SDK3.2.?这里下载
  2. 确定安装了flash payer 10 debug version (开发环境最好用debug version)??这里下载
  3. 申请一个 Stratus develper key?这里申请
  4. 新建一个项目,名字随意,位置随意,编辑项目属性 — Flex compiler — Require Flash player version 到 10:0:0
  5. 安装好上面的东西,然后等我明天来写? “基于Stratus的P2P网络电话 (2)”??

    :)


接上篇,这一讲里我告诉大家如何链接另一个flash客户端,并且发送文字信息,在下一讲中会引入更多的内容,比如,“是否接收对方呼叫”,“语音和视频的发送” 等等。

看这篇教程时一定要把自己分成“呼叫者”和“被呼叫者”两个身份来看,否者有可能会看得头晕,呵呵。现在我们开始。

1. 首先了解一下我们会用到的变量,这里要最主要的四个NetStream,他们的作用请看注释。

? View Code?ACTIONSCRIPT3

2. 下面是主要用到的方法。

呼叫者的主要方法/事件触发顺序,

init()
netConnectionHandler() — case “NetConnection.Connect.Success”:
initSendStream();
call();
onConnectSuccess()
onIm()

被呼叫者主要方法/事件的调用触发顺序

init()
netConnectionHandler() — case “NetConnection.Connect.Success”:
initSendStream();
onPeerConnect();
onIncomingCall();
onIm();

3. Demo (请打开两个浏览器进行Demo) :

操作方法:

  1. 任意填写用户名,点击链接。
  2. 在另一个浏览器同样登陆。
  3. 用其中一个的peerid作为链接ID呼叫对方。
  4. 链接成功后可以信息聊天。

4. 源代码下载与主要方法代码,学习请看注释,写的很清楚

输入用户名,点击 “链接”时触发下面的代码

View Code?ACTIONSCRIPT3

与stratus链接成功后在case “NetConnection.Connect.Success”里调用下面的方法

呼叫者输入对方Peerid,点击呼叫后执行下面的代码
被呼叫者在收到呼叫时执行
呼叫者与被呼叫者链接成功后执行
发送信息与接收信息代码
源代码
在Flex 迷你教程 — 基于Stratus的P2P网络电话 (2)中我们已经知道如何链接一个客户端并且互相发送短信,今天来扩展下面的这些内容

  1. 呼叫时在被呼叫端显示 “接受”,点击接受后双方建立链接。
  2. 呼叫试或者接通后可以挂机。
  3. 添加视频与音频通信。

首先来看看Demo:

Demo 操作:

1. 输入任意名称,点击链接 (两台机器或者两个浏览器)
2. 输入对方的peerId,点击呼叫
3. 被呼叫方点击 “接受” 建立链接。
4. 开始语音,视频,文字通讯.
5. 挂机

Demo地址:

http://flextheworld.com/flash/p2p/P2pPhoneDemo.html

Demo截图:

e59bbee78987-1

新添加的代码

首先是修改call() function,根据不同的label执行不同的事件,如果callYou.label是 “接受”,执行accpetHandle()与呼叫者建立链接,如果是”挂断”,那么执行hangup()挂断双方的通讯,如果是其他(也就是”呼叫”),则执行后面的内容。

呼叫时调用publishVide和publishAudio将视频与音频附加到outgoingStream发送。在onConnectSuccesss事件中播放被呼叫者返回的视频和音频。监听onHangup事件来控制挂断。呼叫时将“呼叫”改为“挂断”。

View Code?ACTIONSCRIPT3

被呼叫者在监听到呼叫者的呼叫时不马上回应,只是提示被呼叫者 “正在被链接”,同时将“呼叫”改为“接受”,监听onHangup事件

点击“接受”后,开始向呼叫者发送信息流,包括视频与音频。同时播放呼叫者发送的视频与音频,最后发出onConnectSuccess事件

点击挂机后在上面提到的call()中执行hangup(),同时发送onHangup事件,这样另一方也能挂断电话。挂机后将”挂机”再改为”呼叫”,允许下一次的呼叫和链接

publishVideo和publishAudio function

源文件下载 (装了一个类似论坛的回复才能下载的插件,试试)


P2pPhoneDemo3 (1861)


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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读