Jeffrey Wang
文章85
标签144
分类12
Linux快速安装FFMPEG,以及使用php-ffmpeg库踩的一些坑

Linux快速安装FFMPEG,以及使用php-ffmpeg库踩的一些坑

背景

项目中需要使用ffmpeg对视频进行视频封面截图操作,但是ffmpeg在Linux下的安装需要装很多依赖包,非常费时间,并且使用php-ffmpeg进行调用时总是爆出莫名奇妙的问题,此博客即为对此类问题的总结。

如何在Linux(Centos、fedro)中快速安装FFMPEG

在网上也看过不少安装ffmpeg的博客,都是安装一大堆xlib,libx264之类的一大堆包,搭建需要花费大量的时间,对于想要快速部署ffmpeg环境的时候特别不合适,于是笔者就找到了一个centos的yum源,可以快速安装ffmpeg以及相关依赖。

yum快速安装ffmpeg环境

首先,安装yum源 Centos6 : rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm Centos7 : rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm 然后,直接yum安装ffmpeg yum install ffmpeg

composer安装php-ffmpeg

composer require php-ffmpeg/php-ffmpeg 在php中使用,注:此代码在windows下不报错,但在Linux中可能会出现问题

1
2
3
4
5
6
7
<?php
require 'vender/autoload.php';
$fpg = \FFMpeg\FFMpeg::create();
// 打开test.mov
$video = $fpg->open('test.mov');
// 保存第3秒的截图
$video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(3))->save('temp.jpg');

踩过的坑

如何解决Unable to load FFMpeg

在Linux环境中,直接使用create()会爆出如下错误: 出现原因: create()时未指定ffmpeg的完成路径,所以报错 Unable to load FFMpeg(译:不能加载FFMPEG) 解决方案: 指定ffmpeg和ffprobe的完整路径即可

1
2
3
4
5
6
<?php
$fpg = \FFMpeg\FFMpeg::create([
'ffmpeg.binaries' => '/usr/bin/ffmpeg',
'ffprobe.binaries' => '/usr/bin/ffprobe'
]);

注:即时ffmpeg在环境变量中,也需要指定完整路径

如何解决Unable to save frame

解决完Unable to load 问题之后,又出现了Unable to save frame的问题。 Unable to save frame ffmpeg failed to execute command ‘/usr/bin/ffmpeg’ ‘-y’ ‘-ss’ ‘00:00:03.00’ ‘-i’ ‘./test.mov’ ‘-vframes’ ‘1’ ‘-f’ ‘image2’ ‘./temp.jpg’ PS:failed to execute command …的详细信息是更改Frame.php中的源代码查看到的。 发生原因 笔者看到这种情况,第一想到的就是可能保存文件权限不足,所以更改了下 保存路径的权限为 777,但是并没有这么简单,手动在命令行下执行了这个脚本,发现在命令行下可以执行。 解决办法 经过一番资料搜索与摸索,终于确定了问题所在,既然 手动执行脚本没有问题,为何通过web调用php就不能执行呢?于是将目标转移到了/usr/bin/ffmpeg和/usr/bin/ffprobe上,ls -a 查看权限所属,果然全是root:root,将其改为apache:apache后使用web调用php程序正常执行。 chown apache:apache /usr/bin/ffmpeg /usr/bin/ffprobe 执行完毕后最终结果: ls -a /usr/bin/ff*

本文作者:Jeffrey Wang
本文链接:https://blog.wj2015.com/2018/03/19/linux%E5%BF%AB%E9%80%9F%E5%AE%89%E8%A3%85ffmpeg%EF%BC%8C%E4%BB%A5%E5%8F%8A%E4%BD%BF%E7%94%A8php-ffmpeg%E5%BA%93%E8%B8%A9%E7%9A%84%E4%B8%80%E4%BA%9B%E5%9D%91/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×