我需要以3格式/分辨率上传视频为360p,480p,720p。
经过一些研究后我才知道有些付费服务就像 Amazone Elastic Transcoder 。但我想用开源做,所以我发现 FFMPEG 。
此外,我想在转码后播放亚马逊s3 上的视频,视频的大小可能包含 1GB 大小。
我为 FFMPEG Library Link
获得了php库我已经安装了ffmpeg并成功生成了新视频。但我无法弄清楚如何生成不同的格式/分辨率为360p,480p,720p 。
我的示例代码是
error_reporting(E_ALL);
ini_set('display_errors', 1);
require 'vendor/autoload.php';
//$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('assets/small.mp4');
$video
->filters()
->resize(new FFMpeg\Coordinate\Dimension(320, 240))
->synchronize();
$video
->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(2))
->save('assets/frame.jpg');
$format = new FFMpeg\Format\Video\X264();
$format->setAudioCodec("libmp3lame");
$video->save($format, 'assets/new.mp4');
任何人都可以建议我如何实现这个目标?
答案 0 :(得分:0)
非常确定您已经解决了这个问题,但是现在将其放在此处以供将来参考。
// Create the formats in Kilo Bitrates
$_360p = (new FFMpeg\Format\Video\X264('libmp3lame'))->setKiloBitrate(500);
$_480p = (new FFMpeg\Format\Video\X264('libmp3lame'))->setKiloBitrate(750);
$_720p = (new FFMpeg\Format\Video\X264('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');