Unix 通过ffmpeg命令将文件扩展名转换为不同的目录
下面的命令是将mp4文件转换为同一目录下具有相同文件名的jpg文件,…/httpdocs/save/Unix 通过ffmpeg命令将文件扩展名转换为不同的目录,unix,ffmpeg,centos6,plesk,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/转换到不同的目录
[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
:
…但其效率低于仅使用:
其他有关问题:
/var/www/vhosts/xxxxxx.com/httpdocs/file/
中的命令(运行cd/var/www/vhosts/xxxxxx.com/httpdocs/file/
,然后运行该命令)。谢谢,领主,我有两个问题。我需要将…/save/中的xxxxxx_xxxxxxx.mp4转换为…/file/中的xxxxxx_xxxxxxx.jpg文件。我如何使用PHP函数,shell_exec('xxxxxx')在本例中“运行cd,然后运行命令”?对不起,但我对PHP一无所知。谢谢,LordNeckbeard,我非常感谢您的支持。第二个是从顶部的完美工作,因为我可能会期望在我的环境。我也感谢你提出的一系列相关问题。感谢您在这方面花费的时间和精力。
for i in /path/to/inputs/*.mp4; do ffmpeg -i "$i" -frames:v 1 "/path/to/outputs/$(basename "$i" .mp4).jpg"; done
for i in /path/to/inputs/*.mp4; do filepath="${i##*/}"; ffmpeg -i "$i" -frames:v 1 "/path/to/outputs/${filepath%.*}.jpg"; done