昨天收到一“挨踢”兄的邮件,估计是看到我以前上CSDN咨询过同样的一样问题“FFMPEG在windows2003下不生效”(http://topic.csdn.net/u/20080902/16/fab6e4f3-92b3-4d4b-9286-71259f770a50.html)当时这个问题折腾我整整一个通宵(项目紧急被逼的)才搞定,估计这位仁兄也是备受煎熬,否则不会这么“执着”的发邮件来问我了,呵呵。看到这位同命的“挨踢”人,我也是找遍了所有文档,终于在我的笔记中看到了,你够幸运!!!为了过去的,现在的,将来的,我把我当时的处理方法贴上来,希望对有需要的朋友有用,喔喔~~使用php_ffmpeg.dll方式生成视频截图代码(在window2003下不好使!!!!)
首先安装php_ffmpeg,安装方法如下:
1.copy php_ffmpeg.dll到PHP扩展目录
2.copy avcodec-51.dll、avformat-51.dll等到system32目录
3.安装gd2
3.配置php.ini,extension=php_ffmpeg.dll;
成功安装使用phpinfo可以看到如下显示:
ffmpeg support (ffmpeg-php) enabled
ffmpeg-php version 0.5.2.1
libavcodec version Lavc51.43.0
libavformat version Lavf51.12.2
ffmpeg-php gd support enabled 使用方法:
下面的代码我就不整理了,大家看看就明白了(前面是路径,文件名等的规则而已,后面几行就是真正的干活部分)function generateThumb($path){
try {
$yearMonth = date('Ym');
$VIDEO_IMAGE_BASEW_PATH = dirname(__FILE__).DIRECTORY_SEPARATOR."uploadimg".DIRECTORY_SEPARATOR."video";
$video_image_path = $VIDEO_IMAGE_BASEW_PATH.DIRECTORY_SEPARATOR.$yearMonth.DIRECTORY_SEPARATOR;
if(!file_exists($video_image_path)){
mkdir($video_image_path, 0777);
}
$imageName = 'pocle_'.date("YmdGis").'_'.rand(1000,9999).".jpg";
$imagePath = 'system/uploadimg/video/'.$yearMonth."/".$imageName;
$frame = 1;
$mov = new ffmpeg_movie($path);
$img = sprintf("%s/".$imageName, $video_image_path, $frame);
$ff_frame = $mov->getFrame($frame);
if ($ff_frame) {
$gd_image = $ff_frame->toGDImage();
if ($gd_image) {
imagejpeg($gd_image, $img);
imagedestroy($gd_image);
}
}
return $imagePath;
}catch(Exception $e){
return "";
}
}
使用ffmpeg.exe方式生成视频截图代码(在window2003和windowXP下都好使,我当时就是这样处理的)
注意:在2003下由于存在权限问题,不能直接在php中使用exec调用ffmpeg命令,必须使用COM$phpwsh=new COM("Wscript.Shell") or die("Create Wscript.Shell Failed!");
$exec=$phpwsh->exec("cmd.exe /c ffmpeg.exe -i D:/FFmpeg/test.flv -f image2 -ss 5 -s 120*90 -vframes 1 D:/FFmpeg/test.jpg"); 另外附上ffmpeg.exe参数说明:
ffmpeg -i "e:\test.flv" -f image2 -ss 5 -s 120*90 -vframes 1 "e:\test.jpg"
ffmpeg // 命令
-i "f:\test.flv" // 输入文件
-f image2 -ss 6 -s 120*90 -vframes 1
// 可选参数: -f表示输出文件格式、
// -ss表示相对于文件开始处的时间偏移值, 即从6秒出开始截图
// -s表示截图的的大小
// -vframes表示截图的桢数
"f:\test.jpg" // 输出文件
上面的意思就是,从test.flv中的第5秒开始截1帧大小为120*90保存成名为test.jpg的图片至于ffmpeg.exe文件我不知道如何传附件,有需要的可以到网上下载或邮件给我([email protected])希望对大家帮助!!!!!
首先安装php_ffmpeg,安装方法如下:
1.copy php_ffmpeg.dll到PHP扩展目录
2.copy avcodec-51.dll、avformat-51.dll等到system32目录
3.安装gd2
3.配置php.ini,extension=php_ffmpeg.dll;
成功安装使用phpinfo可以看到如下显示:
ffmpeg support (ffmpeg-php) enabled
ffmpeg-php version 0.5.2.1
libavcodec version Lavc51.43.0
libavformat version Lavf51.12.2
ffmpeg-php gd support enabled 使用方法:
下面的代码我就不整理了,大家看看就明白了(前面是路径,文件名等的规则而已,后面几行就是真正的干活部分)function generateThumb($path){
try {
$yearMonth = date('Ym');
$VIDEO_IMAGE_BASEW_PATH = dirname(__FILE__).DIRECTORY_SEPARATOR."uploadimg".DIRECTORY_SEPARATOR."video";
$video_image_path = $VIDEO_IMAGE_BASEW_PATH.DIRECTORY_SEPARATOR.$yearMonth.DIRECTORY_SEPARATOR;
if(!file_exists($video_image_path)){
mkdir($video_image_path, 0777);
}
$imageName = 'pocle_'.date("YmdGis").'_'.rand(1000,9999).".jpg";
$imagePath = 'system/uploadimg/video/'.$yearMonth."/".$imageName;
$frame = 1;
$mov = new ffmpeg_movie($path);
$img = sprintf("%s/".$imageName, $video_image_path, $frame);
$ff_frame = $mov->getFrame($frame);
if ($ff_frame) {
$gd_image = $ff_frame->toGDImage();
if ($gd_image) {
imagejpeg($gd_image, $img);
imagedestroy($gd_image);
}
}
return $imagePath;
}catch(Exception $e){
return "";
}
}
使用ffmpeg.exe方式生成视频截图代码(在window2003和windowXP下都好使,我当时就是这样处理的)
注意:在2003下由于存在权限问题,不能直接在php中使用exec调用ffmpeg命令,必须使用COM$phpwsh=new COM("Wscript.Shell") or die("Create Wscript.Shell Failed!");
$exec=$phpwsh->exec("cmd.exe /c ffmpeg.exe -i D:/FFmpeg/test.flv -f image2 -ss 5 -s 120*90 -vframes 1 D:/FFmpeg/test.jpg"); 另外附上ffmpeg.exe参数说明:
ffmpeg -i "e:\test.flv" -f image2 -ss 5 -s 120*90 -vframes 1 "e:\test.jpg"
ffmpeg // 命令
-i "f:\test.flv" // 输入文件
-f image2 -ss 6 -s 120*90 -vframes 1
// 可选参数: -f表示输出文件格式、
// -ss表示相对于文件开始处的时间偏移值, 即从6秒出开始截图
// -s表示截图的的大小
// -vframes表示截图的桢数
"f:\test.jpg" // 输出文件
上面的意思就是,从test.flv中的第5秒开始截1帧大小为120*90保存成名为test.jpg的图片至于ffmpeg.exe文件我不知道如何传附件,有需要的可以到网上下载或邮件给我([email protected])希望对大家帮助!!!!!
解决方案 »
- mysql报错 1064.郁闷,急死了,不知道哪里问题
- magento 数据导出
- 不知道有没PHP繁简转换程序
- smarty相关取值问题
- 关于织梦后台首页模板问题和服务器问题
- apache 每隔不到两三天就假死,以下是运行记录,大神,看看
- myeclipse10.1下部署tomcat7失败
- 关于PHP未来发展的N个严肃思考
- lnmp symfony1.4 500 error 求问
- 微信公众号怎么发送信息给指定用户
- 总出现mysql_fetch_array(): supplied argument is not a valid MySQL result resource
- 今天发现一个确实不错的空间,不是广告
--------------------------------------------
弟46行代码为 : $shell = new COM("WScript.Shell") or die("Create Wscript.Shell Failed!");