php ffmpeg 视频文件,PHP-FFMpeg 操作视频/音频文件

本文介绍了如何在PHP环境中使用FFmpeg进行视频处理,包括提取图片、转音频、加水印、调整视频参数,并展示了音频转换和获取视频时长的方法。通过composer安装php-ffmpeg库,配置FFMpeg和FFprobe的路径,实现多媒体文件的综合操作。
摘要由CSDN通过智能技术生成

进入解压后文件的bin目录下,可以看到相应的.exe文件。将bin目录添加到环境变量path中,注意以分号结尾。

验证是否安装成功:

运行cmd命令,在控制台输入命令:ffmpeg -version,结果如下所示:

ed1ff323766c510ea17ee1e1aa257cba.png

安装成功!

项目在使用之前请安装好 FFMpeg

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

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

'ffmpeg.binaries' => 'D:\ffmpeg\bin\ffmpeg.exe',

'ffprobe.binaries' => 'D:\ffmpeg\bin\ffprobe.exe',

];

$v1 = './static/common/mv.mp4';

$a1 = './static/common/a1.mp3';

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

//视频提取第几秒图片

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

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

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

//视频转音频

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

$audio_format = new Audio\Mp3();

$video->save($audio_format, './uploads/uid2/audio/audio.mp3');

//给视频加水印图片  (视频的编码 aac, libvo_aacenc, libfaac, libmp3lame)

libfdk_aac$video = $ffmpeg->open($v1);$watermarkPath = './static/common/water.jpg';

$absolute = ['x' => 50,'y' => 100];

$relative = [

'position' => 'relative',

'bottom' => 50,

'right' => 50];

$video->filters()->watermark($watermarkPath, $relative);

$video->save(new Video\X264('aac'), './uploads/uid2/video/1080_new.mp4');

//注意:x264 类默认使用 libfaac 为编码器,但我安装的是 aac,所以这里要指定为 aac,不然会报错

//可选项 relative(相对定位) / absolute(绝对,默认)

//若为 relative,有四个参数可选,top 、bottom、left、right ,分别对应四个方位

//若为 absolute,直接填写 x 和 y 坐标即可

//视频添加水印$video = $ffmpeg->open($v1);

$format = new Video\X264('aac');

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

$format->on('progress', function ($video, $format, $percentage)

{

echo "$percentage % 进度";

});

$video->save($format, './uploads/uid2/video/1080_new.avi');

//获取视频时长

$ffprobe = FFProbe::create($path);

$videoInfo = $ffprobe->format($v1);//也可以使用 get 获取特定值,第二个参数为默认值(若该参数不存在将返回此默认值)

$duration = $ffprobe->format($v1)->get('duration',100);

echo "

";print_r($videoInfo);

echo "

";

echo '视频时长:'.$duration;

//音频转换格式

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

$format = new Audio\Flac();

$format->on('progress', function ($audio, $format, $percentage) {

echo "$percentage % 进度";

});

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

$audio->save($format, './uploads/uid2/audio/1080_new.flac');

// 生成音频波形

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

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

$waveform->save('./uploads/uid2/audio/image.png');//必须保存为 png 格式复制代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值