在FFmpeg Android中使用此函数来叠加带透明度的图像到视频中
fun addimagemerge(inputVideo: String, imageInput: String, output: String): Array<String> {
val inputs: ArrayList<String> = ArrayList()
inputs.apply {
add("-i")
add(inputVideo)
add("-i")
add(imageInput)
add("-filter_complex")
add("[1:v]format=argb,geq=r='r(X,Y)':a='0.5*alpha(X,Y)'[zork]; [0:v][zork]overlay")
add("-preset")
add("ultrafast")
add(output)
}
return inputs.toArray(arrayOfNulls<String>(inputs.size))
}
使用此功能来调用转换按钮上的函数
val outputPath = getFilePath(this, VIDEO)
val query = ffmpegQueryExtension.addimagemerge(
selectedVideoPath!!,
selectedImagePath!!,
outputPath
)
CallBackOfQuery().callQuery(this, query, object : FFmpegCallBack {
override fun process(logMessage: LogMessage) {
runOnUiThread {
tvOutputPath.text = logMessage.text
}
}
override fun success() {
tvOutputPath.text = String.format(getString(R.string.output_path), outputPath)
processStop()
runOnUiThread {
videoPlayclass.stopVideoPlay(bottmLay, videoPlayAct)
videoPlayclass.videoPlayStart(
this@MergeImageVideoActivity,
bottmLay,
videoPlayAct,
outputPath
)
}
}
override fun cancel() {
processStop()
}
override fun failed() {
processStop()
}
})