【发布时间】:2010-11-18 05:21:26
【问题描述】:
我正在使用this script,但我无法创建图像。
我的文件是here。
【问题讨论】:
-
您提供的那个文件实际上是无用的,因为它与您的特定 PHP 安装有内在联系。不如告诉我们您看到的是哪种错误或结果?
-
这个脚本没有生成图片
我正在使用this script,但我无法创建图像。
我的文件是here。
【问题讨论】:
您的 PHP 程序基本上调用了两次/usr/bin/ffmpeg。先在命令行上试试!你可以
echo "<pre>$cmd</pre>"
找出你的 PHP 脚本到底在做什么,然后在命令行上尝试那个确切的命令。
第一个命令应该类似于
/usr/bin/ffmpeg -i /var/www/beta/clock.avi 2>&1
这是您放置echos 的地方:
// get the duration and a random place within that
$cmd = "$ffmpeg -i $video 2>&1";
echo "<pre>$cmd</pre>"
if (preg_match('/Duration: ((\d+):(\d+):(\d+))/s', `$cmd`, $time)) {
$total = ($time[2] * 3600) + ($time[3] * 60) + $time[4];
$second = rand(1, ($total - 1));
}
// get the screenshot
$cmd = "$ffmpeg -i $video -an -ss $second -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg $image 2>&1";
echo "<pre>$cmd</pre>"
$return = `$cmd`;
【讨论】:
它不起作用,因为您从未执行过$cmd。要实际执行$cmd,您需要使用popen()、proc_open() 或exec()。
试试这个功能。只要 ffmpeg 可以访问,它就应该生成图像。要使其可访问,请将其添加到 linux 中的 $path,将其放入 Windows 中的 windows/system32 文件夹中。或者将其添加到Windows控制面板中的环境变量中。
$thumb_stdout - 显示与在 CLI 中相同的输出。这对于查看 ffmpeg 正在执行的操作的详细信息以及查看它在不工作时崩溃的位置很有用。
$errors - 如果 CLI 以错误代码退出(IE,如果 ffmpeg 崩溃)将显示错误。
【讨论】:
system(),以及其他几个选项
先安装ffmpeg-php(http://ffmpeg-php.sourceforge.net/)
然后你就可以使用这个简单的代码了:
<?php
$frame = 10;
$movie = 'test.mp4';
$thumbnail = 'thumbnail.png';
$mov = new ffmpeg_movie($movie);
$frame = $mov->getFrame($frame);
if ($frame) {
$gd_image = $frame->toGDImage();
if ($gd_image) {
imagepng($gd_image, $thumbnail);
imagedestroy($gd_image);
echo '<img src="'.$thumbnail.'">';
}
}
?>
【讨论】: