Перейти к содержанию
  • Регистрация
  • 0
kolyalyan

[TVideoCaptureDevice] Как оптимизировать скорость считывания данных с камеры?TVideoCaptureDevice

Вопрос

У меня следующая проблема, когда подключаюсь к камере телефона, то кадры отображаются с ужасной задержкой, нааамного медленнее чем в сторонних приложениях работающих с камерой.

Для подключения к камере использую следующий код:
 

procedure TForm1.FormShow(Sender: TObject);
var 
   CDM : TCaptureDeviceManager;
   VC : TVideoCaptureDevice;

begin
   CDM := TCaptureDeviceManager.Current;
   VC := CDM.DefaultVideoCaptureDevice; 
   if (VC <> nil) then VC.OnSampleBufferReady := VideoBufferReady;

   VC.StartCapture;
end;

Для загрузки кадров в TImage этот:
 

procedure TForml.VideoBufferReady(Sender: TObject; const ATime: int64); 
var 
   VCD : TVideoCaptureDevice; 

begin
   VCD := Sender as TVideoCaptureDevice;
   VCD.SampleBufferToBitmap(Image1.Bitmap, True);
end;

Ещё раз повторюсь, что всё работает, но чрезвычайно медленно. Пробовал стандартный компонент TCameraComponent, но он работает также или даже ещё медленнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

  • 0
2 часа назад, Rusland сказал:

Нет смысла спрашивать у человека, который задал единственный вопрос на форме и больше не появлялся )

Хотя меня тоже интересует тема записи видео в Android :)

А что именно интересует?

Я сделал тестовое приложение Android — пишет голос и видео, двумя вариантами камерой телефона и нативным MediaRecorder, без торможения и с хорошим FPS.

Пробую сейчас в сервис это запихать )

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
3 минуты назад, Pax Beach сказал:

А что именно интересует?

Я сделал тестовое приложение Android — пишет голос и видео, двумя вариантами камерой телефона и нативным MediaRecorder, без торможения и с хорошим FPS.

Пробую сейчас в сервис это запихать )

Поделитесь на форуме, тема очень интересная

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
42 минуты назад, ZuBy сказал:

Поделитесь на форуме, тема очень интересная

Я знал, что вы спросите )

Еще разбираюсь с некоторыми параметрами.

Пусть побудет интрига, часа через 4 закончу с делами, создам отдельный топик по этому поводу, все расскажу.

 

UPD:

Собственно, если не терпится узнать, все написано здесь.

Изменено пользователем Pax Beach

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
19 часов назад, Pax Beach сказал:

Пусть побудет интрига, часа через 4 закончу с делами, создам отдельный топик по этому поводу, все расскажу.

 

Ждем рассказ :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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


  • Похожий контент

    • От FREEFAR
      Всем привет.
      Есть такое событие TakePhotoFromLibraryAction. Но вызов его дает возможность загрузить только фото.
      А как же получить доступ к файлу типа GIF ну или к видео?
      Неужели свои писать контейнер читая расшаренную папку с фото?
    • От Yarpda
      Есть необходимость дать пользователю в приложении возможность подакрового контроль над воспроизведением видео. Т.е. у пользователя есть стрелочки влево и вправо нажимая на которые видео должно сменяться на один кадр вперед или назад. Или хотя-бы управлять скоростью воспроизведения видео, замедляя его. 
      Возможно ли такое в FMX (в частности под андроид)?
    • От uakmal
      Доброе время суток!
      Как можно воспроизводить потоковое видео в Delphi (FM) при работе с Android и iOS?
      Заранее благодарен! 
    • От Barbanel
      Есть такой код:
      if TPlatformServices.Current.SupportsPlatformService(IFMXCameraService, Service) then begin Params.Editable := True; Params.NeedSaveToAlbum := False; Params.RequiredResolution := TSize.Create(self.ClientHeight, self.ClientHeight); Params.OnDidFinishTaking := actTakePhotoFromCameraDidFinishTaking; Service.TakePhoto(btnInfoAddPhoto, Params); end else ShowMessage('This device does not support the camera service'); После того как фото сделано, появляется ошибка EBitmapLoadingFailed 'Loading bitmap failed (/storage/emulated/0/DCIM/Camera/IMG_20170503_170826.jpg).'
      Появилась после того как убрал из проекта права READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE.
       
      Вопрос: можно ли получать фото от камеры минуя их сохранение в память утсройства?
      PS спрашиваю, т.к. стоит задача избавиться от ненужных прав в манифесте.
      Всем заранее спасибо!
    • От Alex7wrt
      Добрый день.
      В FMX есть компоненты TVideoCaptureDevice и TCameraComponent. Эти компоненты имеют событие OnSampleBufferReady, которое генерирует кадры видео в битмап. 
      Вот мне и интересно, есть ли способ добиться  конвертации этих битмапов в  формат для youtube или других сервисов (может быть h264) и отправки в потоке?
    • От Rusland
      Как узнать что MediaPlayer закончил воспроизведение аудио/видео файла?
      С 2015 года что-нибудь изменилось?
    • От Pax Beach
      В Android 6 на Berlin 10.1.1 перестала работать стандартная функция TakePhotoFromCameraAction.

      Иногда работает, иногда нет.
      Поэтому я решил написать нативную замену этой функции. За основу взят пример с портала разработчиков Android.
      Мой пример про видео на базе отправки Intetn смартфону и получение результата в виде другого Intent, отлично работает.
      Но для фотографий этот пример сыпется, после выполнения фотографирования система возвращается в мое приложение и оно вылетает с ошибкой:
      Если заглянуть в исходнки, там все обвязано сообщениями в лог монитора. Последнее сообщение «+ Intent is sent».
      Помогите пожалуйста разобраться, в чем может быть проблема?
       
      PhotoIntent.zip
    • От Рагим
      Доброго времени суток. Имеется старый проект написанный на VCL. Хочу его перевести на FMX и столкнулся с тем, что не могу воспроизвести SWF. Компоненты Flash установлены и видны под VCL, а под FMX нет.
    • От Rusland
      Из демо AccessCameraApp взял код для получения снимка с камеры (собственно и кода там одна строчка).
      Периодически после вызова камеры и получения снимка я получаю черный экран (то есть управление обратно в приложение не передается)... через несколько секунд выходит ошибка Segmentation fault.

      Как лечить?
      PS. Поставил точку останова на 
      procedure TFrmMain.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap); begin ImgOrientir.Bitmap.Assign(Image); end; сюда управление не доходит !
       
    • От RapsodRF
      Всем привет!
      Подскажите, пожалуйста, как средствами FMX можно записать видео со звуком?
      Очень нужно! Заранее благодарю!
  • Последние посетители   0 пользователей онлайн

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

×
×
  • Создать...