Re[5]: DirectShow проблемы со временем в графе?
От: AcidTheProgrammer Россия https://hts.tv/
Дата: 01.11.11 13:45
Оценка: +1
Здравствуйте, NickViz, Вы писали:


NV>Кмк отношение точности часов на камере и компе не имеет отношения к проблеме. как и точно 15.000 FPS.

NV>В граф приходит сырой фрейм. Для рендерера абсолютно не важно — какое у него было время в камере. И какой FPS задан. Важно — какое у него время в графе, т.е. когда его и на сколько отображать.
NV>Время фрейму проставляется из текущего времени графа. Время стопа — время старта + 1/FPS. Т.е. по идее — как бы время графа не бежало по отношению к камере или системному времени — рендерер должен нормально это дело отображать, т.к. для него фрейм свежий. И вот не выходит каменный цветок. Я вот думаю — может декодер (Axis H264) меняет таймстампы фреймов...

Как это не важно какое время... А время графа у вас откуда берется?? Это что какое-то магическое время которое автоматически подстраивается к любой частоте любого сигнала. Вы с часами графа что-нибудь делаете, если нет то оно как-раз будет системным. По часам графа у вас прошла секунда, а кадров пришло больше, т.к камера награбила больше кадров, у нее свое время. Что рендереру делать с лишними кадрами, естественно дропать и наоборот тормозить проигрывание и ждать пока с камеры что-нибудь придет.
Смотрите — количесто полученных кадров с камеры умноженное на FPS (время потока с камеры) все больше отличается от времени в графе. Ошибка накапливатся — время все больше расходится. До определенного момента рендерер этого не замечает, после определенного момента вы рассинхронизуетесь с рендерером так, что любой кадр рендерится либо тутже (время графа опережает), либо вы начинаете ждать все больше и больше и чем дольше вы играете, тем синее рассинхрон временных шкал. У вас поток начинает проигрываться не плавно, а в соответствии с неравномерными характеристиками канала передачи (сети) либо все буфера забиваются и видео играет пачками, а перерывы между ними все больше и больше.

NV>>>Проблемы появляются _только_ с течением времени и после определенного порога проявляются постоянно — т.е. каждую 1-2 секунды на экране дергается изображение (часть фреймов скипается) и сама картинка отстаёт от реальности на 1-2 секунды.


Так и будет. Рассинхрон будет все сильнее и сильнее.

NV>Далее, немного по "эксперименту": мы сами источник времени в граф не ставим, звука нет.


NV>Граф предельно прост: капчур-фильтр, декодер, рендерер. Всё это внутри нашей системы — надо попробовать в graph editor запустить. Проблема ещё в том, что для проявления рассинхронизации надо ждать 10-12 часов, т.е. полезные идеи проверить можно только на следующий день.


Не хотите забивать голову. Вот решение — уберите вообще время из сэмплов, все тутже будет ОК. С какой скоростью придет с такой и будет играться.
Хотите плавно — придется о времени подумать.

NV>Может стопать и стартовать граф регулярно — по идее время должно обнулиться. раза 3 в сутки...

Можете, завтра у пользователя будет другая камера с другими характеристиками...

NV>Николай.

Юрий.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.