2012-09-15 61 views
1

在閱讀了關於與PHP相關的FFMPEG相關的gazillion問題後,我得到了一小段或不是什麼,但它似乎沒有做任何事 - 甚至沒有發生錯誤。帶有PHP的FFMPEG不執行?

我的PHP如下:

function get_video_thumbnail($file) { 
    define('ALL_PLACE_WIDTH', 250); 
    define('ALL_PLACE_HEIGHT', 200); 

    $ffmpeg = "ffmpeg"; // where ffmpeg is 
    $image_source_path = $file; // where the video is 
    $image_cmd = " -r 1 -ss 00:00:10 -t 00:00:01 -s ".ALL_PLACE_WIDTH."x".ALL_PLACE_HEIGHT." -f image2 "; // command 
    $dest_image_path = "cdn/thumbnails"; // destination of thumbnail 

    $str_command = $ffmpeg ." -i " . $image_source_path . $image_cmd .$dest_image_path;  
    shell_exec($str_command); 
} 

在根文件夾有什麼有 「ffmpeg.exe」, 「ffplay.exe」 和 「pthreadGC2.dll」 的文件夾 「的ffmpeg」。所以我想知道,有什麼我失蹤?我正嘗試從視頻/ mp4文件生成縮略圖。

+1

如果從命令行運行相同的參數,是否會生成縮略圖? 如果你運行'exec(escapeshellcmd($ cmd),$ out,$ val)'你在輸出$ out和$ val中看到了什麼? 將它分解 - 首先嚐試執行簡化版本,以確定ffmpeg在通過PHP shell進行調用時是否正在運行。例如''ffmpeg -h'' –

+0

這就是我的做法:$ exec_string =「ffmpeg -y -ss」。($ position)。「-i $ filebase.mpg -vf scale ='iw:ow/dar', setsar = 1:1 -deinterlace -t 1 $ output_base「;它很奇怪,你設置-t之前-t,它應該是-t 11 –

+0

還有其他一些方法可以執行外部命令,以更好地控制它們的環境和輸出:['exec'](http://us.php。 net/manual/en/function.exec.php)和['proc_open'](http://us.php.net/manual/en/function.proc-open.php)。追加'2>&1'到命令,通過'exec'調用它,捕獲並打印輸出,檢查它是否有錯誤信息。 – DCoder

回答

0

是cdn /縮略圖文件夾?如果是這樣你必須提供文件名。你只給了一個文件夾。因此它不起作用。既然你需要每秒鐘10秒鐘,你必須給cdn/thumbnails/images%03d.jpg這樣的輸出。

那麼您的命令看起來是這樣的:

的ffmpeg -i輸入文件-s -f爲寬x高夾圖像2 /文件名%04d.jpg

進入命令行1中鍵入了該命令。確保它在那裏工作。然後它會從PHP工作。

這些文件將被命名爲filename0000.jpg filename0001.jpg等等。