Воспроизведение потоков 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{}