$MergeCommand = "C:\\Users\\Admin\\Documents\\ffmpeg-2021-02-20-git-51a9f487ae-full_build\\bin\\ffmpeg -i \"" . $path . $videoname . "\" -i \"" . $path . $audioname . "\" -c:v copy -c:a aac \"" . $path . $filename . "FINAL.mp4\"";
shell_exec($MergeCommand);
echo($MergeCommand);操作系统: Windows 10
很抱歉我给你排了这么长很痛的队伍。
通过测试,我知道我的代码到达了shell_exec($MergeCommand);行。
之后,它甚至正确地反映了$MergeCommand的值。
问题是,一旦它试图执行$MergeCommand,什么都不会发生。只是看起来要走了
进入下一排。应该发生的是,它将视频文件和音频文件合并在一起。
没有输出(尝试回显其结果),也没有任何错误消息。
当使用exec($MergeCommand, $output, $retvalue);查找返回值时,它返回1。
但是,如果我复制echo($MergeCommand);打印出来的确切行,打开cmd,粘贴
它在那里运行它,它做的正是它应该做的。
现在,我想知道为什么相同的命令在常规cmd中工作,而在运行时却不能工作
通过shell_exec();还是exec();?
这并不是说shell_exec();根本不起作用,我得出的结论是
运行该命令时发生。例如,shell_exec("echo hello world");工作
完全没问题。
发布于 2021-02-23 22:28:31
似乎ffmpeg文件扩展名丢失了。请尝试
$MergeCommand = "C:\\Users\\Admin\\Documents\\ffmpeg-2021-02-20-git-51a9f487ae-full_build\\bin\\ffmpeg.exe -i \"" . $path . $videoname . "\" -i \"" . $path . $audioname . "\" -c:v copy -c:a aac \"" . $path . $filename . "FINAL.mp4\"";
shell_exec($MergeCommand);
echo($MergeCommand);发布于 2021-02-24 09:42:37
好吧,我自己修好了!
我其实不知道它是怎么修好的,但它确实修好了。
我交换了第一个shell_exec($strCmd);(命令i
(在$MergeCommand之前运行),其中:
$output = null;
exec($strCmd, $output);
$output = implode(" ", $output);现在一切都很好。似乎是第一个shell_exec
,它成功地执行命令,阻止任何其他cmd执行。
之后。
https://stackoverflow.com/questions/66341971
复制相似问题