Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TVideoCaptureDevice Android keine Aufzeichnung (https://www.delphipraxis.net/192422-tvideocapturedevice-android-keine-aufzeichnung.html)

Peter Müller 17. Apr 2017 16:57

TVideoCaptureDevice Android keine Aufzeichnung
 
Hallo zusammen,

habe gerade das Tutorial: How to Capture and Display Video with FireMonkey FM2 von Tim DelChiaro (http://dn.embarcadero.com/article/42558) mit Delphi 10.2 Tokyo ausprobiert. Prinzipiell funktioniert die App für Android (StartCapture, StopCapture und die Anzeige des Live-Videos ohne Fehlermeldungen), aber es wird leider kein Video aufgezeichnet. Habe ein TVideoCaptureDevice verwendet und es auf zwei Android-Geräten mit Version 4.1.1 und 4.3 ausprobiert.

Funktioniert das nicht mit Delphi 10.2 Tokyo, Android 4.x oder muss ich noch irgendetwas aktivieren, damit Videos auch auf dem Gerät gespeichert werden?
Und wo kann ich den Dateinamen bzw. das Verzeichnis für die aufgezeichnete Datei einstellen?

Vielen Dank schon mal für eure Antworten und Ideen.

Viele Grüße

Peter

Rollo62 17. Apr 2017 20:54

AW: TVideoCaptureDevice Android keine Aufzeichnung
 
Im Prinzip funmtioniert das so, es liefert aber nur simple Frames an ein Image.
Hier noch ein Beispiel für iOS aus den DPF Tools.

Für Android scheint es da bei den DPF Tools aber kein Gegenstück zu geben.

Rollo

Peter Müller 19. Apr 2017 16:34

AW: TVideoCaptureDevice Android keine Aufzeichnung
 
Hallo zusammen,

nachdem das Beispiel von Tim DelChiaro wohl leider nichts aufzeichnet, habe ich auf der Seite http://stackoverflow.com/questions/2...android-to-mp4
die folgende Delphi-Source gefunden, die die Aufnahme über die Android native API lösen soll:
Delphi-Quellcode:
var
    texture : JSurfaceTexture;
    surface: JSurface;
    recorder: JMediaRecorder;
begin
  texture := TJSurfaceTexture.JavaClass.init(1);
  surface := TJSurface.JavaClass.init(texture);
  recorder := TJMediaRecorder.Create();

  recorder.setPreviewDisplay(surface);
  recorder.setAudioSource(AUDIO_MIC);
  recorder.setVideoSource(VIDEO_CAMERA);
  recorder.setOutputFormat(FORMAT_THREE_GPP);
  recorder.setAudioEncoder(AFORMAT_AMR_NB);
  recorder.setVideoEncoder(VFORMAT_MPEG_4_SP);
  recorder.setMaxDuration(1800000); // 30 minutes

  recorder.setVideoSize(320, 240);
  recorder.setVideoFrameRate(15);
  recorder.setOutputFile(StringToJString(TPath.GetSharedCameraPath + OUTPUT_FILE));

  recorder.prepare();
  recorder.start();
end;
Wenn recorder.start() ausgeführt wird, dann erhalte ich die folgende Fehlermeldung: "java.lang.IllegalStateException.". Diese hat laut Kommentaren im Internet damit zu tun, dass surface nicht angezeigt wird, was wohl zwingend erforderlich sei. Leider steht da nirgends, wie man das macht.

Im Umgang mit der Android native API bin ich überhaupt nicht fit. Wie kann ich denn surface einer Anzeige (Image?) auf dem Formular zuweisen oder so initialisieren, dass es angezeigt wird?

Vielen Dank schon mal für eure Antworten und Ideen.

Viele Grüße

Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf