2009年12月アーカイブ

RTMPとBitmapData.draw

| コメント(0) | トラックバック(0)
RTMPストリーミングビデオをBitmapData.drawするには
ストリーミングサーバ側の設定で下記の設定をしないといけないわけですが
<AudioSampleAccess enabled="true" />

設定しているにもかかわらずエラーが出続けてdrawできない時がある。
10回接続して1回くらい起こる。
その時はonMetaDataイベントも受け取れていない。

よくわからないけどタイミングの問題らしく
"NetConnection.Connect.Success"が届いた直後にstream.play()するとダメみたい。
下記のような感じで0.1秒くらい待ってからplay()するとエラーが出なくなった。

var _video : Video = new Video(320, 240);
var _stream : NetStream;
var _connection:NetConnection = new NetConnection();

function connect(){
    _connection.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
    _connection.connect(rtmp_app);
}
function onNetStatus( event : NetStatusEvent ){
    switch(event.info.code){
        case "NetConnection.Connect.Success":
            _stream = new NetStream(_connection);
            _video.attachNetStream(_stream);
            var _timer:Timer = new Timer(100, 1);
            _timer.addEventListener(TimerEvent.TIMER, onTimer);
            _timer.start();
            break;
    }
}
function onTimer(e:TimerEvent){
    _stream.play(rtmp_file);
}

buffer時間と関係あるのかな。

アーカイブ