我在处理过程中遇到了问题。我在$ 10的数字托管套件中使用一台真正的联合服务器,并使用Amazon s3的云服务。问题是,无论视频大小是1兆字节还是2 Giga,上传视频时都存在问题。在上载过程之后,处理过程开始上载,没有问题,但是当处理过程花费很长时间以致于我无法完成它时,解决方案是什么,对我来说有问题还是这个过程正常? 我使用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
答案 0 :(得分:0)
不,如果不大大降低质量或分辨率,就无法加快ffmpeg的速度。如果有一种更快的方法,则默认情况下会启用。
此外,切勿在stackoverflow中发布文本图片。在问题本身中发布实际文本。
答案 1 :(得分:0)
您无能为力。 x264经过高度优化。一些小建议(除了升级云服务):
提供更少的比特率层。你真的需要6吗?
确保x264正在使用CPU功能。请参考ffmpeg日志并查找using cpu capabilities
行。如果显示none
,则可能会以某种速度丢失您。重新编译x264和ffmpeg 不 --disable-asm
。
使用更快的x264 encoding preset。
确保您的ffmpeg和链接的x264都不旧。
Stream copy,如果输入的音频格式与您的输出兼容,则无需重新编码。
如果对音频进行编码,并且每个输出都相同,请使用tee muxer仅对其编码一次,然后将其传播到每个输出,而不必对每个输出不必要地编码相同的音频。
如果环境和您的ffmpeg版本支持hardware accelerated encoder,例如h264_nvenc
,请尝试。它可能速度更快,但是每比特的质量却不如x264。请注意,某些视频卡可能会人为地限制可以同时编码的流的数量(尽管有一些解决方法,如果我没记错的话)。