查看: 4356|回复: 0

FFmpeg 安装与使用

74

主题

77

帖子

425

积分

站长

Rank: 9Rank: 9Rank: 9

积分
425
官方介绍(可忽略)
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下安装
1.下载软件(version:4.4.1
1.png
2.png

2.解压到指定位置,找到bin目录

3.png

3.复制bin目录路径,配置环境变量
4.png

4.打开命令行窗口,执行命令“ffmpeg –version”,测试安装情况
444.png

5.出现以上结果,安装完毕


Linux(宝塔环境)下安装1.找到软件下载地址
51.png
511.png

2.执行安装命令(安装过程有点漫长,需要慢慢等待)
[PHP] 纯文本查看 复制代码
# 切换目录
cd /root

# 下载ffmpeg(x64二进制文件)
wget [url]https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz[/url]

# 解压文件
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”,测试安装情况
333.png

4.出现以上结果,安装完毕


PHP(ThinkPHP框架)使用FFMpeg官方介绍(可忽略)
PHP-FFMpeg是一个与AVconv/FFMpeg通信的面向对象的库。
使用方法


1.使用Composer快速安装PHP-FFMpeg
[PHP] 纯文本查看 复制代码
$ composer require php-ffmpeg/php-ffmpeg


2.配置php.ini,启用proc_open、proc_get_status,找到disable_functions将里面的这两个函数去掉即可。建议禁用scandir,exec、system、shell_exec等危险函数。
666.png

3.使用FFMpeg
[PHP] 纯文本查看 复制代码
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'); 

[PHP] 纯文本查看 复制代码
// 转码
$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');  

[PHP] 纯文本查看 复制代码
// 截取第10帧画面
$video
    ->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
    ->save('frame.jpg');

[PHP] 纯文本查看 复制代码
// 剪切视频
$video
    ->clip(FFMpeg\Coordinate\TimeCode::fromSeconds(30), 
           FFMpeg\Coordinate\TimeCode::fromSeconds(15));
    ->save(new FFMpeg\Format\Video\X264(), 'video.avi');   

FFMpeg会自动检测ffmpeg和ffprobe二进制文件。如果系统检测不到二进制路径或者你想明确给出二进制路径,你可以传递一个数组作为配置。
[PHP] 纯文本查看 复制代码
$config = array(
    'ffmpeg.binaries'  => '/usr/bin/ffmpeg',
    'ffprobe.binaries' => '/usr/bin/ffprobe'
),
$ffmpeg = FFMpeg\FFMpeg::create($config);

参考资料
宝塔面板(CentOS7)安装ffmpeg视频切片模块

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

部分素材来源于网络,如有侵权请联系www@benzou.cn进行删除。
Copyright   ©2016-2024  重庆奔走科技有限公司  Powered by © benzou.cn / benzou.cc
快速回复 返回列表 返回顶部