本文和大家分享PHP中的FFmeg装置及应用,心愿能帮忙到大家
FFmpeg简介
FFmpeg是视频解决最罕用的开源软件。
它功能强大,用处宽泛,大量用于视频网站和商业软件(比方 Youtube 和 iTunes),也是许多音频和视频格式的规范编码/解码实现。
对于FFMPEG视音频编解码的常识能够参考大神雷霄骅的系列教程
https://www.gaodaima.com/leixiao…
FFmpeg装置
下载fmmpeg代码
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
装置依赖库文件
次要装置三个:yasm ,sdl1.2 和 sdl2.0
装置 yasm
sudo apt-get install yasm
装置sdl1.2
sudo apt-get install libsdl1.2-dev
装置 sdl2.0
sudo apt-get install libstl2-dev
编译装置FFmpeg
进入到解压之后的 ffmpeg文件夹,顺次执行以下命令:
./configure make sudo make install
测试装置胜利与否
输出以下命令查看输入:
linux下 FFmpeg 命令介绍
FFmpeg 罕用的命令行参数如下。
-c:指定编码器 -c copy:间接复制,不通过从新编码(这样比拟快) -c:v:指定视频编码器 -c:a:指定音频编码器 -i:指定输出文件 -an:去除音频流 -vn: 去除视频流 -preset:指定输入的视频品质,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。 -y:不通过确认,输入时间接笼罩同名文件。
常见命令
查看文件信息
查看视频文件的元信息,比方编码格局和比特率,能够只应用-i
参数。$ ffmpeg -i input.mp4
拆散视频音频流
ffmpeg -i input_file -vcodec copy -an output_file_video //拆散视频流 ffmpeg -i input_file -acodec copy -vn output_file_audio //拆散音频流
视频转码
转换编码格局(transcoding)指的是, 将视频文件从一种编码转成另一种编码。比方转成 H.264 编码,个别应用编码器libx264
,所以只需指定输入文件的视频编码器即可。$ ffmpeg -i [input.file] -c:v libx264 output.mp4
扭转分辨率
上面是扭转视频分辨率(transsizing)的例子,从 1080p 转为 480p 。
$ ffmpeg \ -i input.mp4 \ -vf scale=480:-1 \ output.mp4
增加音轨
增加音轨(muxing)指的是,将内部音频退出视频,比方增加背景音乐或旁白。
$ ffmpeg \ -i input.aac -i input.mp4 \ output.mp4
截图
$ ffmpeg \ -ss 01:23:45 \ -i input \ -vframes 1 -q:v 2 \ output.jpg
下面例子中,-ss 01:23:45
示意截取的工夫戳, -vframes 1
指定只截取一帧,-q:v 2
示意输入的图片品质,个别是1到5之间(1 为品质最高)。
为音频增加封面
上面命令能够将音频文件,转为带封面的视频文件
$ ffmpeg \ -loop 1 \ -i cover.jpg -i input.mp3 \ -c:v libx264 -c:a aac -b:a 192k -shortest \ output.mp4
PHP中FFmpeg应用
exec办法
视频压缩
public static function reSize($path, $outPath, $toSize) { $shell = "ffmpeg -i " . $path . " -strict -2 -y -fs " . $toSize . " ". $outPath . " 2>&1"; exec($shell, $output, $ret); return $ret; }
视频截图
public static function screenshot($path, $outPath) { $shell = "ffmpeg -i " . $path . " -ss 1 -y -frames:v 1 -q:v 1 " . $outPath . " 2>&1"; exec($shell, $output, $ret); return $res; }
php-ffmpeg扩大
composer装置php-ffmpeg$ composer require php-ffmpeg/php-ffmpeg
根本用法
require 'vendor/autoload.php'; $ffmpeg = FFMpeg\FFMpeg::create(); $video = $ffmpeg->open('video.mpg'); $video ->filters() ->resize(new FFMpeg\Coordinate\Dimension(320, 240)) ->synchronize(); $video ->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10)) ->save('frame.jpg'); $video ->save(new FFMpeg\Format\Video\X264(), 'export-x264.mp4') ->save(new FFMpeg\Format\Video\WMV(), 'export-wmv.wmv') ->save(new FFMpeg\Format\Video\WebM(), 'export-webm.webm');