centos安装ffmpeg,php使用ffmpeg扩展操作视频(反复卸载安装为新手蔽坑)

前情

因公司业务需要,决定研究下ffmpeg。
断断续续经过几天的安装,找资料忽然发现已经搜了这么多文章了还没安装成功。
请添加图片描述
在这里插入图片描述
打起精神毕竟
请添加图片描述

于是在多篇文章中发现了很多问题的相同点,抓住相同点去分析问题
请添加图片描述
终于成功了。
请添加图片描述
多去尝试自己去解决问题,大多数问题通过网上文章认真分析都可以解决,毕竟都是前车之鉴,多点耐心,记住心态一定不能崩,下面进入正文。

一、什么是ffmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。

具备那些功能

多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。
1.视频采集功能
ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。
2.视频格式转换功能
ffmpeg视频转换功能。视频格式转换。
ffmpeg可以实现多种视频格式之间的相互转换(wma,rm,avi,mod等)。
3.视频截图功能
对于选定的视频,截取指定时间的缩略图。视频抓图,获取静态图和动态图,不提倡抓gif文件;因为抓出的gif文件大而播放不流畅。
4.给视频加水印功能
使用ffmpeg 视频添加水印或者logo。

二、安装

1.安装nasm

Netwide Assembler (简称 NASM)是一款基于x86架构的汇编与反汇编软件。它可以用来编写16位(8086、80286等)、32位(IA-32)和64位(x86_64)的程序。 NASM被认为是Linux平台上最受欢迎的汇编工具之一。
ffmpeg为了提高效率使用了汇编指令

wget https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz
cd nasm-2.13.03/
./configure
make
make install

查看是否安装成功

nasm --version

在这里插入图片描述

2.安装yasm

yasm是在nasm的基础上开发的,与nasm同宗。由于使用了相同的语法,因此nasm的代码可以直接用yasm来编译。

在http://www.tortall.net/projects/yasm/releases链接 找到适合自己的yasm版本。然后进行安装。
举例如下:

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
 ./configure
make
make install

查看是否安装成功

yasm --version

在这里插入图片描述

3.安装libx264

libx264 是个库文件,用于编码

git clone https://code.videolan.org/videolan/x264.git
cd x264
./configure --enable-shared --enable-static --disable-asm
make
make install 

查看是否安装成功

x264 --version

在这里插入图片描述

4.安装ffmpeg

提前提醒
./configure 命令操作后提示这个信息
在这里插入图片描述
执行下面命令后 再执行./configure命令

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
wget https://ffmpeg.org/releases/ffmpeg-4.4.tar.xz
tar xvJf ffmpeg-4.4.tar.xz
cd ffmpeg-4.4
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-libx264
make 
make install

安装ffmpeg比较耗时间,耐心等待
请添加图片描述
tips

configure --prefix= 的作用是编译的时候用来指定程序存放路径
--enable-libx264 指令来添加其第三方库使得编译的ffmpeg具有H.264的编码功能

5.添加环境变量

vi /etc/profile

在文件末尾添加

export PATH=$PATH:/usr/local/ffmpeg/bin

保存退出 执行下面命令 设置生效

source /etc/profile

查看是否安装成功

ffmpeg

在这里插入图片描述

6.进行配置

如果报没有 .so 链接库错误信息,就配置下动态库
1.)编辑动态库配置

vi /etc/ld.so.conf

在文件末尾添加

/usr/local/ffmpeg/lib

保存退出后执行下面命令刷新

ldconfig

7.ffmpeg使用语法

ffmpeg官网

命令格式:
    ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
    ffmpeg [[options][`-i' input_file]]... {[options] output_file}...
    1、参数选项:
    (1) -an: 去掉音频
    (2) -acodec: 音频选项, 一般后面加copy表示拷贝
    (3) -vcodec:视频选项,一般后面加copy表示拷贝
    2、格式:
    (1) h264: 表示输出的是h264的视频裸流
    (2) mp4: 表示输出的是mp4的视频
    (3)mpegts: 表示ts视频流

例:视频压缩

ffmpeg -i 原文件路径 -c:v libx264 -crf 30 -c:a aac 输出文件路径

在这里插入图片描述

三、php使用

1.下载依赖包

$ composer require php-ffmpeg/php-ffmpeg

具体使用方法查看包 README.md 文件,下面列举常用例子

2.基本用法


require 'vendor/autoload.php';

$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('video.mpg');
$video
    ->filters()
    ->resize(new FFMpeg\Coordinate\Dimension(320, 240))
    ->synchronize();
$video
    ->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
    ->save('frame.jpg');
$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');

3.创建操纵媒体的对象

$ffmpeg = FFMpeg\FFMpeg::create();

FFMpeg自动检测ffmpeg和ffprobe文件。如果想给设置路径,可以用数组形式作为配置传递。

$ffmpeg = FFMpeg\FFMpeg::create(array(
    'ffmpeg.binaries'  => '/opt/local/ffmpeg/bin/ffmpeg',
    'ffprobe.binaries' => '/opt/local/ffmpeg/bin/ffprobe',
    'timeout'          => 3600, // The timeout for the underlying process
    'ffmpeg.threads'   => 12,   // The number of threads that FFMpeg should use
), $logger);

4.转码

$format = new FFMpeg\Format\Video\X264();
$format->on('progress', function ($video, $format, $percentage) {
    echo "$percentage % transcoded";
});

$format
    ->setKiloBitrate(1000)
    ->setAudioChannels(2)
    ->setAudioKiloBitrate(256);

$video->save($format, 'video.avi');

5.提取图像

$frame = $video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(42));
$frame->save('image.jpg');

6.裁剪视频

$clip = $video->clip(FFMpeg\Coordinate\TimeCode::fromSeconds(30), FFMpeg\Coordinate\TimeCode::fromSeconds(15));
$clip->save(new FFMpeg\Format\Video\X264(), 'video.avi');

四、文档

ffmpeg-php文档
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

五、tips

视频处理比较费服务器,服务器配置不高处理一个视频cpu就会爆,建议不要安装在业务服务器,避免影响业务。

php也可以直接操作
例:

<?php
exec('ffmpeg -i 源文件路径 -c:v libx264 -crf 30 -c:a aac 输出路径');

六、闲聊

35岁是程序员瓶颈吗?
程序员是一个靠知识吃饭的行业,这行业的技术迭代是最快的。如果想要保持不掉队,那就一刻都不能放松。
尽量提升自己的影响力,在公司掌握核心技术及业务,能力强的人永远不怕大龄。
只要你足够优秀,好运气一定会来找你!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GMYcode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值