我尝试对视频文件进行类似操作,但没有成功。尝试过:
for f in "$@"
do
cat "$f" > ~/Desktop/Test.mov
done
当我这样做时,它只会将最后选择的文件放入文件中。
答案1
正如您链接的文章所指出的,该cat
方法并不完全有效;请使用更好的工具。
至于直接问题,>
重定向将输出发送到文件,替换任何先前的内容。因此,第二个文件替换第一个文件,然后第三个替换第二个,……最后最后一个替换倒数第二个。如果cat
有一种可行的方法可以做到这一点,您可以 1) 先清空文件,然后使用重定向>>
,2) 使用重定向>
但将其放在后面done
,以便重定向整个循环,或者 3) 只使用cat "$@" >~/Desktop/Test.mov
并让其cat
自己进行迭代。
mencoder -oac copy -ovc copy -idx -o ~/Desktop/Test.mov "$@"
或者使用ffmpeg
一些 shell IFS
hackery 来获取其首选格式的文件列表:
IFS="|"
ffmpeg -i concat:"$*" -codec copy output.mp4
顺便说一句,乱改IFS
可能会导致非常奇怪的错误。在这种情况下,脚本足够简单,不会造成麻烦,但我不建议在较大的脚本中使用它,除非您使用安全措施来限制副作用。