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