ffmpeg

因为业务需要,所以需要用到视频截取第一帧。因为之前没有做过,所以百度了好多资料,也遇到了好多坑,至此。希望给予一些正在遇到类似问题的朋友一些帮助,同时也是自己的一些总结。

https://ffmpeg.zeranoe.com/builds/ 这是ffmpeg的官网地址,可以根据需要相应的下载,这里要提的是static,也就是静态资源的意思,下来即用,而shared的需要将dll文件放置到c盘的system32下,针对一些没有服务器的朋友不是特别方便,这里提供静态的下载地址 https://pan.baidu.com/s/1YvFCvz5EXh6b2Stwj8Ss8A 。

以上就是demo的所有代码,是不是很简单,但是我测试了好多遍,可能书写或者是空格的关系,所以童鞋们也要注意,不行的话可以先在cmd测试一下,php中是用双斜线进行转义 这个也要注意啊~

linux下的操作是不一样的 参考地址

https://blog.csdn.net/qq_38568388/article/details/78815836 https://blog.csdn.net/qq_32145953/article/details/70243273

PHP转换视频格式这个问题,找了一下午的ffmpeg-php扩展的安装与使用方法,都是千篇一律转载的。 下面是我整理的步骤,希望能帮助大家这个问题。

1.下载ffmpeg-php扩展包和ffmpeg.exe(刚开始我以为不需要这个,本地windows测试缺一不可),解压后有以下文件 avcodec-51.dll avformat-51.dll avutil-49.dll php_ffmpeg.dll pthreadGC2.dll 2. 将四个文件拷贝到windows/system32目录下 avcodec-51.dll, avformat-51.dll, avutil-49.dll, pthreadGC2.dll 3.将php_ffmpeg.dll拷贝到php的ext目录下。 4. 然后需要到apache/bin文件下找到php.ini文件下允许使用dll文件加入extension=php_ffmpeg.dll 并确保这三个都是开启状态 extension=php_gd2.dll, extension=php_gettext.dll extension=php_gd2.dll extension=php_gettext.dll extension=php_ffmpeg.dll 5.重启apache,输出phpinfo();方法查看环境配置,如看到以下信息则说明扩展安装成功。

6.测试,新建test.php输入以下代码

getDuration()."
" . "getFrameCount: " . $ffmpegInstance->getFrameCount()."
" . "getFrameRate: " . $ffmpegInstance->getFrameRate()."
" . "getFilename: " . $ffmpegInstance->getFilename()."
" ; //获取参数的方法还有很多,这里举例以上几个 访问test.php文件,如果有输出 getDuration: 163.639007568 getFrameCount: 2455 getFrameRate: 15 getFilename: F:\www\ppt.wmv 到这里测试配置的环境成功, 使用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 Directive Local Value Master Value ffmpeg.allow_persistent 0 0 以上就表明ffmpeg在php环境中配置成功了。 7.下一步截取视频图片 $ff_frame = $ffmpegInstance->getFrame(20);//截取视频第20帧的图像 $gd_image = $ff_frame->toGDImage(); $img=$_SERVER['DOCUMENT_ROOT']."/test2.jpg";//要生成图片的绝对路径 imagejpeg($gd_image, $img);//创建jpg图像 imagedestroy($gd_image);//销毁一图像 这样也可以 exec ("ffmpeg -i test.avi -y -f image2 -ss 8 test.jpg");//在8秒处截取图片 8.这一步才是主要的,视频格式转换 exec("f:/www/ffmpeg.exe -i f:/www/test.wmv f:/www/test2.flv"); 第一个文件路径是转换工具路径(就是ffmpeg.exe的路径) 第二个是现有视频文件路径 第三个是生成的视频文件路径 这就是最简单的格式转换,还可以设置尺寸、码率等其他参数这里不再赘述。 完整的一个处理文件 getDuration()."
" . "getFrameCount: " . $ffmpegInstance->getFrameCount()."
" . "getFrameRate: " . $ffmpegInstance->getFrameRate()."
" . "getFilename: " . $ffmpegInstance->getFilename()."
" ; exec("f:/www/ffmpeg.exe -i f:/www/test.wmv f:/www/test2.flv"); exec ("ffmpeg -i f:/www/test2.flv -y -f image2 -ss 8 test.jpg");//在8秒处截取图片 ?>

刘小明博客
请先登录后发表评论
  • latest comments
  • 总共1条评论
刘小明博客

白俊遥:评论的内容

2017-07-16 07:35:12 回复