代码之家  ›  专栏  ›  技术社区  ›  user27240

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

  •  0
  • user27240  · 技术社区  · 7 年前

    下面的命令是将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/保存/到不同的目录/httpdocs/file/,我应该如何更改上面的命令?如果有人能帮助我,我将不胜感激。

    ffmpeg版本2.2.2

    1 回复  |  直到 7 年前
        1
  •  1
  •   llogan    7 年前

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

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

    或者你可以使用 basename 如果要在 for循环 :

    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
    

    其他相关问题: