使用 PHP-FFMpeg 操作视频/音频文件

本文介绍了如何使用 PHP-FFMpeg 库进行音视频处理,包括视频拼接、提取图像、生成音频波形、调整视频大小、添加水印、设置帧率、裁剪视频、音频转换、添加元数据、提取动图和视频格式转换等功能。通过示例代码展示了具体操作步骤,帮助开发者在 PHP 环境中便捷地操作音视频文件。

做音频合成的时候找到的一个php操作ffmpeg 的类库。GitHub地址:https://github.com/PHP-FFMpeg/PHP-FFMpeg/。本文的例子大部分都是上面的

在使用之前请安装好 FFMpeg 。如何安装?请看 FFmpeg 安装教程

使用composer快速安装 > composer require php-ffmpeg/php-ffmpeg。

注意:请在 php.ini 中开启这两个函数proc_open,proc_get_status。找到 disable_functions 将里面的这两个函数去掉就行了

目录说明

/usr/loca/bin ffmpeg 的执行目录

/mnt/hgfs/www/test 本文章的测试目录

这里主要用 1080.mp4 这个视频做测试,下面就是这个 18 秒的视频(chrome 谷歌浏览器不显示播放器是因为https 的站不能使用未加密的http资源,唉)

https://www.bilibili.com/video/av17244788/

使用时请配置 ffmpeg,ffprobe 的执行文件绝对路径。我定义了一些测试用的视频音频文件

$path = [
    'ffmpeg.binaries'  => '/usr/local/bin/avconv',
    'ffmpeg.binaries' => '/usr/local/bin/ffmpeg',
    'ffprobe.binaries' => '/usr/local/bin/avprobe',
    'ffprobe.binaries' => '/usr/local/bin/ffprobe',
];
$ffmpeg = FFMpeg\FFMpeg::create($path);
$a1 = '/mnt/hgfs/www/test/a1.mp3';
$v1 = '/mnt/hgfs/www/test/v1.mp4';
$v2 = '/mnt/hgfs/www/test/v2.mp4';
$v3 = '/mnt/hgfs/www/test/v3.mp4';
$v1080 = '/mnt/hgfs/www/test/1080.mp4';

1、拼接视频/音频

$newFile = '/mnt/hgfs/www/test/video.mp4';
$video = $ffmpeg->open($v1);
$video->concat(array($v1,$v2,$v3))->saveFromSameCodecs($newFile, TRUE);

若是已存在合成的新文件 ($newFile 已存在),将会报错,请确保同一目录下不存在相同的文件

2、提取图像

提取一张

$video = $ffmpeg->open($v1080);
$frame = $video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(2));//提取第几秒的图像
$frame->save('image.jpg');

抽取多张

$video = $ffmpeg->open($v1080);
$video->filters()
    ->extractMultipleFrames(FFMpeg\Filters\Video\ExtractMultipleFramesFilter::FRAMERATE_EVERY_SEC, '/mnt/hgfs/www/test/image/')
    ->synchronize();
 
$video->save(new FFMpeg\Format\Video\X264('libfdk_aac'), '/mnt/hgfs/www/test/v2new.mp4');

注意:此方法会抽取对应的图片帧,而且每次都提取 400 张,不知道是不是我参数设置的问题(试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值