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

[TJMediaRecorder] Запись видео в Android. Native и Intent


Pax Beach

Вопрос

Обещал вам продемонстрировать возможность записи видео в Android.

Представляю решение с исходными кодами (VideoRecord.zip) для изучения этой возможности и использования в своих проектах.

На представленном снимке есть 2 главных кнопки: "Modal Intent Record" и "Native Record".

Screenshot_20161021-172114.png

 

Modal Intent Record — удобно использовать в приложениях, потому что запись ведется приложением камеры, поставляемым с телефоном. После съемки в приложение возвращается сообщение о результатах — удачно/неудачно.

Native Record — метод на базе интерфейса JMediaRecorder, используется, когда Intent Record не подходит. Например в Local Android сервисе ;-)

Пользуйтесь на здоровье.

 

Большая просьба к сообществу — помочь в комментариях с подбором оптимальных параметров записи видео в JMediaRecorder. Установленные сейчас параметры 640х480, и качество видео хромает.

Нужно научиться переключать камеры, менять степень сжатия, включать/выключать вспышку, звук затвора.

 

Здесь люди уже подбирали варианты параметров, но нужно протестировать на приложении из RAD Studio.

На ресурсе разработчиков Android тема по JMediaRecorder находится здесь.

 

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

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

  • 0
57 минут назад, Rusland сказал:

Как сделать чтобы отображалось на экране то что снимается через Native Record?

Интерфейс SurfaceView служит для этого.

 

Ссылка на комментарий
  • 0
В 21.10.2016 в 17:17, Pax Beach сказал:

Интерфейс SurfaceView служит для этого.

 

Поискал в исходниках FMX текст "SurfaceView". Более менее похожее под задачу нашел в Androidapi.JNI.Embarcadero.pas

  [JavaSignature('com/embarcadero/firemonkey/camerapreview/CamPreview')]
  JCamPreview = interface(JSurfaceView)
    ['{09E012FD-099E-45F9-AC84-DDB431920646}']
    function _GetmCamera: JCamera; cdecl;
    procedure _SetmCamera(Value: JCamera); cdecl;
    procedure draw(canvas: JCanvas); cdecl;
    procedure surfaceChanged(holder: JSurfaceHolder; format: Integer; w: Integer; h: Integer); cdecl;
    procedure surfaceCreated(holder: JSurfaceHolder); cdecl;
    procedure surfaceDestroyed(holder: JSurfaceHolder); cdecl;
    property mCamera: JCamera read _GetmCamera write _SetmCamera;
  end;
  TJCamPreview = class(TJavaGenericImport<JCamPreviewClass, JCamPreview>) end;

Как его применить и вывести, например, в небольшое окошко снимаемое видео?

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

Поискал в исходниках FMX текст "SurfaceView". Более менее похожее под задачу нашел в Androidapi.JNI.Embarcadero.pas


  [JavaSignature('com/embarcadero/firemonkey/camerapreview/CamPreview')]
  JCamPreview = interface(JSurfaceView)
    ['{09E012FD-099E-45F9-AC84-DDB431920646}']
    function _GetmCamera: JCamera; cdecl;
    procedure _SetmCamera(Value: JCamera); cdecl;
    procedure draw(canvas: JCanvas); cdecl;
    procedure surfaceChanged(holder: JSurfaceHolder; format: Integer; w: Integer; h: Integer); cdecl;
    procedure surfaceCreated(holder: JSurfaceHolder); cdecl;
    procedure surfaceDestroyed(holder: JSurfaceHolder); cdecl;
    property mCamera: JCamera read _GetmCamera write _SetmCamera;
  end;
  TJCamPreview = class(TJavaGenericImport<JCamPreviewClass, JCamPreview>) end;

Как его применить и вывести, например, в небольшое окошко снимаемое видео?

Класс описан в Androidapi.JNI.GraphicsContentViewText.pas 

Для меня задача стоит по-другому, как перевести JCanvas в TCanvas?

Ссылка на комментарий
  • 0
  • Модераторы
51 минуту назад, Pax Beach сказал:

Класс описан в Androidapi.JNI.GraphicsContentViewText.pas 

Для меня задача стоит по-другому, как перевести JCanvas в TCanvas?

можно наработки? я посмотрю что можно сделать

Ссылка на комментарий
  • 0
В 24.10.2016 в 19:10, ZuBy сказал:

можно наработки? я посмотрю что можно сделать

Есть мало материала, наработок пока нет.

Материал 1.

Материал 2.

Материал 3.

Androidapi.JNI.GraphicsContentViewText.pas — класс TJSurface

 

UPD:

Оказывается можно JBitmap преобразовывать в TBitmap, а я и не знал =)

Тогда на канве просто отображать, то что в JSurface твориться.

UPD 27-12-2016:

работа с камерой и создание приложения

 

Изменено пользователем Pax Beach
Ссылка на комментарий

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

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

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

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

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

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

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

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

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