1. 程式人生 > >delphi android 錄影(使用了JMediaRecorder,MediaRecorder的使用方法)

delphi android 錄影(使用了JMediaRecorder,MediaRecorder的使用方法)

delphi xe系列自帶的控制元件都無法保存錄像,經網友幫忙,昨天終於實現了錄影功能(但有個問題是錄影時無畫面顯示),程式主要使用了JMediaRecorder,MediaRecorder的使用方法可參考網上java的相關說明,下面程式碼是可以正常錄影的:

複製程式碼
unit Unit8;

interface

uses
 System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  Androidapi.Helpers, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,FMX.Media.Android,Androidapi.JNI.Media,
  FMX.Controls.Presentation, FMX.StdCtrls,System.IOUtils,Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.Provider,
  Androidapi.JNI.App,
  Androidapi.JNI.Net,
  Androidapi.JNIBridge,
  FMX.Media,
  Androidapi.JNI.JavaTypes,
  Androidapi.JNI.Os;

type
  TForm8 = class(TForm)
    Button3: TButton;
    Button4: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
     texture : JSurfaceTexture;
     surface: JSurface;
     recorder: JMediaRecorder;
  public
    { Public declarations }
  end;

var
  Form8: TForm8;

implementation

{$R *.fmx}

procedure TForm8.Button3Click(Sender: TObject);
VAR  FILENAME:STRING;
begin
  texture := TJSurfaceTexture.JavaClass.init(1);
  surface := TJSurface.JavaClass.init(texture);
  recorder := TJMediaRecorder.Create();

  recorder.setPreviewDisplay(surface);
  recorder.setAudioSource(TJMediaRecorder_AudioSource.JavaClass.MIC    );
  recorder.setVideoSource(TJMediaRecorder_VideoSource.JavaClass.CAMERA);
  recorder.setOutputFormat(TJMediaRecorder_OutputFormat.JavaClass.MPEG_4);
  recorder.setAudioEncoder(TJMediaRecorder_AudioEncoder.JavaClass.DEFAULT);
  recorder.setVideoEncoder(TJMediaRecorder_VideoEncoder.JavaClass.H264);
  recorder.setMaxDuration(1800000); // 30 minutes
  recorder.setVideoSize(320, 240);
  recorder.setVideoFrameRate(15);
   filename:=TPath.GetSharedCameraPath+'/abc0002.mp4';
  recorder.setOutputFile(StringToJString(FILENAME));
  recorder.prepare();
  recorder.start();
end;

procedure TForm8.Button4Click(Sender: TObject);
begin
   recorder.stop;
end;

end.
複製程式碼

 

 

https://www.cnblogs.com/qiufeng2014/p/4809144.html