android - 如何在android studio中使用ffmpeg添加像tic tok这样的水印

标签 android android-studio ffmpeg watermark

我正在尝试使用 FFMPEG 添加像 Tic Tok 这样的水印,但它不起作用

        GeneralUtils.checkForPermissionsMAndAbove(MainActivity.this, true);
        LoadJNI vk = new LoadJNI();
        try {

            //String complexCommand = "ffmpeg -y -i /storage/emulated/0/in.mp4 -strict experimental -vf transpose=1 -s 160x120 -r 30 -aspect 4:3 -ab 48000 -ac 2 -ar 22050 -b 2097k /storage/emulated/0/out.mp4";
            /*String complexCommand = "ffmpeg -i /storage/emulated/0/in.mp4 -framerate 30000/1001 -loop 1 -i /storage/emulated/0/abcd.jpg -filter_complex\n" +
                    "  \"[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:10 [v]\" -map \"[v]\"\n" +
                    "  -map 0:a -c:v libx264 -c:a copy -shortest /storage/emulated/0/out.mp4";*/
            //String complexCommand = "ffmpeg -y -i /storage/emulated/0/in.mp4 -strict experimental -vf movie=/storage/emulated/0/abcd.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out] -s 320x240 -r 30 -b 15496k -vcodec mpeg4 -ab 48000 -ac 2 -ar 22050 /storage/emulated/0/out.mp4";
            String complexCommand = "ffmpeg -i /storage/emulated/0/in.mp4 -i /storage/emulated/0/abcd.jpg -filter_complex \\\n" +
                    "\"overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2\" \\\n" +
                    "-codec:a copy /storage/emulated/0/out.mp4";

            String workFolder = getApplicationContext().getFilesDir().getAbsolutePath();
            //String[] complexCommand = {"ffmpeg","-i", "/sdcard/videokit/in.mp4"};
             vk.run(GeneralUtils.utilConvertToComplex(complexCommand) , workFolder , getApplicationContext());

            Log.i("test", "ffmpeg4android finished successfully");
        } catch (Throwable e) {
            Log.e("test", "vk run exception.", e);
        }

但注意到为我工作

如您所知,我对FFMPEG一无所知,所以如果您给出答案,请简要写下。

谢谢你。

最佳答案

它与android无关,但下面是简单的ffmpeg命令
从左上到右下的循环:

ffmpeg -i video.mp4 -i watermark.png -filter_complex \
 "[0:v][1:v]overlay=x='if(lt(mod(t,10),5),10,W-w-10)':y='if(lt(mod(t,10),5),10,H-h-10)'" \
 -codec:a copy out.mp4
从右上到左下循环:
ffmpeg -i video.mp4 -i watermark.png -filter_complex \
 "[0:v][1:v]overlay=x='if(lt(mod(t,10),5),W-w-10,10)':y='if(lt(mod(t,10),5),10,H-h-10)'" \ 
 -codec:a copy out.mp4
想法很简单
  • 每 10 秒持续一次,得到剩余秒数,即 mod(t,10)
  • 如果 sec < 5,则设置顶部位置,否则设置底部位置
  • 关于android - 如何在android studio中使用ffmpeg添加像tic tok这样的水印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61170452/

    相关文章:

    android-studio - 由于 "Could not initialize class com.intellij.ide.highlighter.JavaFileType",Kotlin 应用程序构建失败

    android-studio - 为 Android Studio 编辑器使用自定义字体

    arm - Android Studio 无法在配备 32 位 Ubuntu 12.04 w/JDK-8 的 Samsung ARM Chromebook 上加载

    audio - 如何使用 ffmpeg 播放音频文件(.mp3、.flac、.wav)然后循环播放(每隔几秒混合一次)另一个音频文件(wav)

    ffmpeg - 如何使用 ffmpeg 重新编码(有限的 x264)

    java - 如何在 Android 应用程序的 Activity 中显示 system.out.println() 在控制台中显示的内容?

    android - 通过公司代理的 Titanium Appcelerator

    ffmpeg - 这些 FFmpeg APNG 编码器预测方法是什么意思?

    Android -TranslateAnimation 不工作

    android - 如何在Android上正确配置Window/SurfaceView/Opengl-surface的像素格式