Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 通过ffmpeg命令将文件扩展名转换为不同的目录_Unix_Ffmpeg_Centos6_Plesk - Fatal编程技术网

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

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/转换到不同的目录

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

…但其效率低于仅使用:

其他有关问题:


请参阅,只需将目录名添加到输出中即可。请确保从包含输入的目录中运行该命令。谢谢,LordNeckbeard,我已经尝试了所有可能的方法,但我不知道应该在命令行的确切位置添加第二个目录,即“/var/www/vhosts/xxxxxx.com/httpdocs/file/”。您不需要这样做。只需在当前目录下运行
/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