gpt4 book ai didi

laravel - 有什么方法可以加快 ffmpeg 处理时间

转载 作者:行者123 更新时间:2023-12-04 22:45:01 24 4
gpt4 key购买 nike

我在处理过程中遇到问题。我在 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 encoding preset .
  • 确保您的 ffmpeg 和链接的 x264 不是 super 旧的。
  • Stream copy如果输入音频格式与您的输出兼容,则无需重新编码音频。
  • 如果对音频进行编码,并且每个输出都相同,请使用 tee muxer只对其进行一次编码并将其传播到每个输出,而不是不必要地对每个输出编码相同的音频。
  • 试试 hardware accelerated encoder ,如 h264_nvenc如果您的环境和您的 ffmpeg 构建支持它。它可能更快,但不会提供像 x264 那样好的每比特质量。请注意,某些视频卡可能会人为地强制限制可以同时编码的流数量(尽管有一些解决方法,如果我没记错的话)。
  • 关于laravel - 有什么方法可以加快 ffmpeg 处理时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61904056/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com