2017-04-07 81 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專家 - 但我會想象只是上面的最後一行就足夠了,沒有前兩行。 –