Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从Android上的摄像头录制视频到mp4大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在FireMonkey(Delphi XE6)中似乎有TVideoCaptureDevice,但在官方文档中,捕获过程最终在线:

if(VideoCamera){
  //do something
}

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

解决方法

请参阅以下docwiki以获取答案(排序).

Delphi Video Capturing in XE7

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

以下代码由人们提供给我

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

uses
  Androidapi.JNI.GraphicsContentViewText;

const
  RECORD_VIDEO = 9;

implementation

uses 
  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以供用户与之交互.除了保存录制文件名称之外,没有编程控制.作为@L_674_14@被Android API淹没的Delphi开发人员,我很感激这个解决方案.

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。