为什么视频不在android中使用ffmpeg保存给定路径?

为什么视频不在android中使用ffmpeg保存给定路径?,android,ffmpeg,Android,Ffmpeg,我是ffmpeg新手,所以请帮助我使用ffmpeg命令将视频保存为给定路径。 我正在使用此命令保存视频,但无法保存。请帮忙,谢谢 String[] command_try = new String[13]; command_try[0] = "-i"; command_try[1] = "/sdcard/Videos/Videos/f2a804f062384d4da3995d3bdce15610.mp4"; command_try[

我是ffmpeg新手,所以请帮助我使用ffmpeg命令将视频保存为给定路径。 我正在使用此命令保存视频,但无法保存。请帮忙,谢谢

String[] command_try = new String[13];
    command_try[0] = "-i";
    command_try[1] = "/sdcard/Videos/Videos/f2a804f062384d4da3995d3bdce15610.mp4";
    command_try[2] = "-i";
    command_try[3] = "/sdcard/Videos/Videos/vidlogogif.gif";
    command_try[4] = "-filter_complex";
    command_try[5] = "overlay=(main_w-overlay_w)/2:y=(main_h-overlay_h)/2";
    command_try[6] = "-pix_fmt";
    command_try[7] = "yuv420p";
    command_try[8] = "-c:a";
    command_try[9] = "copy";
    command_try[10] = "-preset";
    command_try[11] = "ultrafast";
    command_try[12] = "/sdcard/Videos/Videos/video11.mp4";
  • 第一步是向清单文件添加权限

     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
  • Android应用程序要求用户对
    api>=23

    如果设备的
    api
    版本为
    >=23
    ,这将请求许可,如果低于
    23
    ,或者已经授予许可,则将执行下一个任务

    如果用户
    拒绝
    权限,则
    权限对话框以请求许可

        private void PermissionsDialog(final String[] s) {
            ActivityCompat.requestPermissions(MainActivity.this, s, Helper.REQUEST_PERMISSION);
        }
    
    然后,如果用户
    允许
    拒绝
    权限,则此方法会出现:

        @Override
            public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
                if (requestCode == Helper.REQUEST_PERMISSION) {
                    if (grantResults.length > 0) {
                    for (int grantResult : grantResults) {
                        if (grantResult != PackageManager.PERMISSION_GRANTED) {
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
                                !ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permissions[0])) {
                            startActivityForResult(new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
                                    Uri.parse("package:" + BuildConfig.APPLICATION_ID)), Helper.SETTINGS_CODE);
                        } else {
                            hasPermission();
                        }
                    } else {
                        // do something when you got permission
                    }
                }
            }
        }
    }
    
    此方法检查是否授予权限,并继续请求权限,直到您
    允许
    ,如果您
    拒绝
    使用
    不再请求
    请求权限,则我们必须将用户导航到应用程序设置屏幕以手动允许权限

    现在,当用户从设置屏幕
    onActivityResult(…)
    中出来时,将调用活动的,这里调用
    haspmission()用于重新检查用户是否从设置屏幕授予了权限,如下所示:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == Helper.SETTINGS_CODE) {
            hasPermission();
        }
    }
    
  • 第一步是向清单文件添加权限

     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
  • Android应用程序要求用户对
    api>=23

    如果设备的
    api
    版本为
    >=23
    ,这将请求许可,如果低于
    23
    ,或者已经授予许可,则将执行下一个任务

    如果用户
    拒绝
    权限,则
    权限对话框以请求许可

        private void PermissionsDialog(final String[] s) {
            ActivityCompat.requestPermissions(MainActivity.this, s, Helper.REQUEST_PERMISSION);
        }
    
    然后,如果用户
    允许
    拒绝
    权限,则此方法会出现:

        @Override
            public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
                if (requestCode == Helper.REQUEST_PERMISSION) {
                    if (grantResults.length > 0) {
                    for (int grantResult : grantResults) {
                        if (grantResult != PackageManager.PERMISSION_GRANTED) {
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
                                !ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permissions[0])) {
                            startActivityForResult(new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
                                    Uri.parse("package:" + BuildConfig.APPLICATION_ID)), Helper.SETTINGS_CODE);
                        } else {
                            hasPermission();
                        }
                    } else {
                        // do something when you got permission
                    }
                }
            }
        }
    }
    
    此方法检查是否授予权限,并继续请求权限,直到您
    允许
    ,如果您
    拒绝
    使用
    不再请求
    请求权限,则我们必须将用户导航到应用程序设置屏幕以手动允许权限

    现在,当用户从设置屏幕
    onActivityResult(…)
    中出来时,将调用活动的,这里调用
    haspmission()用于重新检查用户是否从设置屏幕授予了权限,如下所示:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == Helper.SETTINGS_CODE) {
            hasPermission();
        }
    }
    


    如果无法执行,您将收到错误消息或异常。通知我们。@blackapps没有任何错误或例外我认为这是一个未执行的命令,出现了一些问题。您是否为
    读/写内部存储添加了权限代码
    ,如果没有添加,并且如果您使用的是
    android10
    ,则添加
    android:requestLegacyExternalStorage=“true”
    到清单文件的
    tag@VivekThummar请在这里添加代码以获得许可。谢谢你!如果无法执行,您将收到错误消息或异常。通知我们。@blackapps没有任何错误或例外我认为这是一个未执行的命令,出现了一些问题。您是否为
    读/写内部存储添加了权限代码
    ,如果没有添加,并且如果您使用的是
    android10
    ,则添加
    android:requestLegacyExternalStorage=“true”
    到清单文件的
    tag@VivekThummar请在这里添加代码以获得许可。谢谢你!谢谢我会用这个密码对不起,我的名声不好,稍后再做:-)您好,您可以在这里添加Helper类吗?我不知道这里必须使用哪个Helper类。它只是用于公共变量和
    Helper….
    requestCode
    的变量,例如:
    int REQUEST\u PERMISSION=101
    int SETTINGS\u code=101
    。谢谢!我会用这个密码对不起,我的名声不好,稍后再做:-)您好,您可以在这里添加Helper类吗?我不知道这里必须使用哪个Helper类。它只是用于公共变量和
    Helper….
    requestCode
    的变量,例如:
    int REQUEST\u PERMISSION=101
    int SETTINGS\u code=101