我想在为Javascript (ffmpeg.js)编译的ffmpeg版本中使用过滤器。但是解析器似乎不处理引号,所以我需要编写没有引号的完整命令。
如何在没有引号的情况下编写以下命令?
ffmpeg -i video.mp4 -i image.jpg -filter_complex "[1][0]scale2ref[i][v];[v][i]overlay=10:10:enable=\'between(t,1,2)\'" -c:a copy output.mp4在javascript中,我将命令指定如下:
worker.postMessage({
type: 'command',
arguments: "-i video.mp4 -i image.jpg -filter_complex '[1][0]scale2ref[i][v];[v][i]overlay=10:10' -c:a copy output.mp4".split(' '),
files: [
{
data: new Uint8Array(videofile),
name: 'video.mp4'
},
{
data: new Uint8Array(imagefile),
name: 'image.jpg'
},]};
但其结果是:
AVFilterGraph @ 0xdf4c30没有这样的过滤器:'1scale2refi;voverlay=10:10‘
我检查了覆盖筛选器,它在没有引号的更简单的版本中工作,例如,这个命令可以工作:
arguments: "-i video.mp4 -i image.jpg -filter_complex overlay=10:10 -c:a copy output.mp4".split(' '),发布于 2019-04-10 11:24:48
我认为问题在于,'在分裂之后还会继续存在,这让ffmpeg感到困惑。如果这是一个真实的shell,则参数解析器将正确地拆分和解析引号。
尝试删除原始字符串中的',如下所示:
arguments: "-i video.mp4 -i image.jpg -filter_complex [1][0]scale2ref[i][v];[v][i]overlay=10:10 -c:a copy output.mp4".split(' ')或者甚至跳过拆分,直接传递一个参数列表:
arguments: ["-i", "video.mp4", "-i", "image.jpg", "-filter_complex", "[1][0]scale2ref[i][v];[v][i]overlay=10:10", "-c:a", "copy", "output.mp4"]https://stackoverflow.com/questions/55604964
复制相似问题