通过ffmpeg命令将文件的扩展名转换为不同的目录

时间:2018-03-10 20:02:32

标签: unix ffmpeg centos6 plesk

以下命令是将mp4文件转换为jpg文件,在同一目录中使用相同的文件名,... / httpdocs / save /.

[root@server-xxxxx-x ~]# for i in `find /var/www/vhosts/xxxxxx.com/httpdocs/save/ -type f -name "*.mp4"`; do ffmpeg -i $i `echo $i | sed -En "s/.mp4$/.jpg/p"`; done


现在,我需要将... / httpdocs / save /转换为不同的目录,... / httpdocs / file /,我应该如何更改上面的命令?如果有人能帮助我,我会很感激。

ffmpeg 2.2.2版

1 个答案:

答案 0 :(得分:1)

简单方法是从包含输入文件的目录中执行命令:

cd "/path/to/inputs" && for i in *.mp4; do ffmpeg -i "$i" -frames:v 1 "/path/to/outputs/${i%.*}.jpg"; done

如果您想将完整路径放在 for循环中,您可以使用basename

for i in /path/to/inputs/*.mp4; do ffmpeg -i "$i" -frames:v 1 "/path/to/outputs/$(basename "$i" .mp4).jpg"; done

...但效率低于仅使用parameter expansion

for i in /path/to/inputs/*.mp4; do filepath="${i##*/}"; ffmpeg -i "$i" -frames:v 1 "/path/to/outputs/${filepath%.*}.jpg"; done

其他相关问题: