使用 php ffmpeg 库对视频进行转码



>我需要上传 3 种格式/分辨率的视频,分别为 360p、480p、720p。

经过一些研究,我知道有一些付费服务,例如亚马逊弹性转码器.但我想用开源来做,所以我找到了FFMPEG。

我还想在转码后在Amazon s3上上传视频,视频尺寸很大,例如视频可能包含1GB大小。

我得到了FFMPEG库链接的 php 库

我已经安装了ffmpeg,它成功地生成了新视频。但是我不知道如何生成不同的格式/分辨率为 360p、480p、720p

我的示例代码是

error_reporting(E_ALL);
ini_set('display_errors', 1);
require 'vendor/autoload.php';
//$ffmpeg = FFMpegFFMpeg::create();
$video = $ffmpeg->open('assets/small.mp4');
$video
->filters()
->resize(new FFMpegCoordinateDimension(320, 240))
->synchronize();
$video
->frame(FFMpegCoordinateTimeCode::fromSeconds(2))
->save('assets/frame.jpg');
$format = new FFMpegFormatVideoX264();
$format->setAudioCodec("libmp3lame");
$video->save($format, 'assets/new.mp4');

谁能建议我如何实现这一目标?

我很确定你已经想通了,但我把它放在这里供将来参考。

// Create the formats in Kilo Bitrates
$_360p = (new FFMpegFormatVideoX264('libmp3lame'))->setKiloBitrate(500);
$_480p = (new FFMpegFormatVideoX264('libmp3lame'))->setKiloBitrate(750);
$_720p = (new FFMpegFormatVideoX264('libmp3lame'))->setKiloBitrate(1500);
// Open the video file
$video = $ffmpeg->open('assets/small.mp4')
// Add all formats
->addFormat($_360p)
->addFormat($_480p)
->addFormat($_720p)
// call the 'save' method with a filename...
->save('assets/new.mp4');

最新更新