FMS NetStream对象2008-04-02 17:47NetStream对象是在所有联机对象之间传递影音串流。如果你仅仅是为了传递文字聊天内容,使用共享对象就可以解决,不必要使用这个对象。
该对象的基本属性有
time 到目前为止,串流资料播放的秒数
bufferTime 缓冲区的最大秒数
currentFps 当前播放影像的速率(每秒帧数)
bufferLength 当前缓冲区的资料秒数
liveDelay 实时播放视频流的间隔
但是当你想知道当前播放的影像的总长度的时候,必须调用服务器端的方法才可以,因为客户端的FlashPlayer是无法获知数据流的总长的。你需要在客户端写如下方法:
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文件中的相关事件中写入:
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 : }
相关方法参考:
setBufferTime ( 秒数)
可以设置缓冲区的大小以提高低品质的网络情况
注意:bufferLength大小总是不大于bufferTime
attachVideo ( 影像来源,[ 拍摄模式 ] )
将摄像机对象的影像追加给串流对象,如果影像来源为null,将停止捕捉影像
拍摄模式省略表示捕捉连续的影像;若为0则只拍摄单元格画面;大于0,将以此数值为秒数间隔,连续拍摄单元格影像。
attactAudio ( 声音来源 )
将麦克风的音源设定给串流对象
publish ( 串流资料名,[ 播出方式 ])
如果串流资料名没有指定则停止播出
播出方式有live(默认值)实时播出但不存储;record 播出同时以串流资料名.flv文件存储,路径为应用程序路径下面的streams文件夹;append 播出的同时追加到指定名称的flv文件中,如果不存在,则自动创建。
pause()
暂停、开始播放
close ()
停止发布或播放当前所有数据流,把 NetStream.time 属性设置为 0, 使得其它客户端可以使用该数据流,该方法当你使用 NetStream.play() 或NetStream.publish() 的时候被隐含调用
play( 串流名称,起始时间,长度,是否清除前一个串流 )
起始时间默认值为-2 表示flash会先尝试播放实时影音,否则就播放指定识别名称的文件
若为-1 将只播放实时影音 若为0 将只播放指定名称的录像内容
长度参数指定影音播放的秒数 默认为-1 表示一直播放到结束 为其它值为播放到指定秒数的内容
receiveVideo(fps)
指定播放串流的速率fps设定为0时,flash将停止播放影像
seek(秒数)
快倒倒录像文件倒指定秒数的画面,如果设为0,则跳转到开头
可以使用相对时间来跳转,如
client_ns.seek(client_ns.time-3)
如果要在传输音频或视频流的同时,包含文本数据等,也就是说进行数据交换,则可以使用send方法。
可以在客户端包含下面的actionscript:
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');
在接收端可以使用下面代码:
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 : }
关闭视频流的几种方法:
1 : myStream_ns.publish(false);// 停止整个串流
2 : myStream_ns.close();//关闭串流,当然也就停止了串流播放
3 : mystream_ns.attachVideo(null);//仅仅停止视频播放,仍然保持音频播放
分享到:
相关推荐
`NetStream` 对象允许用户将音频、视频和数据流发送到 FMS 服务器。在示例代码中,可以看到 `NetStream` 对象的创建过程,以及如何将其与摄像头和麦克风关联起来。 ```as3 ns = new NetStream(nc); ns.attachCamera...
1. **Flash与PHP通信**:通过Flash的NetConnection和NetStream对象,可以建立与FMS的连接,然后通过AMF(Action Message Format)协议发送和接收数据到PHP服务器。 2. **RTMP协议**:了解如何使用Flash Player与FMS...
4. **发布流**:一旦连接成功,你可以创建一个NetStream对象,使用`NetStream.attachCamera()`和`NetStream.attachAudio()`方法将用户的摄像头和麦克风连接到该流。然后,通过`NetStream.publish()`方法发布这个流到...
2. 数据传输:通过NetStream对象进行数据流的发送和接收,例如播放视频或音频,或者传递游戏状态数据。 3. 事件监听:客户端可以通过监听NetConnection和NetStream的事件来处理连接状态变化、数据到达等事件。 4. ...
文档"《Fms 视频录制屏幕共享 附源码.doc》"主要涉及使用Adobe Flash Media Server (FMS) 实现屏幕共享和视频录制的功能。FMS 是一款强大的实时流媒体服务器,它允许开发者创建实时交互式的多媒体应用程序,包括视频...
在FLEX中,我们可以使用NetConnection和NetStream对象来实现这个功能。首先,我们需要创建一个NetConnection对象,然后通过connect()方法连接到服务器。接着,创建一个NetStream对象,设置其bind()方法绑定到本地的...
- 使用`NetConnection`对象的`connect`方法连接至指定的FMS服务器地址,例如`rtmp://localhost/firstFMS`。 - 添加事件监听器以便接收连接状态的更新。 5. **事件处理**: - 实现`onNetStatusHandler`函数处理...
2. 定义变量,包括NetConnection对象(pnc、rnc)、NetStream对象(pns、rns)、Camera对象(cam)、Microphone对象(mic)以及Video对象(video): ```actionscript private var pnc:NetConnection; private var ...
开发者可以通过监听NetStream对象上的事件来控制流的播放、暂停、停止等操作,从而实现视频聊天功能。 **视频录制** FMS 3.5还允许用户在客户端进行视频录制并存储在服务器上。这个功能依赖于RecordControl接口,...
2. 实例化NetConnection和NetStream:在客户端,通过Flash Player或者AIR应用,需要实例化NetConnection对象来连接到FMS服务器,然后创建NetStream对象进行音频、视频的播放或录制。 3. 数据交互:FMS3支持AMF...
在发送视频的场景中,Flex客户端会通过NetConnection对象连接到FMS,然后使用NetStream对象发布视频。接收视频时,同样通过NetConnection和NetStream,但这次是从FMS订阅视频流。源码可能还包括用户界面组件,如...
视频流的实现通常涉及到对`NetStream`对象的使用,通过调用`play`和`publish`等方法来控制流媒体的播放和发布。 #### 五、构建聊天室实例 利用FMS的功能,开发者可以轻松创建简单的聊天室应用。聊天室的基本架构...
客户端和服务器之间的交互基于事件驱动模型,通过`NetConnection`和`NetStream`对象进行。 在实际开发中,开发者还需要关注网络连接状态、错误处理、数据安全和性能优化等问题。例如,使用`NetStatusEvent`监控网络...
在`onClickHandler`函数中,当用户点击按钮时,我们创建一个新的`NetConnection`对象来建立到FMS服务器的连接。实际的连接过程还需要配置连接URL和响应处理器,以及处理可能的网络状态变化和错误事件。 类似地,...
4. **编写ActionScript代码**:NCTest.swf的AS代码需要实现与FMS的连接,例如使用NetConnection对象来建立连接,NetStream对象来处理流媒体数据,并使用trace函数输出日志信息。 5. **测试连接**:运行NCTest.swf,...
4. **播放流媒体**:在`connectStream()`方法中,创建`NetStream`对象,附加视频组件,并设置初始缓冲时间。 #### 四、FMS更新带来的新特性 文档特别提到,在Flash Player 9更新3版本后,当流停止时,系统不会立即...
- **定义**:MovieClip类使得开发者能够指定声音的来源,既可以是本地捕获的声音(通过Microphone对象),也可以是从运行Flash Media Server的应用程序中流出的声音(通过NetStream对象)。 - **用途**:适用于处理...
- `NetConnection`:在Flex中,这是建立与FMS服务器连接的主要对象,负责管理实时数据传输。 - `NetStream`:用于发送和接收流媒体数据,包括创建、播放、暂停和停止流。 - `Camera` 和 `Microphone`:分别代表...
当录音开始后,Microphone类会产生一个NetStream对象,我们可以用它来处理音频数据。NetStream对象可以用来播放、记录或发送音频和视频流。使用`record()`方法启动录音,并通过`attachAudio()`将Microphone对象连接...