php-ffmpeg 中文版使用功能介绍
php-ffmpeg面向对象的库,可使用FFmpeg / AVConv转换视频/音频文件。查看另一个惊人的: PHP FFMpeg extras, 您将在其中找到许多音频/视频格式。请注意该库如何工作:该库需要有效的FFMpeg安装。您将需要FFMpeg和FFProbe二进制文件才能使用它。确保可以使用系统PATH找到这些二进制文件,以获取二进制文件检测的好处,否则,您必须在加载时显式给出二进制文件路径。对于Windows用户:请在http://ffmpeg.zeranoe.com/builds/中找到二进制文件。已知的问题:[*]Using rotate and resize will produce a corrupted output when using
libav 0.8. 使用rotate和resize将产生损坏的输出 。该错误已在版本9中修复。此错误未在最新的ffmpeg版本中出现。
安装推荐的安装PHP-FFMpeg的方法是通过 Composer.$ 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');
文献资料本文档是发现API的简介。建议浏览源代码,因为它是自记录的。FFMpegFFMpeg\FFMpeg是用来操纵媒体的主要对象。要构建它,请使用static FFMpeg\FFMpeg::create:$ffmpeg = FFMpeg\FFMpeg::create();FFMpeg将自动检测ffmpeg和ffprobe二进制文件。如果要显式给出二进制路径,则可以将数组作为配置传递。Psr\Logger\LoggerInterface 也可以传递A 来记录二进制执行。$ffmpeg = FFMpeg\FFMpeg::create(array(
'ffmpeg.binaries'=> '/opt/local/ffmpeg/bin/ffmpeg',
'ffprobe.binaries' => '/opt/local/ffmpeg/bin/ffprobe',
'timeout' => 3600, //基础进程的超时
'ffmpeg.threads' => 12, // FFMpeg应该使用的线程数
), $logger);
操纵媒体FFMpeg\FFMpeg根据URI创建媒体。URI可以是指向本地文件系统资源,HTTP资源或FFmpeg支持的任何资源的指针。注意: 要列出FFmpeg构建的所有受支持资源类型,请使用以下
-protocols command:ffmpeg -protocols若要打开资源,请使用 FFMpeg\FFMpeg::open 方法.$ffmpeg->open('video.mpeg');可以解决两种类型的媒体: FFMpeg\Media\Audio and FFMpeg\Media\Video.
A third type, FFMpeg\Media\Frame, 可以通过视频获得第三种类型。VideoFFMpeg\Media\Video 可以进行代码转换,即:更改编解码器,隔离音频或视频。可以提取帧。转码您可以使用FFMpeg\Media\Video:save方法对视频进行转码。您将FFMpeg\Format\FormatInterface为此通过。请注意,音频和视频比特率是在格式上设置的。$format = new FFMpeg\Format\Video\X264();
$format->on('progress', function ($video, $format, $percentage) {
echo "$percentage % transcoded";
});
$format
->setKiloBitrate(1000)
->setAudioChannels(2)
->setAudioKiloBitrate(256);
$video->save($format, 'video.avi');可以实时监视转码进度,有关更多信息,请参见下面的“格式”文档。提取图像您可以使用FFMpeg\Media\Video::frame 方法在任何时间码上提取帧。该代码返回FFMpeg\Media\Frame与第二个42对应的实例。您可以将任何FFMpeg\Coordinate\TimeCodeas作为参数传递,有关更多信息,请参见下面的专用文档。$frame = $video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(42));
$frame->save('image.jpg');如果要从视频中提取多个图像,可以使用以下过滤器:$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');默认情况下,这会将帧另存为jpg图像。您可以使用setFrameFileType将帧保存为另一种格式来覆盖此设置:$frameFileType = 'jpg'; // either 'jpg', 'jpeg' or 'png'
$filter = new ExtractMultipleFramesFilter($frameRate, $destinationFolder);
$filter->setFrameFileType($frameFileType);
$video->addFilter($filter);Clip在所需的位置剪切视频。使用输入查找方法。它比使用滤镜剪辑更快。$clip = $video->clip(FFMpeg\Coordinate\TimeCode::fromSeconds(30), FFMpeg\Coordinate\TimeCode::fromSeconds(15));
$clip->save(new FFMpeg\Format\Video\X264(), 'video.avi');剪辑过滤器采用两个参数:
[*]$start, an instance of FFMpeg\Coordinate\TimeCode, 指定剪辑的起点
[*]$duration, optional, an instance of FFMpeg\Coordinate\TimeCode, 指定剪辑的持续时间
在剪辑上,您可以应用与视频相同的过滤器。例如调整大小的过滤器。$clip = $video->clip(FFMpeg\Coordinate\TimeCode::fromSeconds(30), FFMpeg\Coordinate\TimeCode::fromSeconds(15));
$clip->filters()->resize(new FFMpeg\Coordinate\Dimension(320, 240), FFMpeg\Filters\Video\ResizeFilter::RESIZEMODE_INSET, true);
$clip->save(new FFMpeg\Format\Video\X264(), 'video.avi');产生波形您可以使用该FFMpeg\Media\Audio::waveform 方法生成音频文件的波形。此代码返回一个FFMpeg\Media\Waveform实例。您可以选择将尺寸作为前两个参数以及ffmpeg用于波形的十六进制字符串颜色数组进行传递,有关更多信息,请参见下面的专用文档。输出文件必须使用PNG扩展名。$waveform = $audio->waveform(640, 120, array('#00FF00'));
$waveform->save('waveform.png');如果要从视频中获取波形,请先将其转换为音频文件。//打开视频文件
$video = $ffmpeg->open( 'video.mp4' );
//设置音频格式
$audio_format = new FFMpeg\Format\Audio\Mp3();
//提取音频到一个新文件为MP3
$video->save($audio_format, 'audio.mp3');
//设置音频文件
$audio = $ffmpeg->open( 'audio.mp3' );
//创建波形
$waveform = $audio->waveform();
$waveform->save( 'waveform.png' );
筛选器您可以在应用滤镜FFMpeg\Media\Video与FFMpeg\Media\Video::addFilter 方法。视频接受音频和视频过滤器。您可以构建自己的过滤器,一些过滤器捆绑在PHP-FFMpeg中-可通过该FFMpeg\Media\Video::filters方法访问它们。过滤器可链接$video
->filters()
->resize($dimension, $mode, $useStandards)
->framerate($framerate, $gop)
->synchronize();.....更多教程请跳转:https://blog.csdn.net/weixin_42799222/article/details/105452373
页:
[1]