0

在 AS3 中使用 rtmp 是否需要任何额外的代码。

我有这样的代码。这对于 rtmp 或任何其他所需的代码是否足够?

var strSource:String = "rtmp://myserver.com/file.flv";
var ncConnection = new NetConnection();
var nsStream = new NetStream(ncConnection);
nsStream.play(strSource);
4

1 回答 1

3

播放 RTMP 流需要与渐进流不同。

首先,您需要连接到应用程序,通常这是基本路径,但有时可能是一些文件夹,以防 RTMP 服务器提出不同的服务。

然后你需要监听NetConnection.Connect.Success事件派发的NetConnection事件。

连接 NetConnection 后,您可以NetStream在其上创建一个,然后播放流。

请注意,传递给 play 命令的参数应该只是流的名称,而不是完整路径。通常您还需要删除扩展名(取决于服务器和服务)。对于 H264 流,您可能还需要在流 id 前加上“mp4:”。

例子 :

// rtmp://myserver.com/service/myVideo.flv

var service:String = "rtmp://myserver.com/service/";
var streamID:String = "myVideo"; // or mp4:myVideo for H264

var netConnection:NetConnection;
var netStream:NetStream;

netConnection = new NetConnection();
netConnection.client = {onBWDone:onNetConnectionBWDone}; 
netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
netConnection.connect(service); 

// NetConnection status handlers

function netStatusHandler( event:NetStatusEvent ):void
{
    if(event.info.code == NetConnection.Connect.Success)
    {
        netStream = new NetStream(netConnection);
        netStream.client = {onMetaData:onMetaData, onPlayStatus :onPlayStatus};
        netStream.play(streamID);
    }
}

function onNetConnectionBWDone():void{}

// NetStream Status handlers

function onMetaData(o:Object):void{}
function onPlayStatus(o:Object):void{}
于 2010-03-31T15:39:53.673 回答