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

做音频合成的时候找到的一个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 的执行目录

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

$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、拼接视频/音频

1

2

3

$newFile '/mnt/hgfs/www/test/video.mp4';

$video $ffmpeg->open($v1);

$video->concat(array($v1,$v2,$v3))->saveFromSameCodecs($newFile, TRUE);

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

2、提取图像

提取一张

1

2

3

$video $ffmpeg->open($v1080);

$frame $video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(2));//提取第几秒的图像

$frame->save('image.jpg');

 

抽取多张

1

2

3

4

5

6

$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 张,不知道是不是我参数设置的问题(试了 FRAMERATE_EVERY_SEC,FRAMERATE_EVERY_2SEC,FRAMERATE_EVERY_10SEC)

3、生成音频波形

1

2

3

$audio $ffmpeg->open($a1);

$waveform $audio->waveform(640, 120, array('#00FF00'));<

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值