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

 

posted @ 2021-01-05 10:35  与f  阅读(8116)  评论(0编辑  收藏  举报