【发布时间】:2011-04-24 03:09:33
【问题描述】:
我正在尝试使用此脚本通过 ffmpeg 创建视频的缩略图。一开始我用phpinfo();,发现我的服务器上安装了ffmpeg。
然后我将 ffmpeg-php 复制到我的服务器上并运行测试文件
我知道我的服务器上有很多功能正在运行
我得到了这样的输出
输出:-
Functions available in /usr/lib/php/extensions/no-debug-non-zts-20060613/ffmpeg.so extension:
Methods available in class ffmpeg_movie:
__construct
getduration
getframecount
getframerate
getfilename
getcomment
gettitle
getauthor
getartist
getcopyright
getalbum
getgenre
getyear
gettracknumber
getframewidth
getframeheight
getframenumber
getpixelformat
getbitrate
hasaudio
hasvideo
getnextkeyframe
getframe
getvideocodec
getaudiocodec
getvideostreamid
getaudiostreamid
getaudiochannels
getaudiosamplerate
getaudiobitrate
getvideobitrate
getpixelaspectratio
getpixelaspectratio
getvideobitrate
getaudiobitrate
getaudiosamplerate
getaudiochannels
getaudiostreamid
getvideostreamid
getaudiocodec
getvideocodec
getframe
getnextkeyframe
hasvideo
hasaudio
getbitrate
getpixelformat
getframenumber
getframeheight
getframewidth
gettracknumber
getyear
getgenre
getalbum
getcopyright
getartist
getauthor
gettitle
getcomment
getfilename
getframerate
getframecount
getduration
__construct
我编写了这段代码并尝试了任何可能的路径来分配$ffmpeg;
<?php
$thumb_stdout;
$retval=0;
$ffmpeg = '/home/lib/ffmpeg';
// change "demo.mpg" to your mpg file name!
$video = dirname(__FILE__) . 'demo.mpg';
// change "demo.jpg" to whichever name you like or don't
// for this example, the name of the output jpg file does not matter
$image = dirname(__FILE__) . 'demo.jpg';
$second = 1;
$cmd = "$ffmpeg -i $video 2>&1";
if (preg_match('/Duration: ((\d+):(\d+):(\d+))/s', '$cmd', $time)) {
$total = ($time[2] * 3600) + ($time[3] * 60) + $time[4];
$second = rand(1, ($total - 1));
}
//$cmd = "$ffmpeg -i $video -deinterlace -an -ss $second -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg $image 2>&1";
$cmd = "$ffmpeg -i $video -r 1 -ss 00:00:05 -t 00:00:01 -s 250x250 -f image2 $image";
echo $cmd;
exec($cmd);
//$return = '$cmd';
echo '<br>done!';
?>
【问题讨论】:
-
问题是脚本不工作兄弟。
-
那么请提供更多信息,兄弟。有任何错误信息吗?该命令是否从命令行工作?
-
不它只是回显我的 $cmd 变量并完成!最后!!!没有错误没有
-
至少试试
echo shell_exec($cmd)看看发生了什么。