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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。