2012-09-15 27 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等等。