FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序(具体请百度)。
主要应用于视频转码,视频截取图片,视频格式转换等等。
为格式工厂等转码工具的基础组件。
因应用较广泛,百度Google等获取组件安装失败率较大,故写一篇文章描述并说明,文章末尾附有源包。
-------------------------------------------马克思主义分割线---------------------------------------------
推荐使用PHP 5.3.X版本
推荐使用PHP 5.3.X版本
推荐使用PHP 5.3.X版本
因作者并未对插件更新至新版php 所以保留使用此版本
将(php_ffmpeg.dll或php_ffmpeg_vc9.dll或php_memcache_vc6.dll)拷贝到php的ext目录
三者分别对应不同的php环境,
当为php5.2.x时,请使用php_ffmpeg.dll
当为php5.3.x时,请优先使用php_ffmpeg_vc9.dll,并在实际使用时重命名为php_ffmpeg.dll
当为php5.3.x时,且php_ffmpeg_vc9.dll不可用时,请使用php_memcache_vc6.dll,并在实际使用时重命名为php_ffmpeg.dll
请以下四个文件拷贝到windows/system32下,若系统为64位系统的,还要拷贝到Windows\SysWOW64下
avcodec-51.dll,avformat-51.dll,avutil-49.dll,pthreadGC2.dll
确保php.ini文件下这三个都是开启状态(去除前面的分号)(若没有请直接复制下面三条至php.ini)
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_ffmpeg.dll
重启apache,即可完成配置
ffmpeg.exe的使用
ffmpeg.exe是转码时调用的应用程序,请在使用时正确配置其位置,可以指定为相对位置,exec("ffmpeg.exe -y -i 1/VID_3201.mp4 ".$wh." 1/5.mp4");
php文件中调用实例如下 <?php //载入 extension_loaded('ffmpeg'); //获取时长,注意地址必须为绝对地址 //$ffmpegInstance = new ffmpeg_movie('http://test.bo.com/1/test.3gp'); //echo "getDuration: " . $ffmpegInstance->getDuration()."<br>";//时长 //实现视频的截图,注意地址必须为绝对地址 //$ffmpegInstance = new ffmpeg_movie('http://test.bo.com/1/test.3gp'); //$ff_frame = $ffmpegInstance->getFrame(20);//截取视频第20帧的图像 //$gd_image = $ff_frame->toGDImage(); //$img=$_SERVER['DOCUMENT_ROOT']."/test.jpg";//要生成图片的绝对路径 //imagejpeg($gd_image, $img);//创建jpg图像 //imagedestroy($gd_image);//销毁一图像 //视频格式转换,判断长宽比,动态设定,并允许覆盖,注意地址必须为绝对地址 $ffmpegInstance = new ffmpeg_movie('http://test.bo.com/1/VID_20151015_103201.mp4'); $w=$ffmpegInstance->getFrameWidth(); $h=$ffmpegInstance->getFrameHeight(); $wh=width_height($w,$h); function width_height($w,$h){ if($w>$h){ $wh="-s 640x480"; }else{ $wh="-s 480x640"; }; return $wh; }; exec("ffmpeg.exe -y -i 1/VID_20151015_103201.mp4 ".$wh." 1/5.mp4"); ?>