好的,我有这个,它可以工作,但它很慢
for i in *.mov;
do name=`echo "$i" | cut -d'.' -f1`
echo "$name"
ffmpeg -i "$i" "${name}.mp4"
done
我希望它使用这些 ffmpeg 选项进行转换
ffmpeg -i movie.mov -vcodec copy -acodec copy out.mp4
参数扩展就足够了;你不需要涉及cut
的管道。
for i in *.mov; do
name=${i%%.mov} # i=foo.mov => name=foo
ffmpeg -i "$i" "$name.mp4"
done
未经测试,但如果它太慢并且您有一个多核 CPU,您应该能够与GNU 并行执行它们:
parallel ffmpeg -i {} -vcodec copy -acodec copy {.}.mp4 ::: *.mov
如果你想先看看它会做什么,而不实际做任何事情:
parallel --dry-run ffmpeg -i {} -vcodec copy -acodec copy {.}.mp4 ::: *.mov
注意:在macOS上,只需使用以下自制软件安装这两个软件包:
brew install ffmpeg
brew install parallel
使用:
for i in *.mov; do ffmpeg -i "$i" -c copy "${i%.*}.mp4"; done
-c copy
与-vcodec copy -acodec copy
相同。- 改编自 如何使用 ffmpeg 转换整个目录?