我已经在 debian 上安装了 ffmpeg,我尝试了这两个命令行。 同一个目录下有两个文件,分别是first.wav和second.wav 第一种方法是创建一个txt文件,在a.txt里面,它们是
file 'first.wav'
file 'second.wav'
我跑了
ffmpeg -f concat -i a.txt -c copy final.wav
然后我运行它,它可以正常工作。 但我想尝试另一种方法, 这是
ffmpeg -i "concat:first.wav|second.wav" -c copy final2.wav
sdcond 命令行没有错误,但它只捕获了第一个文件,final2.wav 的长度与first.wav 几乎相同。文件 second.wav 根本没有缝合。 由于我正在使用golang执行命令行,所以我想使用
cmd := exec.Command("ffmpeg",args)
为了将媒体拼接在一起,我可以将所有媒体文件读入一个数组,但是这个API对数组不起作用,所以我想将文件拼接在一起
"concat:file1.wav|file2.wav|file3.wav|......"
在这种情况下,可以很容易地将文件拼接在一起,我不需要循环执行 cmd。 喜欢
cmd = exec.Command("ffmpeg","-i","concat:first.wav|second.wav|third.wav|......","-c","copy","final2.wav")
我不想创建任何额外的文件,如 a.txt 文件,因为我需要稍后将其删除,这也可能触及权限。 那么第二个命令行有什么可能的解决方案吗?
最佳答案
试试这个
ffmpeg -i 1.wav -i 2.wav -i 3.wav ...... -i {n}.wav -filter_complex '[0:0][1:0]......[{n-1}:0]concat=n={n}:v=0:a=1[out]' -map '[out]' final.wav
关于go - 如何使用命令行在 linux 中使用 ffmpeg 将两个 wav 拼接在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52734159/