我使用下面的数字顺序合并视频。
for f in *; do mv "$f" "${f: -17}"; done &&. find *.ts|. sed 's:\:\ :g'| sed 's/^/file /' > fraglist.txt && ffmpeg -f concat -safe 0 -i fraglist.txt -c copy output.ts; rm fraglist.txt
这对名为以下文件的文件非常有用.
000001
000002
000003
000004
000005
000006
000007
000008
000009
000010
但是,如果我需要像下面这样的合并,顺序是基于文件名中有多少位数.
1708.ts
9803.ts
13798.ts
17815.ts
21804.ts
25819.ts
29832.ts
我可以使用什么命令来使第二组文件按该顺序合并?谢谢你的帮助!
发布于 2020-09-22 18:14:06
通过单独使用printf来生成txt文件内容,并使用sort提供自然/版本排序,简化了整个过程:
printf "file '%s'\n" *.ts | sort -V > fraglist.txt
ffmpeg -f concat -i fraglist.txt -c copy output.ts结果:
file '1708.ts'
file '9803.ts'
file '13798.ts'
file '17815.ts'
file '21804.ts'
file '25819.ts'
file '29832.ts'rm fraglist.txt,因为sort重定向(>)将覆盖fraglist.txt。-safe 0命令中删除了ffmpeg (特定于凹式破碎机的一个选项),因为在这个精确的示例中不需要它。但是,如果您得到Unsafe file name错误(例如由于特殊字符(包括空格)),则需要添加它。https://stackoverflow.com/questions/64012061
复制相似问题