Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2014, 15:11   #1
an_private
Пользователь
 
Регистрация: 17.10.2014
Сообщений: 17
По умолчанию Как выяснить точное время, когда был захвачен кадр

Пишу программу захвата видео. Для моих задач нужно в заголовок файла вписывать точное время захвата первого кадра (в идеале с точностью до кадра). Не могу понять - как его выяснить. Захват данных идёт через SampleGrabber.
Попытался в callback'е фикисировать время через банальный Now(). Результат совершенно неудовлетворительный - ошибка достигает нескольких секунд (!).
Есть ли какой-то способ вычислить точно - в какое время был захвачен первый кадр видео?
an_private вне форума Ответить с цитированием
Старый 18.10.2014, 22:29   #2
an_private
Пользователь
 
Регистрация: 17.10.2014
Сообщений: 17
По умолчанию

Забавно, но оказывается Date()+Time() даёт на порядок более точный результат чем Now(). Погрешность уменьшилась до пары кадров. Но всё равно интересно - может есть какой более точный вариант?
an_private вне форума Ответить с цитированием
Старый 18.10.2014, 22:40   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Что-то придумали. Все три функции идентично обращаются к GetLocalTime и только по разному результат формируют. Загляньте SysUtils
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.10.2014, 23:01   #4
an_private
Пользователь
 
Регистрация: 17.10.2014
Сообщений: 17
По умолчанию

Сам удивился. Delphi 7.0, результат замены просто налицо. Завтра проверю еще раз.
an_private вне форума Ответить с цитированием
Старый 20.10.2014, 18:51   #5
an_private
Пользователь
 
Регистрация: 17.10.2014
Сообщений: 17
По умолчанию

Нда, очень странно. Один и тот же код, при одном запуске даёт разбег +/-1 кадр, при другом вдруг начинает колбасить туда/сюда до пары секунд. Жалко, что семпл не таймстемпится - в таймстемпах у семплграббера только время от начала записи (в семплах или 0,1 микросекундах). Ладно, пойдёт и так, что поделаешь...
an_private вне форума Ответить с цитированием
Старый 24.10.2014, 13:32   #6
an_private
Пользователь
 
Регистрация: 17.10.2014
Сообщений: 17
По умолчанию

Тут вопрос возник, спрошу в "своей" теме
Предположим, что я хочу в одном графе использовать два samplegrabber'а. Коллбек на оба для простоты кода ставлю один и тот же. Как мне различать - из какого граббера пришёл коллбек? Хотел проверить MediaType у семпла, но GetMediaType отдаёт корректный MediaType только для первого семпла - у остальных он тот же, поэтому он отдаёт nil.
Какие еще методы можно придумать?
an_private вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен программист на паскаль, который был бы оннлайн в нужное время на +- 20 минут. tysovwik Фриланс 0 24.05.2012 19:11
Вставить в ячейку время когда была заполнена другая ячейка mr.beginner Microsoft Office Excel 7 23.05.2011 11:45
как получить один кадр с камеры? Пепел Феникса Java Мобильная разработка (Android) 2 09.01.2011 16:43
Как узнать когда был изменен (создан) интерфейс версии IPv6. Crazyman Работа с сетью в Delphi 0 15.12.2008 00:51
Как узнать когда браузер скачивает, а когда нет? iPod Работа с сетью в Delphi 1 07.05.2007 15:16