Здравствуйте, Pzz, Вы писали:
S>>Может дурацкий вопрос, но все же: допустим надо синхронизировать, сделать коллаж, 2-х видео с разным фпс, например с 12.5 и 30 (видео 2), как можно
S>>понизить fps для 2-го видео? Ну т.е. у 2-ого видео кадров в 2-3 раза больше, я должен соотв. каждый
S>>2 или 3 кадр пропускать? Ну вот даны 3 кадра 2-ого видео, какой из 3-х мне оставить, тот который по времени ближе к
S>>кадрам 1-ого видео? А вот OpenCV (пока ее использую), может это автоматом сделать, т.е. сохранить видео с новым fps?
S>>Как быть если fps не кратны, например 15 и 25 fps (или те же 12.5 и 30), искать нод?
Pzz>Ну насколько я понимаю, ты можешь взять буфер на кадр, отрисовывать туда с той скоростью, с которой отрисовывается, согласно FPS, а забирать оттуда с той скоростью, с которой тебе надо.
Вот как эту(эти) скорости вычислять?
Речь про видео, а не про rtsp поток, где может добавлять задержку и брать каждый i-й кадр. Допустим речь идет об 15 фпс и 25 фпс.
Соотв. .06 сек и .04 сек. Пример, начало, 0 сек -- берем по кадру с обоих видео. Далее + 0.06с, берем сл. кадр у 15 фпс, вопрос --
что брать у второй камеры 0.04с или 0.08с ? Как я себе пока представляю алгоритм, берем меньшее фпс, вычитываем у него кадры,
суммируем время, далее смотрим по второй камере какой кадр к этому времени лучше взять (ближайший или последний до или первый после).
Как-то
так. Ну т.е. вести учет времени по видео с меньшим фпс, а у второй
камеры вычислять желаемый номер кадра с учетом собственной фпс и прошедшего времени.
Pzz>Но если ты будешь это не руками писать, а воспользуешься библиотекой, то библиотека может заоптимизировать это дело, и избежать ненижной распаковки изображения до полного растра, а потом упаковки обратно (ну, если это в принципе возможно).
Ну вот по ссылке выше у OpecCV можно делать отдельно grab и retrieve, без рендеринга изображения. Но хотелось бы просто сделать
downsampling до нужной fps (если это вообще реально).