Перейти к содержанию
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
Опубликовано
В 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 эмодзи.

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

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

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

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