如何在android

时间:2018-08-17 05:21:31

标签: android ffmpeg

我正在使用 BravoBit依赖项在Android中执行ffmpeg命令。下面是依赖项

    implementation 'nl.bravobit:android-ffmpeg:1.1.5'

执行ffmpeg命令需要 String []命令。 但是我无法弄清楚如何以数组格式传递复杂的命令。每当尝试执行命令时,我都会收到无效参数错误。  以下是我要使用的命令之一。

String[] cmd = new String[]{"-i", uri,
"-i",overlayUri , "-filter_complex","[0:v]setpts=PTS-STARTPTS", "scale=1920x1080[top]","[1:v]loop=-1:size=750","setpts=N/FRAME_RATE/TB","scale=1920x1080","format=yuva420p", "colorchannelmixer=aa=0.5[bottom]"
, "[top][bottom]overlay=shortest=1, format=yuv420p", outputPath};

此处 uri,overlayUri 是输入和覆盖文件的路径,而 outputPath 是输出文件的路径。

我得到的错误

  

[NULL @ 0xf6d44e00]无法为'[1:v] loop = -1:size = 750'找到合适的输出格式       [1:v] loop = -1:size = 750:参数无效

1 个答案:

答案 0 :(得分:1)

经过多次尝试后,我将其与以下格式一起使用。

String[] cmd4 = new String[]{"-i", uri,"-f" ,"lavfi",
"-i","movie="+overlayUri+":loop=200,setpts=N/FRAME_RATE/TB","-filter_complex","[1:v][0:v]scale2ref[ua][b];[ua]setsar=1,format=yuva444p,colorchannelmixer=aa=0.5[u];[b][u]overlay", outputPath};

我使用上述命令的目的是将一个视频覆盖在另一个视频上,然后将覆盖的视频循环到输入视频的长度。 我在这里了解到的是,以-开头的任何东西都是子命令,应该是命令数组中的索引。