2013-03-03 48 views
1

当谈到PHP时,我是一个初学者,我试图创建一个简单的(ish)系统,其中输入文件,然后转换为各种分辨率的html5视频。FFMPEG命令在PHP中不起作用。 (与MAMP不兼容)

我已经整理出了如何处理多个文件上传等,但现在我有一个问题。

我似乎无法得到执行在PHP中执行FFMPEG。

例如,如果我输入到这一点我的命令行(终端在Mac OSX 10.8),它正确地转换视频:

ffmpeg -i /Users/charlieryan/Desktop/MOV01785.MPG websample.mov 

这正确输出转换后的视频文件到我的主目录。

但是如果我在PHP中运行这个如下:

exec('ffmpeg -i /Users/charlieryan/Desktop/MOV01785.MPG websample.mov'); 

绝对没有任何反应......我的统计监视器不登记在处理器使用的任何变化,我找不到任何地方输出文件在我的系统上。

由于我在这方面有点小事,我假设我做错了什么,但是它是什么?

感谢,

查理

回答

2

很多后来自birgire的帮助以及我对它进行排序的很多东西。

此问题来自与MAMP沙盒不兼容。

进入终端,输入:这可以如下解决

sudo nano /Applications/MAMP/Library/bin/envvars 

然后注释掉用哈希(#)以下行

# DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" 
# export DYLD_LIBRARY_PATH 

然后将下面的行添加到该文件

export PATH="$PATH:/opt/local/bin" 

然后,返回到MAMP并重新启动您的服务器,导航回到页面,你会很开心。

+0

工作就像一个魅力 – greenbandit 2014-10-09 22:37:59

0

你的ffmpeg安装Windows机器上?如果你从命令行运行相同的命令没有PHP会发生什么,它的工作?如果没有,它不会对PHP做任何事情。

+0

不,在Mac OSX 10.8如上所述...它的工作原理没有PHP就好,但如果我试图从PHP内部执行它,它什么都不做。 – 2013-03-03 14:20:09

1

你应该先试一试,看是否exec()被允许:

<?php echo exec('echo "exec() is working"');?> 

,如果它的工作,你应该得到

exec() is working 

如果一切正常,你应该尝试

exec('/full/path/to/ffmpeg -i /Users/charlieryan/Desktop/MOV01785.MPG websample.mov'); 
+0

奇怪的是,它工作得很好 – 2013-03-03 14:22:24

+0

刚刚看到编辑,现在尝试... – 2013-03-03 14:25:14

+0

没有,没有... ffmpeg的完整路径是/ usr/local/bin/ffmpeg ...再一次在终端工作,在php – 2013-03-03 14:29:20

1

我有同样的问题,如果你使用MAMP,这个问题是因为mamp的php找不到正确的库,我不知道为什么!,所以..这里的诀窍。 - 你应该使用系统的PHP执行,这将调用PHP到FFmpeg的

在你的PHP代码(例如:lib.php |的index.php):

function callToSysPHP ($videoName) { 
    // $cmd = '/path to php/php <your php script> args'; 
    // In my case 
    $cmd = '/usr/bin/php myffmpeg.php ' . $videoName; 
    shell_exec($cmd); 
} 

在myffmpeg.php :

$videoName = $argv[1]; 
//$cmd = 'path to your ffmpeg/your ffmpeg command'; 
// In my case my ffmpeg cmd looks like 
$cmd = '/usr/sbin/' . 'ffmpeg -f image2 -framerate 25 -i ./files/pngs/%1d.png -vf scale=480:640 -vcodec libx264 -refs 16 -preset ultrafast ./files/pngs/'. $videoName .'.mp4 2>&1'; 
echo '<pre>'; print_r(shell_exec($cmd)); echo '</pre>'; 
从MAMP PHP

基本上,调用系统PHP执行PHP文件至极调用的ffmpeg throught了shell_exec();

我希望这可以帮助你。

+0

我花了几个星期把一个应用程序放在一起,它的工作完美无瑕,我有一个崩溃,不得不重新安装我的Mac OS;然后走了几个月的应用程序,当我回来时,它不工作,我不知道为什么,你的解决方案拯救了我的屁股。 – timgavin 2016-03-14 19:43:04

0

如果 '在/ usr/local/bin目录/' 在这里你可以找到ffmepg可执行试试这个目录:

<?php 
$cmd = 'PATH="/usr/local/bin/"; ffmpeg -i /your/file/destination/batman.mp4 2>&1'; 
echo "<pre>".shell_exec($cmd)."</pre>"; 
?>