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

To convert the extension of a file to the different directory by a ffmpeg command

下面的命令是将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

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

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

其他相关问题:

  • How do you convert an entire directory with ffmpeg?
  • Use ffmpeg to get middle frame of a video?
  • How can I extract a good quality JPEG image from an H264 video file with ffmpeg?