boss 发表于 2023-9-16 23:14:18

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]
查看完整版本: FFmpeg 安装与使用