windows安装配置ffmpeg
ffmpeg是一个开源的音视频转码工具,它提供了录制、转换以及流化音视频的完整解决方案,可以转码、压制、提取、截取、合并、录屏等。
一、下载FFmpeg
http://ffmpeg.org/download.html
二、FFmpeg组成
构成FFmpeg主要有三个部分,
2.1第一部分是四个作用不同的工具软件,分别是:ffmpeg.exe,ffplay.exe,ffserver.exe和ffprobe.exe。
- ffmpeg.exe:音视频转码、转换器
- ffplay.exe:简单的音视频播放器
- ffserver.exe:流媒体服务器
- ffprobe.exe:简单的多媒体码流分析器
2.2第二部分是可以供开发者使用的SDK,为各个不同平台编译完成的库。如果说上面的四个工具软件都是完整成品形式的玩具,那么这些库就相当于乐高积木一样,我们可以根据自己的需求使用这些库开发自己的应用程序。这些库有:
- libavcodec:包含音视频编码器和解码器
- libavutil:包含多媒体应用常用的简化编程的工具,如随机数生成器、数据结构、数学函数等功能
- libavformat:包含多种多媒体容器格式的封装、解封装工具
- libavfilter:包含多媒体处理常用的滤镜功能
- libavdevice:用于音视频数据采集和渲染等功能的设备相关
- libswscale:用于图像缩放和色彩空间和像素格式转换功能
- libswresample:用于音频重采样和格式转换等功能
二、下载工具
在官网上我们可以找到"Download"页面,该页上可以下载FFmpeg的工具、库和源代码等。在选择"Windows Packages"下的Windows Builds后,会跳转到Windows版本的下载页面:
1.下载后解压到指定目录(如D盘),如:D:\ffmpeg\bin,把这个地址设置成环境变量(这个应该都会,作用就是在任意目录都可以运行它的exe命令)
2.设置好cmd运行命令 ffmpeg -version,应该如下如:
参:https://www.jianshu.com/p/2b609afb9800
https://www.cnblogs.com/xiezhidong/p/6924775.html
获取视频封面图: https://www.cnblogs.com/jxl1996/p/10138964.html
<?php /** * Created by PhpStorm. * User: Administrator */ getVideoCover("C:\\Users\\Administrator\\Desktop\\tmp\\1233\\25.mp4"); /** * ffmpeg百度云盘下载地址:https://pan.baidu.com/s/1Am_x0abBvXTrbCFPHs5e9Q * 提取码:4y2r * 获取视频封面图片 * @param string $inFile 视频文件地址 * @param int $time 截图的秒数 * @param int $width 图片宽度 * @param int $height 图片高度 */ function getVideoCover($inFile, $time = 1, $width = 320, $height = 240) { //项目根目录 if(!defined('_PHP_FILE_')) { define('IS_CGI', (0 === strpos(PHP_SAPI, 'cgi') || false !== strpos(PHP_SAPI, 'fcgi')) ? 1 : 0); if(IS_CGI) { //CGI/FASTCGI模式下 $_temp = explode('.php',$_SERVER['PHP_SELF']); define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/')); }else { define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'],'/')); } } if(!defined('__ROOT__')) { $_root = rtrim(dirname(_PHP_FILE_),'/'); var_dump(dirname(_PHP_FILE_),$_root); define('__ROOT__', (($_root=='/' || $_root=='\\')?'':$_root)); } //文件根目录 $rootPath = realpath(__ROOT__) . './Public'; //输入文件路径 //$inFile = $rootPath . $inFile; //输出文件名 $outFileName = uniqid('video_') . ".jpg"; //输出文件目录 $outFileDir = '/uploads/videocover/' . date("Ymd", time()) . '/'; if (!is_dir($rootPath . $outFileDir)) { mkdir($rootPath . $outFileDir, 0777, true); } //输出文件路径 $outFile = $rootPath . $outFileDir . $outFileName; //ffmpeg.exe文件路径 //$ffmpeg = realpath(__ROOT__) . './ffmpeg/ffmpeg.exe'; $ffmpeg = 'D:\\ffmpeg\\bin\\ffmpeg.exe '; //运行命令 $command = $ffmpeg . " -i " . $inFile . " -y -f image2 -t {$time} -s {$width}x{$height} " . $outFile; echo $command; system($command);//有可能要修改php.ini文件 exec($command); return $outFileDir . $outFileName; }
其他有可能用到的文字:
https://www.jianshu.com/p/4664ee042772
https://www.cnblogs.com/peteremperor/p/6477743.html
https://github.com/PHP-FFMpeg/PHP-FFMpeg