首页 > 解决方案 > Andoird - FFMPEG 在 Android 中录制的视频上添加时间戳或文本

问题描述

嗨,我正在尝试使用 andorid 在录制的视频中添加时间戳,但无法做到。
我正在ffmpeg为该实现使用库com.writingminds:FFmpegAndroid:0.3.2

我的命令是:

commandArray = new String[]{"-i", inputVideoPath, "-vf", "drawtext=fontfile=ostrich-regular.ttf:text='Stack Overflow':fontsize=24:",
                        "-codec:a", "copy", outputPath};

但是应用程序陷入了困境onProgress()

// 下面是我的全部代码

FFmpeg ffmpeg = FFmpeg.getInstance(this);
        try {
            //Load the binary
            ffmpeg.loadBinary(new LoadBinaryResponseHandler() {

                @Override
                public void onStart() {
                }

                @Override
                public void onFailure() {
                }

                @Override
                public void onSuccess() {
                }

                @Override
                public void onFinish() {
                }
            });
        } catch (FFmpegNotSupportedException e) {
            // Handle if FFmpeg is not supported by device
        }
        try {
            // to execute "ffmpeg -version" command you just need to pass "-version"
            String outputPath = "";
            outputPath = getAppDir() + "/video_compress.mp4";

            String[] commandArray = new String[]{};

                commandArray = new String[]{"-i", inputVideoPath, "-vf", "drawtext=fontfile=ostrich-regular.ttf:text='Stack Overflow':fontsize=24:",
                        "-codec:a", "copy", outputPath};

            for (String i : commandArray) {
                System.out.println("Starting process " + i);
            }
            final ProgressDialog dialog = new ProgressDialog(VideoActivity.this);
            ffmpeg.execute(commandArray, new ExecuteBinaryResponseHandler() {

                @Override
                public void onStart() {
                    Log.e("FFmpeg", "onStart");
                    dialog.setMessage("Compressing... please wait");
                    dialog.show();
                }

                @Override
                public void onProgress(String message) {
                    Log.e("FFmpeg onProgress? ", message);
                }

                @Override
                public void onFailure(String message) {
                    Log.e("FFmpeg onFailure? ", message);
                }

                @Override
                public void onSuccess(String message) {
                    Log.e("FFmpeg onSuccess? ", message);
                }


                @Override
                public void onFinish() {
                    Log.e("FFmpeg", "onFinish");
                    if (dialog.isShowing())
                        dialog.dismiss();
                }
            });
        } catch (FFmpegCommandAlreadyRunningException e) {
            e.printStackTrace();
            // Handle if FFmpeg is already running
        }

标签: androidandroid-ffmpeg

解决方案


推荐阅读