参考文档 blog.jam00.com/article/inf…
fmpeg功能强大,但我们首先得学会对其进安装(windows下安装)。
下载网址:ffmpeg.org/download.ht…,对应的Windows版本
进入解压后文件的bin目录下,可以看到相应的.exe文件。将bin目录添加到环境变量path中,注意以分号结尾。
验证是否安装成功:
运行cmd命令,在控制台输入命令:ffmpeg -version,结果如下所示:
安装成功!
项目在使用之前请安装好 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 "<pre>";print_r($videoInfo);
echo "</pre>";
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 格式