ffmpeg的安装和PHP使用
原创 linux ffmpeg 2021-05-31 18:00:53
1 收藏 1 浏览4221 评论0
琴朗
已发34篇
有侵犯版权请及时联系我们,我们将在24小时内删除文章。
投诉举报


ffmpeg处理视频功能非常强大和实用。

包括截取视频帧图、获取视频时长、给视频增加水印等等功能。


我的服务器一般选择linux(centos7),所以先讲linux安装ffmpeg的方法。


一、linux安装ffmpeg


第1步,下载并进行解压(两种方式可以下载)


第一种,wget方式

wget http://www.ffmpeg.org/releases/ffmpeg-4.4.tar.gz
tar -zxvf ffmpeg-4.4.tar.gz

目前最新版本是4.4(2021年5月31号),可以访问链接 http://www.ffmpeg.org/releases/ 查看要下载的版本


第二种,官网下载

官网地址 http://ffmpeg.org/download.html

点击下图中标注的地方下载,下载完以后将下载文件传到服务器,通过ftp/rz命令都可以,只要上传上去就可以。

Image 1.png

上传成功后,进行解压

tar -zxvf ffmpeg-snapshot.tar.bz2


第2步,进入到解压目录并进行配置(以下载方式1为例)

cd ffmpeg-4.4
./configure --prefix=/usr/local/ffmpeg


注意:如果此时就执行 ./configure --prefix=/usr/local/ffmpeg 可能会报下图中的错误。

Image 2.png

所以就需要先安装nasm/yasm


安装nasm/yasm

 ①下载(2种方式下载)


第一种wget

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz

第二种官网下载

官网地址 http://yasm.tortall.net/Download.html

如下图,点击红框中进行下载,目前版本是1.3.0(2021年5月31号)


Image 4.png

②进行解压,配置(以第一种下载方式为例)

tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make && make install



第3步,重新进入到解压的ffmpeg目录,继续配置并编译

cd ffmpeg-4.4
./configure --prefix=/usr/local/ffmpeg
make && make install

注意:编译时间可能有点久,你可以让它编译,你去干点其他的。


第四步,配置环境变量

vim打开profile
vim /etc/profile  

在最后添加PATH并保存
export PATH=$PATH:/usr/local/ffmpeg/bin

重新读取并生效
source /etc/profile

Image 13.png



第五步,安装成功,查看版本

ffmpeg -version

Image 14.png






二、windows安装ffmpeg


第1步,官网下载

官网地址: http://ffmpeg.org/download.html

Image 15.png

当然也可以直接去github下载,地址 https://github.com/BtbN/FFmpeg-Builds/releases


根据自己的系统选择要下载的版本,我的系统是64位,所以下载win64的

Image 16.png



第2步,将下载的文件解压,并将解压后的文件放到ffmpeg里面


解压后的文件列表

Image 17.png


我要把ffmpeg放到F盘下的soft文件夹下,所以在F:\soft下新建ffmpeg文件夹,然后把解压的文件列表放到ffmpeg里面。

Image 18.png




第3步,配置环境变量

我的系统是Windows 10 家庭中文版 64位,所以以此系统进行讲解,其他版本环境变量的设置,不会的话自己搜一下就可以了。

Image 19.png


①电脑桌面找到“此电脑”图标,右键选择“属性”,在弹窗窗口,点击“高级系统设置”,如下图

QQ浏览器截图20210602180938.png


②点击“环境变量”

QQ浏览器截图20210602181106.png


③找到系统变量的“PATH",进行修改

QQ浏览器截图20210602181227.png


④将安装的ffmpeg的bin目录加入到PATH里面,最后保存就设置好了。

因为我的安装目录是F:\soft\ffmpeg

所以此处新增F:\soft\ffmpeg\bin就可以了

QQ浏览器截图20210602181517.png


⑤cmd查看版本

ffmpeg -version

QQ浏览器截图20210602181825.png



三、PHP的使用示例


我用的是thinkphp5.1框架,直接使用composer安装ffmpeg

不会用composer的可以参考  https://www.yusan.cn/blog/13.html

composer require php-ffmpeg/php-ffmpeg


windows系统php代码示例

            //这里处理视频文件(获得视频封面和时长)
            $file_path = "demo.mp4";
            
            $ffmpeg = \FFMpeg\FFMpeg::create();
            $video = $ffmpeg->open($file_path);
            $frame = $video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(1)); // 这里是提取第1秒的图像作为视频封面
                                                                                 
            //封面图
            $video_cover = "cover.jpg";
            $frame->save($video_cover);//这里是保存下来的封面图片
            
            
            //获得时长,单位秒
            $ffprobe = \FFMpeg\FFProbe::create();
            $video_duration = $ffprobe->format($file_path)->get('duration', 0);//这是获得的时长



linux系统php代码示例

着重说一下问题,使用上面获得封面图的方法,linux上面总是报错,可能是我配置的原因,反正怎么也成功不了,那就换一下解决方法。使用命令执行。

如下。

            //这里处理视频文件(获得视频封面和时长)
            $file_path = "demo.mp4";
            
            //下面的地址就是linux安装ffmpeg的地址
            $config = [
                'ffmpeg.binaries' => '/usr/local/ffmpeg',
                'ffprobe.binaries' => '/usr/local/ffmpeg/bin/ffprobe'
            ];
            
            $ffmpeg = \FFMpeg\FFMpeg::create($config);
            //$video = $ffmpeg->open($file_path);
          
                                                                                 
            //封面图
            $sec = "1";//这里是提取第1秒的图像作为视频封面
            $video_cover = "cover.jpg";
            $str = "/usr/local/ffmpeg/bin/ffmpeg -i " . $file_path . " -y -f mjpeg -ss ".$sec." -t 0.001 " . $video_cover;
            exec($str, $callback);
            
            
            //获得时长,单位秒
            $ffprobe = \FFMpeg\FFProbe::create($config);
            $video_duration = $ffprobe->format($file_path)->get('duration', 0);//这是获得的时长


命令行注意:

(1)命令前一定要加上 ”/usr/local/ffmpeg/bin/“

(2)php一定不要禁用exec



上面只是列举了ffmpeg比较简单常用的功能,对ffmpeg感兴趣的可以自己去研究。

有什么不明白的可以私聊我或者评论区发表评论。



评论(0) 我要评论