php操作ffmpeg有两个扩展,一个是ffmpeg-php,这个是不依赖ffmpeg,需要编译安装并在 php.ini 中启用。还有一个是php-ffmpeg,使用php-ffmpeg需要安装ffmpeg软件,对于ffmpeg的安装可以看看我之前的文章【Linux安装ffmpeg】
ffmpeg-php官方已经很久没有更新了。我们这里主要针对php-ffmpeg进行说明
扩展安装
composer require php-ffmpeg/php-ffmpeg
use FFMpeg\FFProbe;
$videoPath = 'path/to/video.mp4';
$ffprobe = FFProbe::create();
$duration = $ffprobe->format($videoPath)->get('duration');
echo "视频时长:{$duration} 秒";
如果我们使用了ffmpeg打开一个视频时,可以通过getFormat获取ffprobe对象:
$ffmpeg = FFMpeg\FFMpeg::create();
$video_path = '视频路径';
$video = $ffmpeg->open($video_path);
$duration = $video->getFormat()->get('duration')
echo "视频时长:{$duration} 秒";
视频格式转换
视频格式有很多中,php-ffmpeg中提供了5中格式的转换,下面我以x264为例:
$ffmpeg = FFMpeg\FFMpeg::create();
$video_path = '视频路径';
$video = $ffmpeg->open($video_path);
//转换视频
$video->save(new FFMpeg\Format\Video\WMV(),'output.wmv');
//$video->save(new FFMpeg\Format\Video\X264(),$root_path.'/output_x264.mp4');
//$video->save(new FFMpeg\Format\Video\WebM(),$root_path.'/output.webm');
//$video->save(new FFMpeg\Format\Video\Ogg(),$root_path.'/output.ogv');
//$video->save(new FFMpeg\Format\Video\WMV3(),$root_path.'/output.wmv');
$ffmpeg = FFMpeg\FFMpeg::create();
$video_path = '视频路径';
$video = $ffmpeg->open($video_path);
$output_path = '输出路径,例如:/root/1.gif';
$gif = $video->gif(FFMpeg\Coordinate\TimeCode::fromSeconds(1),
new FFMpeg\Coordinate\Dimension(480, 640), 3);
$gif->save($output_path);
读取视频中的音频
$ffmpeg = FFMpeg\FFMpeg::create();
$video_path = '视频路径';
$video = $ffmpeg->open($video_path);
$output_path = '输出路径,例如:/root//audio.mp3';
$audio_format = new FFMpeg\Format\Audio\Mp3();
$video->save($audio_format, $output_path);
视频添加水印
$ffmpeg = FFMpeg\FFMpeg::create();
$video_path = '视频路径';
$video = $ffmpeg->open($video_path);
$output_path = '输出路径,例如:/root//watermark_video.mp4';
$watermarkpath = '水印图片的路径';
$video->filters()->watermark($watermarkpath,[
'position'=>'relative',
'bottom'=>50,
'right'=>50,
'width'=>100
]);
$video->save(new FFMpeg\Format\Video\X264(),$output_path);
领取专属 10元无门槛券
私享最新 技术干货