2013-03-03 74 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>"; 
?>