2017-04-07 138 views
1

在这个地方几乎没有任何东西存在,小小的存在不起作用,对我来说太过先进。如果你能回答这个问题,你就会创造我的生活。如何从我的本地主机上运行的php运行ffmpeg命令?我更喜欢XAMPP,但MAMP会做得很好,在这个阶段我会使用任何东西。我是否需要在XAMPP服务器本身上安装ffmpeg,还是只需要在Mac上安装?我可以运行ffmpeg的命令,从终端精细,例如,如何在Mac上使用XAMPP在PHP上运行ffmpeg

ffmpeg -i Tmpfile.mp4 -c:v libx264 -preset ultrafast video.mp4 

工作正常,但

echo shell_exec("ffmpeg -i Tmpfile.mp4 -c:v libx264 -preset ultrafast video.mp4"); 

什么也不做,当我加载使用的index.php的代码是在网页中。

如果你能解决我的问题,我会给你买个饼干:)

+0

您的PHP错误日志显示什么? – LordNeckbeard

+0

您的文件路径是否正确?它们和你的PHP脚本在同一个目录下吗? –

+0

/usr/local/Cellar/ffmpeg/3.2.4/bin/ffmpeg'是自制程序安装的ffmpeg文件的路径。只有一个文件,而不像windows xampp教程那里有很多文件。该文件在单击时打开一个终端窗口。该路径是我链接到我的PHP脚本。我把它保存为$ ffmpeg变量,然后echo shell_exec(“ffmpeg -i Tmpfile.mp4 -c:v libx264 -preset ultrafast video.mp4”);尝试并运行它。我会尝试在与脚本本身相同的目录中使用它。 –

回答

1

你在描述问题时应该更具体,例如包括OSX版本的ffmpeg版本等

我成功地设法复制您的情况,这是过程:

1. ffmpeg的

我通过brew安装ffmpeg。 ffmpeg版本目前是3.2.4。

2. PHP服务器

在MacOS塞拉利昂(但其他以前的版本中提供此功能为好),你可以只是在你的shell中键入

$ php -S 0.0.0.0:8080 

启动PHP服务器。在这种情况下,Web服务器将在端口8080上侦听。

3. PHP脚本

我基本上用你在你的问题给了脚本,用少许修改:

<?php 

echo "loading, please wait..."; 

echo shell_exec("ffmpeg -i temp.mp4 -c:v libx264 -preset ultrafast video.mp4 2>&1"); 

你注意到2>&1?它用于将sterr输出重定向到stdoutput,因为ffmpeg不会在标准输出上打印任何东西:)

4.安全模式?

请确保禁用PHP安全模式,因为在安全模式为ON(reference here)时shell_exec方法被禁用。

+0

感谢您的回复。但我仍然没有真正解决这个问题。我正在使用最新版本的东西(sierra,ffmpeg 3.2.4)。我试过你的方式,它的工作原理!但 - 我的问题是让它在XAMPP或MAMP(apache服务器)上工作。我不知道将文件放在xampp目录中的什么位置。我应该从脚本链接到脚本的unix可执行文件(从它们的网站下载,还是在brew中安装时存储在/usr/local/Cellar/ffmpeg/3.2.4/bin/ffmpeg中)? –

0

啊,我找到了答案。我需要将其添加到php脚本的开头

exec('unset DYLD_LIBRARY_PATH ;'); 
putenv('DYLD_LIBRARY_PATH'); 
putenv('DYLD_LIBRARY_PATH=/usr/bin'); 
+0

我不是PHP专家 - 但我会想象只是上面的最后一行就足够了,没有前两行。 –