Перейти к содержанию
Fire Monkey от А до Я
  • 0

Web камера (win)


POV

Вопрос

на сайте эмбаркадеры явно написано

VideoCaptureDevice extends the TCaptureDevice implementation to add specific behavior for video capturing devices (like web cameras).

Т.е. вебка должна бы работать. Однако не выходит каменный цветок:

 

  if (m.Current.GetDevicesByName('HD Pro Webcam C920') is TVideoCaptureDevice) then begin
    VideoCamera := m.Current.GetDevicesByName('HD Pro Webcam C920') as TVideoCaptureDevice;
    if VideoCamera <> nil then begin
      VideoCamera.OnSampleBufferReady := VideoBufferReady;
      VideoCamera.StartCapture;
    end;
  end;

 

По StartCapture приложение задумывается на несколько секунд, а затем вылетает с аксесс виолэйшн.

Всю вики облазил, не нашел в скудных примерах чего бы такого надо сделать чтобы оно заработало. Так как быть и стоит ли вообще этим заморачиваться в том смысле что темы 2х летней давности говорят о крайней медленности подхода. Оно всё также обстоит?

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Перепробовал кучу всего. В основном для VCL. Заработал лишь платный TVideoGrabber.

Затем смог таки установить логитековский драйвер, а не виндовый по умолчанию - заработало всё, что было из вариантов. В том числе и вышеприведённый.

Но проблема - не могу закрыть приложение. Лишь из среды убить удаётся. Что я делаю не так?

Ссылка на комментарий
  • 0

у меня ТРИ подключенных камеры - Logitech, ChinaNoName и встроенная web-камера

все три нормально запускаются и нормально останавливаются в простейшем варианте из примеров.

Берлин

Ссылка на комментарий
  • 0
20 часов назад, krapotkin сказал:

у меня ТРИ подключенных камеры - Logitech, ChinaNoName и встроенная web-камера

все три нормально запускаются и нормально останавливаются в простейшем варианте из примеров.

Берлин

Ну, видимо там ничего хитрого, просто надо потыркаться, варианты поискать. Если камеру остановлю заранее, то закрывается приложение норм. А вот в onClose остановка не работает не работает.

Ссылка на комментарий
  • 0
В 24.09.2017 в 16:54, POV сказал:

Ну, видимо там ничего хитрого, просто надо потыркаться, варианты поискать. Если камеру остановлю заранее, то закрывается приложение норм. А вот в onClose остановка не работает не работает.

Реализация данного механизма кривая. Внутри захват изображения с камеры в отдельном потоке идет, и через синхронизацию десятки раз в секунду выбрасывается на экран. В 99 процентах случаев завершения работы программы без остановки камеры или реже при остановке камеры вы получите взаимоблокировку основного потока и потока граббера с камеры. К сожалению, это зарыто глубоко в FMX и без того, чтобы перекурочить исходники не получится исправить работу.

Ссылка на комментарий
  • 0
11 минуту назад, POV сказал:

Отдал тестовый софт побаловаться.. На 4х камерах (и, видимо, на разных компах) лишь в одном месте камера заработала.

Ну, 25%! Для дельфин не плохой результат)))

Ссылка на комментарий
  • 0

Ну как бы то ни было, продолжил работу с этим кодом. И вот что странное вышло - на пустом проекте fps было до 30 (типично 24), а по мере его наполнения камера начала вести себя не предсказуемо.

То 1 fps, то 5, то 10.. иногда 20 покажет (но ооочень редко), а бывает что за секунду ни одного кадра не может выдать. Открываю исходный пустой проект - там 30 fps.

Никаких потоков и таймеров нет. Диспетчер задач показывает, что хорошо если 1% проца занято. Что за чудеса?

 

Ссылка на комментарий
  • 0

Дополнение небольшое..

Камеру втыкаю во фронтальные USB, там же подключен и переходник USB-RS232. И вот если COM-порт просто открыть какой-то сторонней прогой, то всё, частота кадров драматически падает. Если камеру воткнуть в задний разъем - 30 fps.

Но ведь куча библиотек под VCL прекрасно себе ведёт даже на фронтальном разъёме!

Ссылка на комментарий
  • 0
2 минуты назад, POV сказал:

Дополнение небольшое..

Камеру втыкаю во фронтальные USB, там же подключен и переходник USB-RS232. И вот если COM-порт просто открыть какой-то сторонней прогой, то всё, частота кадров драматически падает. Если камеру воткнуть в задний разъем - 30 fps.

Но ведь куча библиотек под VCL прекрасно себе ведёт даже на фронтальном разъёме!

А ты пробовал только на одном компе? Может это особенность конкретного экземпляра (конкретного USB порта). У меня вот, впереди одна флешка упорно не работает, а другая работает. А если в зад воткнешь, то обе работают))

Ссылка на комментарий
  • 0
1 час назад, POV сказал:

На другом компе пробовал только что, в конфигурации как оно планируется работать далее - USB3 + хаб. Прокатило, и я успокоился )

Так может в этом и кроется твоя тайна??? )))

Ссылка на комментарий
  • 0
1 час назад, POV сказал:

А чему прочие библиотеки работают как надо? 

Ты про что? Не говори загадками.

Изменено пользователем Vitaldj
Ссылка на комментарий
  • 0
6 минут назад, POV сказал:

компоненты TVideoGraber, TWebCamDBImage прекрасно работают, никакой зависимости от порта на соседнем УСБ. Но они все для VCL.

Повторюсь: "На соседнем USB". Делай все на одном и том же. Или проверь на другом компе получше.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...