官方介绍(可忽略)
FFmpeg是处理多媒体内容(如音频、视频、字幕和相关元数据)的库和工具的集合。它功能非常强大,包括视频裁剪、视频格式转换、视频截图、视频添加水印等。
它包含可供应用程序使用的libavcodec、libavutil、libavformat、libavfilter、libavdevice、libswscale和libswresample。以及可供最终用户用于转码和播放的ffmpeg、ffplay和ffprobe 。
库:
libavutil是一个包含用于简化编程的函数的库,包括随机数生成器、数据结构、数学例程、核心多媒体实用程序等等。
libavcodec是一个包含用于音频/视频编解码器的解码器和编码器的库。
libavformat是一个包含多媒体容器格式的解复用器和复用器的库。
libavdevice是一个包含输入和输出设备的库,用于抓取和渲染许多常见的多媒体输入/输出软件框架,包括 Video4Linux、Video4Linux2、VfW和ALSA。
libavfilter是一个包含媒体过滤器的库。
libswscale是一个执行高度优化的图像缩放和色彩空间/像素格式转换操作的库。
libswresample是一个执行高度优化的音频重采样、重新矩阵和样本格式转换操作的库。
工具:
ffmpeg一个多媒体文件转换格式的命令行工具。
ffplay一个基于 SDL 和 FFmpeg 库的简单媒体播放器。
ffprobe一个简单的多媒体流分析器。
官网地址
Windows下安装
- 下载软件(version:4.4.1)
- 解压到指定位置,找到bin目录
- 复制bin目录路径,配置环境变量
- 打开命令行窗口,执行命令“ffmpeg –version”,测试安装情况
- 出现以上结果,安装完毕
Linux(宝塔环境)下安装
- 找到软件下载地址
- 执行安装命令(安装过程有点漫长,需要慢慢等待)
# 切换目录
cd /root# 下载ffmpeg(x64二进制文件)
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz# 解压文件
tar xvf ffmpeg-release-amd64-static.tar.xz && rm -rf ffmpeg-release-amd64-static.tar.xz# 将ffmpeg和ffprobe可执行文件移至/usr/bin方便系统直接调用
mv ffmpeg-4.4.1-amd64-static/ffmpeg ffmpeg-4.4.1-amd64-static/ffprobe /usr/bin/
- 执行命令“ffmpeg”或者“ffmpeg -version”,测试安装情况
- 出现以上结果,安装完毕
PHP(ThinkPHP框架)使用FFMpeg
官方介绍(可忽略)
PHP-FFMpeg是一个与AVconv/FFMpeg通信的面向对象的库。
使用方法
- 使用Composer快速安装PHP-FFMpeg
$ composer require php-ffmpeg/php-ffmpeg
- 配置php.ini,启用proc_open、proc_get_status,找到disable_functions将里面的这两个函数去掉即可。建议禁用scandir,exec、system、shell_exec等危险函数。
- 使用FFMpeg
require 'vendor/autoload.php';// 创建操作对象
$ffmpeg = FFMpeg\FFMpeg::create();// 打开视频文件
$video = $ffmpeg->open('video.mpg');// 调整并同步视频尺寸大小
$video->filters()->resize(new FFMpeg\Coordinate\Dimension(320, 240))->synchronize();// 保存视频
$video->save(new FFMpeg\Format\Video\X264(), 'video.mpg');
// 转码
$video->save(new FFMpeg\Format\Video\X264(), 'export-x264.mp4')->save(new FFMpeg\Format\Video\WMV(), 'export-wmv.wmv')->save(new FFMpeg\Format\Video\WebM(), 'export-webm.webm');
// 截取第10帧画面
$video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))->save('frame.jpg');
// 剪切视频
$video->clip(FFMpeg\Coordinate\TimeCode::fromSeconds(30), FFMpeg\Coordinate\TimeCode::fromSeconds(15));->save(new FFMpeg\Format\Video\X264(), 'video.avi');
FFMpeg会自动检测ffmpeg和ffprobe二进制文件。如果系统检测不到二进制路径或者你想明确给出二进制路径,你可以传递一个数组作为配置。
$config = array('ffmpeg.binaries' => '/usr/bin/ffmpeg','ffprobe.binaries' => '/usr/bin/ffprobe'
),
$ffmpeg = FFMpeg\FFMpeg::create($config);
参考资料:
宝塔面板(CentOS7)安装ffmpeg视频切片模块