从Android上的摄像头录制视频到mp4

从Android上的摄像头录制视频到mp4,第1张

概述在FireMonkey(Delphi XE6)中似乎有TVideoCaptureDevice,但在官方文档中,捕获过程最终在线: if(VideoCamera){ //do something} 如何在飞行中将视频录制到mp4?试过看谷歌,但没有找到任何答案…… 请参阅以下docwiki以获取答案(排序). Delphi Video Capturing in XE7 当然,这里的“捕获”一词 在FireMonkey(Delphi XE6)中似乎有TVIDeoCaptureDevice,但在官方文档中,捕获过程最终在线:

if(VIDeoCamera){  //do something}

如何在飞行中将视频录制到mp4?试过看谷歌,但没有找到任何答案……

解决方法 请参阅以下docwiki以获取答案(排序).

Delphi Video Capturing in XE7

当然,这里的“捕获”一词意味着,获取视频输入并将其放在显示器上. “录制”意味着将帧连接在一起以制作电影文件.

以下代码由人们提供给我

flashavconverter并在此处发布并获得批准:

uses  AndroIDAPI.JNI.GraphicsContentVIEwText;const  RECORD_VIDEO = 9;implementationuses   System.IoUtils,AndroIDAPI.JNI.ProvIDer,AndroIDAPI.JNI.App,AndroIDAPI.JNI.Net,AndroIDAPI.JNIBrIDge,AndroIDAPI.Helpers,AndroIDAPI.JNI.JavaTypes,AndroIDAPI.JNI.Os;{$R *.fmx}procedure TFormMain.btnRecordClick(Sender: TObject);var  VIDeoIntent: JIntent;  vIDeoUri: Jnet_Uri;  Afile: Jfile;  filename: Tfilename;begin  FMessageSubscriptionID :=     TMessageManager.DefaultManager.SubscribetoMessage(      TMessageResultNotification,HandleActivityMessage);  VIDeoIntent :=     TJIntent.JavaClass.init(      TJMediaStore.JavaClass.ACTION_VIDEO_CAPTURE    );  if (    VIDeoIntent.resolveActivity(      SharedActivityContext.getPackageManager()    ) <> nil) then  begin    filename := TPath.Combined(      TPath.GetShareddocumentsPath,'recording.mp4')    Afile:=TJfile.JavaClass.init(      StringToJstring(filename));    vIDeoUri:=TJnet_Uri.JavaClass.fromfile(Afile);    VIDeoIntent.putExtra(      TJMediaStore.JavaClass.EXTRA_OUTPUT,TJParcelable.Wrap((vIDeoUri as ILocalObject).GetobjectID));    SharedActivity.startActivityForResult(VIDeoIntent,RECORD_VIDEO);  end;end;procedure TFormMain.HandleActivityMessage(const Sender: TObject;  const M: TMessage);begin  if M is TMessageResultNotification then    OnActivityResult(      TMessageResultNotification(M).RequestCode,TMessageResultNotification(M).ResultCode,TMessageResultNotification(M).Value);end;function TFormMain.OnActivityResult(RequestCode,ResultCode: Integer;  Data: JIntent): Boolean;begin  Result := False;  TMessageManager.DefaultManager.Unsubscribe(    TMessageResultNotification,FMessageSubscriptionID);  FMessageSubscriptionID := 0;  if RequestCode = RECORD_VIDEO then  begin    if ResultCode = TJActivity.JavaClass.RESulT_OK then    begin      TThread.Queue(nil,procedure      begin        lable1.Text:='recording completed';        InvalIDate;      end);    end;  end;

结束;

此代码是(接近)完整的问题答案.启动特定于设备的视频记录器UI以供用户与之交互.除了保存录制文件的名称之外,没有编程控制.作为一个被AndroID API淹没的Delphi开发人员,我很感激这个解决方案.

总结

以上是内存溢出为你收集整理的从Android上的摄像头录制视频到mp4全部内容,希望文章能够帮你解决从Android上的摄像头录制视频到mp4所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1130040.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存