[AS3]as3发布视频流NetStream.publish()用法
可用性
Flash Player 6
Flash Communication Server MX
用法
public publish(name : String [, howToPublish : String] ) : Void
参数
name 一个字符串,用来识别这个流。如果你传递false,则发布操作会停止。这个流的订阅者在其调用
NetStream.play()时必
须传递同样的名字。你不需要为流名包含一个文件扩展名。
howToPublish 一个可选的字符串,用来指定如何发布流。有效值是"record"、"append",以及"live"。默
认值是"live"。
如果你为howToPublish传递"record",则Flash会发布和记录实况数据,把记录的数据保存到一个名
为whatToPublish.flv
的新文件中。这个文件被保存在服务器上包含这个服务器应用程序的目录的子目录中。如果这个
文件已经存在了,它
将被覆盖。
如果你为howToPublish传递"append",则Flash会发布和记录实况数据,把记录的数据追加到一个名
为name.flv的文件
中,这个文件被存储在服务器上包含这个服务器应用程序的目录中的子目录中。如果没有名为
name.flv的文件被发现,
则这个文件会被创建。
如果你省略了这个参数或是传递了"live",则Flash会发布实况数据但不记录它。如果name.flv存在
的话,它将被删除。
返回
无
描述
方法。把流音频、视频,以及来自客户机的文本消息发送到Flash Media Server,可选的在传输期间记
录这个流。这个方法
只对指定的流的发布者可用。
当你想要让一个订阅者播放一个已经被发布或记录的流时,不是使用这个方法。例如,假定你有一个
名为"allAboutMe"的
流,要使别人能够回放它,你只需为要使用的这个订阅者打开一个流:
var publish_ns:NetStream = new NetStream(my_nc);
var subscribe_ns:NetStream = new NetStream(my_nc);
当你记录一个流时,Flash创建一个FLV文件并把它存储在服务器上Flash Media Server applications目录
的一个子目录中。每
一个流都被存储在一个目录中,这个目录的名字与传递给当你记录一个流时,Flash创建一个FLV
NetConnection.connect()的instanceName值一样。
Flash会自动地创建这些目录,你不需要为每个实例名创建一个目录。例如:
//连接到一个应用程序的一个特定的实例,
//这个应用程序被存储在你的应用程序目录的一个名为"lectureSeries"的目录中。
//一个名为"lecture.flv"的文件被存储在一个名为
//"...\yourAppsFolder\lectureSeries\streams\Monday"的子目录中。
var my_nc:NetConnection = new NetConnection();
var my_nc:NetConnection = new NetConnection();
my_nc.connect("rtmp://server.domain.com/lectureSeries/Monday");
var my_ns:NetStream = new NetStream(my_nc);
my_ns.publish("lecture", "record");
//连接到同一应用程序的一个不同的实例
//但发出一个同样的命令
//一个名为"lecture.flv"的文件被存储在一个名为
//"...\yourAppsFolder\lectureSeries\streams\Tuesday"的子目录中。
var my_nc:NetConnection = new NetConnection();
my_nc.connect("rtmp://server.domain.com/lectureSeries/Tuesday");
var my_ns:NetStream = new NetStream(my_nc);
my_ns.publish("lecture", "record");
如果你没有为instanceName传递一个值的话,则name.flv会被存储在一个名为
"...\yourAppsFolder\appName\streams
\_definst_"的子目录中。
这个方法可以用许多不同的信息对象调用NetStream.onStatus。例如,如果有人已经在指定名的流上进
行了发布,则NetStream.onStatus会被用一个"NetStream.Publish.BadName"的code属性调用。
例子
下面的范例展示了如何发布和记录一个视频,然后再回放它。
var my_nc:NetConnection = new NetConnection();
my_nc.connect("rtmp://myServer.myDomain.com/appName/appInstance");
var src_ns:NetStream = new NetStream(my_nc);
src_ns.publish("stephen", "record");
src_ns.attachVideo(Camera.get());
//要停止发布和记录
src_ns.publish(false);
//要播放记录的流
src_ns.play("stephen");
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例