php - 使用 php ffmpeg 库对视频进行转码
问题描述
我需要上传 3 种格式/分辨率的视频,如 360p、480p、720p。
经过一些研究,我知道那里有一些付费服务,比如Amazone Elastic Transcoder。但我想做开源,所以我找到了FFMPEG。
另外我想在转码和视频大尺寸后在Amazon s3上上传视频,比如视频可能包含1GB大小。
我有FFMPEG 库链接的 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');
谁能建议我如何实现这一目标?
解决方案
我很确定您已经知道了这一点,但我将其放在这里以供将来参考。
// 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');
推荐阅读
- python - 在字典中获取对应的值
- php - API 身份验证问题
- xaml - 如何在周围元素中垂直居中对齐非常大的标签
- javascript - Testcafe:将客户端脚本代码注入 Worker Global Scope 以模拟丢失的 Web API
- python - 像在 R 中一样在 Python 中绘制 QQ 图
- amazon-web-services - 试图从容器内访问 EKS 集群
- javascript - 结构区块链的延迟
- c# - 如何从 ASP.NET Core MVC 中的字典模型和列表模型中获取匹配的记录
- rust - 编译完成后可以执行任务吗?
- sql - 如果数据不存在 Wait Else RUN SQL