- 浏览: 1084764 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
http://bbs.9ria.com/viewthread.php?tid=79761&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000
原文地址:http://www.panovr.org/
ActionScript 3 API supporting RTMFP
为了支持RTMFP,Flash Player 10 中提供了一些新的AS 3 API。连接到Cirrus服务并创建类似于FMS下的端到端的媒体流。请注意,你必需在Flash Professional(CS4或更新版本)或者Flash Builder 4中使用AS 3,目标设置为Flash Player 10或AIR 1.5。
正如我之前所说,你需要先连接到Cirrus服务。
private const CirrusAddress:String = "rtmfp://p2p.rtmfp.net";
private const DeveloperKey:String = "your-developer-key";
private var netConnection:NetConnection;
netConnection = new NetConnection(); netConnection.addEventListener(NetStatusEvent.NET_STATUS, netConnectionHandler); netConnection.connect(CirrusAddress + "/" + DeveloperKey);
当你用Adobe Developer Connection帐户登录到Cirrus beta服务站点上时,会分配一个开必key。
当成功连接到Cirrus上时,你获取一个NetConnection.Connect.Success 事件。有几个连接失败的可能原因。如果你提供一个无效的开发key,或者指定了错误的Cirrus地址,你会收到 NetConnection.Connect.Failed事件。如果你的防火墙锁定了对外UDP传送,你会在90秒超时后,收到 NetConnection.connect.Failed事件。
在成功建立与Cirruse服务的连接后,将分配一个唯一的256位peer ID给你。为了接收你发布的音频、视频流,其它的Flash Player终端必需知道这个peer ID。怎样在相关Flash Player终端间交流这些peer ID,属于Flash Player或Cirrus服务范围之外。为了交换peer ID,可以用XMPP服务或一个简单的WEB服务,像Video Phone 样例一般。
Flash Player实例之间的直接通讯要使用单向 NetStream通道。如果你想要两个音频会话,每一个Flash Player都必须创建一个发送NetStream和一个接收NetStream。
首先,创建一个发送流。
private var sendStream:NetStream;
sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS); sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler); sendStream.publish("media");
sendStream.attachAudio(Microphone.getMicrophone()); sendStream.attachCamera(Camera.getCamera());
这意味着媒体被发布为端到端的流。由于Cirrus不能中转媒体,你只能发布为端到端的流。这个流包括了本地默认设备的音频和视频,你可以通过Settings Manager选择默认的设备。
注意:直到有FlashPlayer同意接收媒体流,音频/视频才会被发送。
现在,创建接收流:
private var recvStream:NetStream;
recvStream = new NetStream(netConnection, id_of_publishing_client);
recvStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler); recvStream.play("media");
这时候,你将听到声音,你也能创建一个Video对象来显示视频。为了创建接收NetStream,你必需知道发布者的256位peer ID。为了接收音频/视频,你必需知道发布的流的名称。
Advanced topics
发布者可在终端之上精细控制哪些可以接收他发布的流。当一个用户试图去接收一个分发流时,在发布NetStream上的onPeerConnect( )方法被调用(默认返回true)。发布者可以驳回某些Flash Player终端接收媒体的请求。
sendStream.client = o;
在发布者方面,NetStream.peerStreams属性保存着所有订阅正在分发的NetStream的实例。例如,用sendStream.send()能发送同一数据到所有订阅者。你可以用下面的方法发送信息到指定订阅者。
sendStream.peerStreams.send()
NetConnection.maxPeerConnections 属性指定了允许连接到发布者的对等流的数量。其默认值为8,但实际上,是取决于你的应用程序,你必须考虑到大多数ISP提供非对称的互联网接入服务。图1说明了三个Flash Player实例直接通讯。每个Flash Player的客户端发送和接收两个流,建立一个完全的连接网格。由于互联网下载的能力普遍高于上传的能力,你必须要格外小心,不要超最终用户的上行负荷。
Figure 1. End-to-end connections using the Cirrus service
图1,使用Cirrus服务的端到端连接
NetConnection.unconnectedPeerStreams属性是一个尚未与分发NetStream关联的NetStreams的数组。当一分发流与一个订阅流名称相同时,这个订阅NetStream从这个数组转移到分发的NetStream.peerStreams数组。
Exploring the Video Phone sample application
为了说明如何使用Flash Player 10的端到端功能,我们已经开发了一个Video Phone应用示例。它也是这份文档的一部分。
Video Phone靠一个简单的HTTP服务交换Flash Player peer ID。该脚本作为包的一部分。此WEB服务不提供任何的用户身份认证。Flash Player在成功连接到Cirrus之后,注册一个peer ID。当拨通一个电话时,Video Phone呼叫者通过web服务查找接受者的ID。
为了主办这个Video Phone样例,Adobe专门运行这个web服务。在你建立自己的Video Phone样例时,你必须运行你自己的web服务,并在VideoPhonLabs.mxml中指定WebServiceUrl。你应该重写AbstractIdManger类去实现你自己的peer ID交换机制。例如,XMPP协议、Google 应用服务或Facebook框架。
建立Video Phone应用样例需要以下步骤:
使用提供的reg.cgi Python脚本,运行用于交换peer ID的web服务主机。
用Flash Builder 4创建一个新Flex项目。
将包中的源文件添加到项目中的src文件夹中。
在VideoPhoneLabs.mxml中用DeveloperKey指定你的Cirrus开发者key。
在VideoPhoneLabs.mxml文件中用WebServiceUrl指定web服务的URL。
本Video Phone应用示例使用了电视模型。呼叫建立过程是通过使用端到端NetStream.send() 的信息。由于你只能在已创建的NetStream上使用NetStream.send()方法,Video Phone发布一个所谓的“listener stream”(用固定名称)到其它能连接的Flash Player终端。当A用户(呼叫者)想要与B用户联系,他要订阅B用户的listener stream。这时候, B用户收到呼叫者的peer ID(用onPeerConnect() )并订阅A用户的媒体流。通过这个媒体流,A用户通知B用户有关他的用户友好的名字(用NetStream.send()方法),即用户可以选择接受或是拒绝呼叫。如果接受呼叫,B用户发布媒体流,建立两路通讯。
Where to go from here
在这篇文章中,除了介绍了新RTMFP协议的一些最令人兴奋的功能之外,还概述了新的AS 3 的API。读完本文,你应该对如何使用这个革命性的协议有了一个很好的理解。希望你能运用Flash Player 10 和AIR的端到端和高级媒体能力开发出一鸣惊人的应用软件。
原文地址:http://www.panovr.org/
ActionScript 3 API supporting RTMFP
为了支持RTMFP,Flash Player 10 中提供了一些新的AS 3 API。连接到Cirrus服务并创建类似于FMS下的端到端的媒体流。请注意,你必需在Flash Professional(CS4或更新版本)或者Flash Builder 4中使用AS 3,目标设置为Flash Player 10或AIR 1.5。
正如我之前所说,你需要先连接到Cirrus服务。
private const CirrusAddress:String = "rtmfp://p2p.rtmfp.net";
private const DeveloperKey:String = "your-developer-key";
private var netConnection:NetConnection;
netConnection = new NetConnection(); netConnection.addEventListener(NetStatusEvent.NET_STATUS, netConnectionHandler); netConnection.connect(CirrusAddress + "/" + DeveloperKey);
当你用Adobe Developer Connection帐户登录到Cirrus beta服务站点上时,会分配一个开必key。
当成功连接到Cirrus上时,你获取一个NetConnection.Connect.Success 事件。有几个连接失败的可能原因。如果你提供一个无效的开发key,或者指定了错误的Cirrus地址,你会收到 NetConnection.Connect.Failed事件。如果你的防火墙锁定了对外UDP传送,你会在90秒超时后,收到 NetConnection.connect.Failed事件。
在成功建立与Cirruse服务的连接后,将分配一个唯一的256位peer ID给你。为了接收你发布的音频、视频流,其它的Flash Player终端必需知道这个peer ID。怎样在相关Flash Player终端间交流这些peer ID,属于Flash Player或Cirrus服务范围之外。为了交换peer ID,可以用XMPP服务或一个简单的WEB服务,像Video Phone 样例一般。
Flash Player实例之间的直接通讯要使用单向 NetStream通道。如果你想要两个音频会话,每一个Flash Player都必须创建一个发送NetStream和一个接收NetStream。
首先,创建一个发送流。
private var sendStream:NetStream;
sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS); sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler); sendStream.publish("media");
sendStream.attachAudio(Microphone.getMicrophone()); sendStream.attachCamera(Camera.getCamera());
这意味着媒体被发布为端到端的流。由于Cirrus不能中转媒体,你只能发布为端到端的流。这个流包括了本地默认设备的音频和视频,你可以通过Settings Manager选择默认的设备。
注意:直到有FlashPlayer同意接收媒体流,音频/视频才会被发送。
现在,创建接收流:
private var recvStream:NetStream;
recvStream = new NetStream(netConnection, id_of_publishing_client);
recvStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler); recvStream.play("media");
这时候,你将听到声音,你也能创建一个Video对象来显示视频。为了创建接收NetStream,你必需知道发布者的256位peer ID。为了接收音频/视频,你必需知道发布的流的名称。
Advanced topics
发布者可在终端之上精细控制哪些可以接收他发布的流。当一个用户试图去接收一个分发流时,在发布NetStream上的onPeerConnect( )方法被调用(默认返回true)。发布者可以驳回某些Flash Player终端接收媒体的请求。
var o:Object = new Object(); o.onPeerConnect = function(subscriberStream:NetStream):Boolean { if (accept) { return true; } else { return false; } }
sendStream.client = o;
在发布者方面,NetStream.peerStreams属性保存着所有订阅正在分发的NetStream的实例。例如,用sendStream.send()能发送同一数据到所有订阅者。你可以用下面的方法发送信息到指定订阅者。
sendStream.peerStreams.send()
NetConnection.maxPeerConnections 属性指定了允许连接到发布者的对等流的数量。其默认值为8,但实际上,是取决于你的应用程序,你必须考虑到大多数ISP提供非对称的互联网接入服务。图1说明了三个Flash Player实例直接通讯。每个Flash Player的客户端发送和接收两个流,建立一个完全的连接网格。由于互联网下载的能力普遍高于上传的能力,你必须要格外小心,不要超最终用户的上行负荷。
Figure 1. End-to-end connections using the Cirrus service
图1,使用Cirrus服务的端到端连接
NetConnection.unconnectedPeerStreams属性是一个尚未与分发NetStream关联的NetStreams的数组。当一分发流与一个订阅流名称相同时,这个订阅NetStream从这个数组转移到分发的NetStream.peerStreams数组。
Exploring the Video Phone sample application
为了说明如何使用Flash Player 10的端到端功能,我们已经开发了一个Video Phone应用示例。它也是这份文档的一部分。
Video Phone靠一个简单的HTTP服务交换Flash Player peer ID。该脚本作为包的一部分。此WEB服务不提供任何的用户身份认证。Flash Player在成功连接到Cirrus之后,注册一个peer ID。当拨通一个电话时,Video Phone呼叫者通过web服务查找接受者的ID。
为了主办这个Video Phone样例,Adobe专门运行这个web服务。在你建立自己的Video Phone样例时,你必须运行你自己的web服务,并在VideoPhonLabs.mxml中指定WebServiceUrl。你应该重写AbstractIdManger类去实现你自己的peer ID交换机制。例如,XMPP协议、Google 应用服务或Facebook框架。
建立Video Phone应用样例需要以下步骤:
使用提供的reg.cgi Python脚本,运行用于交换peer ID的web服务主机。
用Flash Builder 4创建一个新Flex项目。
将包中的源文件添加到项目中的src文件夹中。
在VideoPhoneLabs.mxml中用DeveloperKey指定你的Cirrus开发者key。
在VideoPhoneLabs.mxml文件中用WebServiceUrl指定web服务的URL。
本Video Phone应用示例使用了电视模型。呼叫建立过程是通过使用端到端NetStream.send() 的信息。由于你只能在已创建的NetStream上使用NetStream.send()方法,Video Phone发布一个所谓的“listener stream”(用固定名称)到其它能连接的Flash Player终端。当A用户(呼叫者)想要与B用户联系,他要订阅B用户的listener stream。这时候, B用户收到呼叫者的peer ID(用onPeerConnect() )并订阅A用户的媒体流。通过这个媒体流,A用户通知B用户有关他的用户友好的名字(用NetStream.send()方法),即用户可以选择接受或是拒绝呼叫。如果接受呼叫,B用户发布媒体流,建立两路通讯。
Where to go from here
在这篇文章中,除了介绍了新RTMFP协议的一些最令人兴奋的功能之外,还概述了新的AS 3 的API。读完本文,你应该对如何使用这个革命性的协议有了一个很好的理解。希望你能运用Flash Player 10 和AIR的端到端和高级媒体能力开发出一鸣惊人的应用软件。
发表评论
-
一个基于STARLING的TOWER塔防游戏
2012-07-24 15:27 0一个基于STARLING的TOWER塔防游戏 -
HttpStatusConfig --一个HTTP 协议返回的 解析说明类
2012-04-18 16:40 0package guwanyuan.qicool.game ... -
水果忍者鼠标跟随特效制作[转载]
2012-03-01 16:06 2449实现这效果其实比较简单,主要是思路~! package ... -
ColorMatrixFilter - 获得相应颜色的色调 函数
2012-02-08 23:03 0/**获得相应颜色的色调的滤镜**/ public sta ... -
[教程] 路点导航(Waypoint Navigation)
2011-12-31 00:51 0前言:这个不难,所以知道的童鞋不要喷,不知道的童鞋也不要怕,要 ... -
Embed绑定XML与txt文本文件
2011-12-28 15:54 4648使用Embed标签可以将图片绑定到swf中并显示,那么我 ... -
弹弹堂测试
2011-12-08 04:21 0弹弹堂测试弹弹堂测试 -
一些DEMO
2011-11-28 17:42 0一些DEMO一些DEMO -
[转]三次贝尔曲线
2011-11-10 01:09 1923http://bbs.9ria.com/viewt ... -
[心得] 完美解决as3在ie中初始化时stageWidth和stageHeight为0的问题
2011-11-03 00:46 2938先看下面的一段脚本,这是比较经典的初始化脚本: pa ... -
五子棋算法详解
2011-10-31 04:14 0五子棋算法详解五子棋算法详解五子棋算法详解 -
[转]服务器端ActionScript语言参考
2011-10-31 00:29 0服务器端ActionScript语言参考 -
2个加载作用
2011-10-24 22:14 1867第一话:加载Base64 encoded string 通过 ... -
[转] 一种完全没有边缘痕迹的渐变AS做法
2011-10-23 00:21 1881http://bbs.9ria.com/viewthread. ... -
[心得] localToGlobal 和 globalToLocal 的理解
2011-10-20 03:10 0http://bbs.9ria.com/viewthread. ... -
翻译: Flash文本引擎, 第二部分: 交互
2011-10-20 02:34 0http://www.riadev.com/flex-thre ... -
翻译: Flash文本引擎, 第一部分: 概述
2011-10-20 02:33 0http://www.riadev.com/flex-thre ... -
珍宝探索 AS3-过关类小游戏
2011-10-13 02:15 0珍宝探索 AS3-过关类小游戏 -
设计模式(23种设计模式.AS3实现)
2011-10-13 02:04 0设计模式(23种设计模式.AS3实现) -
图片相册代码_photo_gallery
2011-10-12 11:17 0图片相册代码_photo_gallery
相关推荐
ta_lib-0.5.1-cp312-cp312-win32.whl
课程设计 在线实时的斗兽棋游戏,时间赶,粗暴的使用jQuery + websoket 实现实时H5对战游戏 + java.zip课程设计
ta_lib-0.5.1-cp310-cp310-win_amd64.whl
基于springboot+vue物流系统源码数据库文档.zip
GEE训练教程——Landsat5、8和Sentinel-2、DEM和各2哦想指数下载
知识图谱
333498005787635解决keil下载失败的文件.zip
【微信机器人原理与实现】 微信机器人是通过模拟微信客户端的行为,自动处理消息、发送消息的程序。在Python中实现微信机器人的主要库是WeChatBot,它提供了丰富的接口,允许开发者方便地进行微信消息的接收与发送。这个项目标题中的"基于python实现的微信机器人源码"指的是使用Python编程语言编写的微信机器人程序。 1. **Python基础**:Python是一种高级编程语言,以其简洁的语法和强大的功能深受开发者喜爱。在实现微信机器人时,你需要熟悉Python的基本语法、数据类型、函数、类以及异常处理等概念。 2. **微信API与WeChatBot库**:微信为开发者提供了微信公共平台和微信开放平台,可以获取到必要的API来实现机器人功能。WeChatBot库是Python中一个用于微信开发的第三方库,它封装了微信的API,简化了消息处理的流程。使用WeChatBot,开发者可以快速搭建起一个微信机器人。 3. **微信OAuth2.0授权**:为了能够接入微信,首先需要通过OAuth2.0协议获取用户的授权。用户授权后,机器人可以获取到微信用户的身份信息,从而进行
基于springboot实验室研究生信息管理系统源码数据库文档.zip
张力控制,色标跟踪,多轴同步,电子凸轮,横切等工艺控制案例。
在Python编程环境中,处理Microsoft Word文档是一项常见的任务。Python提供了几个库来实现这一目标,如`python-docx`,它可以让我们创建、修改和操作.docx文件。本教程将重点介绍如何利用Python进行Word文档的合并、格式转换以及转换为PDF。 1. **合并Word文档(merge4docx)** 合并多个Word文档是一项实用的功能,特别是在处理大量报告或文档集合时。在Python中,可以使用`python-docx`库实现。我们需要导入`docx`模块,然后读取每个文档并将其内容插入到主文档中。以下是一个基本示例: ```python from docx import Document def merge4docx(file_list, output_file): main_doc = Document() for file in file_list: doc = Document(file) for paragraph in doc.paragraphs: main_doc.add_paragraph(paragraph.text) m
基于springboot+Javaweb的二手图书交易系统源码数据库文档.zip
基于springboot餐品美食论坛源码数据库文档.zip
基于springboot亚运会志愿者管理系统源码数据库文档.zip
使用WPF的数据样式绑定,切换对象数据值来完成控件动态切换背景渐变动画效果。 使用动画样式渲染比线程修改性能消耗更低更稳定
基于SpringBoot的企业客源关系管理系统源码数据库文档.zip
基于springboot+vue的桂林旅游网站系统源码数据库文档.zip
基于springboot嗨玩旅游网站源码数据库文档.zip
基于springboot的流浪动物管理系统源码数据库文档.zip
基于springboot课件通中小学教学课件共享平台源码数据库文档.zip