PHP exec() 和反斜杠 \
PHP exec() and backslash \
我正在尝试 运行 在 exec 上执行以下命令:
ffmpeg -y -i video.mp4 \
-ss 1067 -i video.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -t 32 tmp/cuts/6.ts \
-ss 1215 -i video.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -t 32 tmp/cuts/7.ts
如果我复制此命令并 运行 它在 shell 上一切正常,视频被剪切,完美。
但是运行宁槽php执行,ffmpegreturns出现以下错误:
[NULL @ 052a0060] Unable to find a suitable output format for '\'
\: Invalid argument
即使我像这样复制粘贴命令:
<?php
$command = 'ffmpeg -y -i video.mp4 \
-ss 1067 -i video.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -t 32 tmp/cuts/6.ts \
-ss 1215 -i video.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -t 32 tmp/cuts/7.ts';
echo $command.chr(10);
$return = 0;
$output = array();
exec($command, $output, $return);
?>
我错过了什么吗?我试过 escapeshellcmd, escapeshellarg,甚至用双反斜杠来转义反斜杠,但什么也没有。
这在windows和Unix中都会发生,错误完全一样。
知道这是怎么回事吗?
shell 脚本中的反斜杠 (\),在这种情况下,仅用于使其忽略换行符 (Reference)
所以尝试 运行 在一行中不带反斜杠的命令:
<?php
$command = 'ffmpeg -y -i video.mp4 -ss 1067 -i video.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -t 32 tmp/cuts/6.ts -ss 1215 -i video.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -t 32 tmp/cuts/7.ts';
(...)
?>
我正在尝试 运行 在 exec 上执行以下命令:
ffmpeg -y -i video.mp4 \
-ss 1067 -i video.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -t 32 tmp/cuts/6.ts \
-ss 1215 -i video.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -t 32 tmp/cuts/7.ts
如果我复制此命令并 运行 它在 shell 上一切正常,视频被剪切,完美。
但是运行宁槽php执行,ffmpegreturns出现以下错误:
[NULL @ 052a0060] Unable to find a suitable output format for '\'
\: Invalid argument
即使我像这样复制粘贴命令:
<?php
$command = 'ffmpeg -y -i video.mp4 \
-ss 1067 -i video.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -t 32 tmp/cuts/6.ts \
-ss 1215 -i video.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -t 32 tmp/cuts/7.ts';
echo $command.chr(10);
$return = 0;
$output = array();
exec($command, $output, $return);
?>
我错过了什么吗?我试过 escapeshellcmd, escapeshellarg,甚至用双反斜杠来转义反斜杠,但什么也没有。
这在windows和Unix中都会发生,错误完全一样。
知道这是怎么回事吗?
shell 脚本中的反斜杠 (\),在这种情况下,仅用于使其忽略换行符 (Reference)
所以尝试 运行 在一行中不带反斜杠的命令:
<?php
$command = 'ffmpeg -y -i video.mp4 -ss 1067 -i video.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -t 32 tmp/cuts/6.ts -ss 1215 -i video.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -t 32 tmp/cuts/7.ts';
(...)
?>