go - 如何使用命令行在 linux 中使用 ffmpeg 将两个 wav 拼接在一起?

标签 go ffmpeg

我已经在 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/

相关文章:

bash - 创建一个 convertAll() 函数来转换工作目录中的所有 .filetype

java - ffmpeg 在多线程环境中运行时挂起

c - 使用ffmpeg安装Open-CV出错

postgresql - 如何使用 Go 从 csv 复制到 postgres?

去结构比较

go - 如何使用WaitGroup处理错误并终止Goroutine

go - Golang 中定义的变量

ffmpeg filtergraph描述中的文件索引3无效

ffmpeg 每帧请求的位太多

mysql - 从 sphinx db 到有点复杂的 golang 结构的最佳实践