FFmpeg 安装与使用
官方介绍(可忽略)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一个简单的多媒体流分析器。官方地址:https://www.ffmpeg.org/Windows下安装
1.下载软件(version:4.4.1)
2.解压到指定位置,找到bin目录
3.复制bin目录路径,配置环境变量
4.打开命令行窗口,执行命令“ffmpeg –version”,测试安装情况
5.出现以上结果,安装完毕
Linux(宝塔环境)下安装1.找到软件下载地址
2.执行安装命令(安装过程有点漫长,需要慢慢等待)
# 切换目录
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/
3.执行命令“ffmpeg”或者“ffmpeg -version”,测试安装情况
4.出现以上结果,安装完毕
PHP(ThinkPHP框架)使用FFMpeg官方介绍(可忽略)
PHP-FFMpeg是一个与AVconv/FFMpeg通信的面向对象的库。使用方法
1.使用Composer快速安装PHP-FFMpeg
$ composer require php-ffmpeg/php-ffmpeg
2.配置php.ini,启用proc_open、proc_get_status,找到disable_functions将里面的这两个函数去掉即可。建议禁用scandir,exec、system、shell_exec等危险函数。
3.使用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视频切片模块
页:
[1]