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
