做音频合成的时候找到的一个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 张,不知道是不是我参数设置的问题(试

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

被折叠的 条评论
为什么被折叠?



