laravel - 有什么方法可以加快 ffmpeg 处理时间
问题描述
我在处理过程中遇到问题。我在 10 美元的数字托管包中使用真正的联合服务器,并使用来自 Amazon s3 的云服务。问题是在上传视频时,无论视频大小如何,无论其大小是 1 兆字节还是 2 千兆字节。上传过程结束后,处理过程开始上传,没有问题但是当处理过程需要很长时间以至于我无法完成时,解决办法是什么,是我有问题还是这个过程普通的?我使用 laravel-ffmpeg 并通过 laravel 队列将视频切割成几种品质,我将在下面将代码附加给您。
public function handle()
{
//180p
$lowBitrate1 = (new X264('aac'))->setKiloBitrate(613);
//270p
$lowBitrate2 = (new X264('aac'))->setKiloBitrate(906);
//360p
$midBitrate1 = (new X264('aac'))->setKiloBitrate(1687);
//540p
$midBitrate2 = (new X264('aac'))->setKiloBitrate(2227);
//720p
$highBitrate1 = (new X264('aac'))->setKiloBitrate(4300);
//1080
$highBitrate2 = (new X264('aac'))->setKiloBitrate(7917);
FFMpeg::fromDisk('s3')
->open($this->movie->path)
->exportForHLS()
->onProgress(function ($percent) {
$this->movie->update([
'percent' => $percent
]);
})
->setSegmentLength(10)// optional
->addFormat($lowBitrate1)
->addFormat($lowBitrate2)
->addFormat($midBitrate1)
->addFormat($midBitrate2)
->addFormat($highBitrate1)
->addFormat($highBitrate2)
->toDisk('s3')
->save("public/Movies/{$this->movie->id}/{$this->movie->id}.m3u8");
}//end of handle
解决方案
你能做的不多。x264 高度优化。一些小建议(除了升级您的云服务):
提供更少的比特率层。你真的需要6吗?
确保 x264 正在使用 CPU 功能。请参阅 ffmpeg 日志并查找该
using cpu capabilities
行。如果它说,none
那么你可能会错过一些速度。重新编译 x264 和 ffmpeg而不使用--disable-asm
.使用更快的x264 编码预设。
确保您的 ffmpeg 和链接的 x264 不是超级旧的。
如果输入音频格式与您的输出兼容,则流式复制音频而不是重新编码。
如果对音频进行编码,并且每个输出都相同,请使用tee muxer仅对其编码一次并将其传播到每个输出,而不是不必要地对每个输出编码相同的音频。
尝试使用硬件加速编码器,例如
h264_nvenc
您的环境和您的 ffmpeg 构建是否支持它。它可能更快,但不会提供像 x264 那样好的每比特质量。请注意,某些视频卡可能会人为地强制限制可以同时编码的流数量(尽管有一些解决方法,如果我没记错的话)。
推荐阅读
- scala - 执行期货列表,只有列表中的前两个被执行 - Scala
- java - Spring Boot JPA 规范-arg-resolver 已加入表
- django - 关系“account_account_groups”不存在第 1 行:...“auth_group”。“name” FROM “auth_group”INNER JOIN “account_a
- android - 来自WebView的Android位图缺少颜色
- java - 如何查看某个区域是否支持使用的 AWS SDK 版本?
- javascript - 在 Vue.js 中使用 Prop 更改背景颜色和伪元素颜色
- sharepoint-online - 使用 CSOM 从 SharePoint Online 注销
- javascript - node express mongo API 更新记录问题
- php - 为什么大小(数组)比它自己的数组大
- python - 如何用 sympy plot 或 matplotlib 绘制这个总和?