Добрый день. Делаю приложение для записи и предварительного просмотра видео. Упрощенный код:

Код AS3:
public function onMetaData( p_o:Object ):void
{
trace("onMetaData");
if( p_o.duration != null && !isNaN(p_o.duration) ){
_nFeedDur = Number( p_o.duration );
trace("_nFeedDur:" + _nFeedDur);
_nStartDur = getTimer();
trace("_nStartDur:" + _nStartDur);
}
}
};
private function createNetStream():void
{
ns = new NetStream( nc );
ns.client = this;
ns.addEventListener(NetStatusEvent.NET_STATUS, internalNetStatusHandler);
vidView.attachCamera( cam );
};
public function startPublish():void
{
ns.attachCamera(cam);
ns.attachAudio(mic);
ns.publish( streamName, recordType );
vidView.attachCamera( cam );
};
public function startPlay():void
{
seekToLive = true;
vidView.attachNetStream( ns );
ns.play( streamName, 0, -1 );
};
public function stopPlay():void
{
ns.close();
trace("stopPlay ");
};
И вот так отображаю время:

Код AS3:
private function onTime( p_e:TimerEvent=null ):void
{
var secs:int = ns.time;
this.dispatchEvent( new DataEvent( "time", false,false, secs.toString() ) );
trace("onTime secs: "+secs);
};
private function checkTime( p_b:Boolean ):void
{
if( p_b ){
if( !t.running ){
t.start();
}
} else {
if( t.running ){
("Timer Stop");
t.stop();
}
}
};
Проблема в том, что иногда видео записывается некорректно. А точнее как-то некорректно соотносится со временем. например, фактическая длительность видео - 5 сек, а duration в onMetaData - 10. И при проигрывании ns.time перескакивает с 1 сразу на 7 и тд. Проблема именно с записью, а не с отображением.
Иногда также вроде звук пропадает где-то на середине
Помогите, пожалуйста разобраться что к чему.
Спасибо.