我正在使用 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:参数无效
答案 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};
我使用上述命令的目的是将一个视频覆盖在另一个视频上,然后将覆盖的视频循环到输入视频的长度。
我在这里了解到的是,以-
开头的任何东西都是子命令,应该是命令数组中的索引。