PHP-FFMpeg 操作音视频

本文介绍了如何使用PHP-FFMpeg库进行音视频处理,包括安装、视频截图、调整大小、添加水印、生成音频波形、音频转换、添加元数据、拼接、截取、提取gif、裁剪、格式转换和帧率调整等操作,详细阐述了各项参数的使用方法。
摘要由CSDN通过智能技术生成

▷ 安装PHP-FFMpeg

composer require php-ffmpeg/php-ffmpeg

▷ 视频中提取一张图片

  • 这里的 video.mp4 准备的是一段宫崎骏的视频片段
  • FFMpeg\FFMpeg::create 中需要指定系统软件中 ffmpegffprobe 的安装位置
  • 通过 FFMpeg\Coordinate\TimeCode::fromSeconds 可以指定提取第几秒的视频作为图片保存
<?php
require 'vendor/autoload.php';

$ffmpeg = FFMpeg\FFMpeg::create([
    'ffmpeg.binaries' => 'F:\ffmpeg\bin\ffmpeg.exe',
    'ffprobe.binaries' => 'F:\ffmpeg\bin\ffprobe.exe',
]);

$video = $ffmpeg->open('video.mp4');

$video
    ->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
    ->save('image.jpg');

提取图片

▷ 视频中提取多张图片

require 'vendor/autoload.php';

$ffmpeg = FFMpeg\FFMpeg::create([
    'ffmpeg.binaries' => 'F:\ffmpeg\bin\ffmpeg.exe',
    'ffprobe.binaries' => 'F:\ffmpeg\bin\ffprobe.exe',
]);

$video = $ffmpeg->open('video.mp4');

$video
    ->filters()
    ->extractMultipleFrames(FFMpeg\Filters\Video\ExtractMultipleFramesFilter::FRAMERATE_EVERY_10SEC, '/path/to/destination/folder/')
    ->synchronize();

$video
    ->save(new FFMpeg\Format\Video\X264(), '/path/to/new/file');

▷ 调整视频大小

  • FFMpeg\Coordinate\Dimension 可以设置调整后的分辨率
  • ResizeFilter::RESIZEMODE_FIT 是缩放模式中的一种,按照给定值进行调整
  • ResizeFilter::RESIZEMODE_INSET 是缩放模式中的一种,按照给定的尺寸,等比缩放,如果设置的宽高比跟原视频不一样,那会自动根据宽或高进行等比缩放
  • ResizeFilter::RESIZEMODE_SCALE_WIDTH 是缩放模式中的一种,高按照给定值,宽进行比例缩放
  • ResizeFilter::RESIZEMODE_SCALE_HEIGHT 是缩放模式中的一种,宽按照给定值,高进行比例缩放
  • true / false 是否强制使用最近的纵横比标准
<?php
require 'vendor/autoload.php';

$ffmpeg = FFMpeg\FFMpeg::create([
    'ffmpeg.binaries' => 'F:\ffmpeg\bin\ffmpeg.exe',
    'ffprobe.binaries' => 'F:\ffmpeg\bin\ffprobe.exe',
]);

$video = $ffmpeg->open('video.mp4');

$video
    ->filters()
    ->resize(new FFMpeg\Coordinate\Dimension(160,90), FFMpeg\Filters\Video\ResizeFilter::RESIZEMODE_FIT, true);

$video
    ->save(new FFMpeg\Format\Video\X264(), 'video_new.mp4');

▷ 视频添加水印

  • 通过 watermark 可以设置水印的相关信息,第一个参数是设置水印的地址,第二个参数里面可以设置水印位置参数
  • position: 可以选择 relative 相对定位,或者 absolute 绝对定位,如果选择 absolute,则只需要填写 xy 坐标即可
  • top / bottom / left / right: 四个方位上下左右距离边
评论 115
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客飞兔

你的支持是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值