ffmpeg使用总结
2021-04-22 本文已影响0人
安之烟波客
ffmpeg介绍
Fmpeg 是领先的多媒体框架,能够解码、编码、转码、混合、解密、流媒体、过滤和播放人类和机器创造的几乎所有东西。它支持最晦涩的古老格式,直到最尖端的格式。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的便携性。
FFmpeg 可以在 Linux、Mac OS X、Microsoft Windows、BSDs、Solaris 等各种构建环境、机器架构和配置下编译、运行,并通过测试基础设施 FATE。
它包含了 libavcodec、libavutil、libavformat、libavfilter、libavdevice、libswscale 和 libswresample,可以被应用程序使用。还有 ffmpeg、ffplay 和 ffprobe,可以被终端用户用于转码和播放。
使用步骤
- 首先下载
windows下载地址: https://www.gyan.dev/ffmpeg/builds/
linux下载地址:http://ffmpeg.org/download.html
windows版本下载下来不需要安装,直接解压到本地任何一个可以访问的目录即可,Linux需要解压收进行编译安装,在本篇文章最后附带讲一下安装步骤
- 在项目中使用
我自己的项目用的框架是TP6.0,所以直接在项目根目录下运行composer命令即可,可参考官方文档
composer require php-ffmpeg/php-ffmpeg
然后就是直接上代码:
<?php
namespace app\controller;
use app\BaseController;
use FFMpeg\Coordinate\TimeCode;
use FFMpeg\FFMpeg;
class Index extends BaseController
{
public function index()
{
$config = [
'ffmpeg.binaries' => 'D:\Program Files\ffmpeg\bin\ffmpeg.exe', // 自己第一步解压的目录文职
'ffprobe.binaries' => 'D:\Program Files\ffmpeg\bin\ffprobe.exe', // 自己第一步解压的目录文职
'timeout' => 3600, // The timeout for the underlying process
'ffmpeg.threads' => 12, // The number of threads that FFMpeg should use
];
$ffmpeg = FFMpeg::create($config);
$video = $ffmpeg->open($this->app->getRootPath()."public/static/demo.mp4");
$video->frame(TimeCode::fromSeconds(2))->save("demo.jpg");
halt($video);
}
}
直接到public目录下找demo.jpg就可以了,在实际开发过程中需要指定合理的缩略图存储位置
image.png
Centos下安装ffmpeg
- 下载
wget https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
- 解压和安装
下载完之后先进行解压并打开目录
tar axvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
- 配置、编译和安装
./configure --prefix=/data/localffmpeg // /data/localffmpeg 我自己的安装目录编译查找
make && make install
不出意外的情况下就直接安装成功了(这个编译和安装的过程是相当的漫长。。。:) ),在我自己执行编译的时候提示一个nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
这样的错误,是因为这边没有安装yasm或者yasm的版本太老的问题,所以重新安装一下yasm就可以了,
yum install yasm
等待安装结束之后就可以再次执行上面的第三步