PDA

Просмотр полной версии : проверка буферизации потоков


imdogma
22.06.2009, 17:22
Такая ситуация: есть плеер, который тянет по rtmp два потока - один видео, другой аудио. Смысл в том что аудиопоток заменяет собой звук у видео (а у видео потока я просто отключаю через receiveAudio(false) звук).
Не могу понять, как решить вот какой момент:
предположим у видео кончился буфер (оно останавливается), но у аудио потока буфер еще есть. Соотв звук продолжает играть а видео начинает подгружаться. Такое положение вещей меня не совсем устраивает (мне нужна синхронность - кончился у одного из потоков буфер - оба встали, второй дождался пока первый дозагрузится - и снова вместе заиграли). Пробовал вот так:

ns_video.addEventListener(NetStatusEvent.NET_STATUS, handleVideostream);
ns_audio.addEventListener(NetStatusEvent.NET_STATUS, handleAudiostream);
function handleVideostream(e:NetStatusEvent):void
{
if(e.info.code == "NetStream.Buffer.Empty")
{

ns_audio.pause();

trace("stop");

}
if(e.info.code == "NetStream.Buffer.Full")
{

ns_audio.resume();

trace("go");

}
}


function handleAudiostream(e:NetStatusEvent):void
{
if(e.info.code == "NetStream.Buffer.Empty")
{

ns_video.pause();

trace("stop");

}
if(e.info.code == "NetStream.Buffer.Full")
{

ns_video.resume();

trace("go");

}
}



в итоге получаю вообще нерабочий плеер. Если оставить только handleVideostream - еще как то более менее похоже на то, что мне нужно, но тогда я не могу проверять состояние буфера звука, и соотв. часто может видео играть без звука на какое то время. Какие есть соображения, друзья?:)

AL.exe
23.06.2009, 00:03
Вообще странно это. А протрейсите e.info.code от ns_audio - может туда почему-то не те статусы приходят. Ничего больше в голову не идет.