有啥方法可以加快 ffmpeg 处理时间
Posted
技术标签:
【中文标题】有啥方法可以加快 ffmpeg 处理时间【英文标题】:Is there any way that I can speed up the ffmpeg processing time有什么方法可以加快 ffmpeg 处理时间 【发布时间】:2020-09-06 06:51:33 【问题描述】:我在处理过程中遇到问题。我在 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
【问题讨论】:
欢迎来到 Stack Overflow!您的代码在图像中,这意味着将来与您有相同问题的人无法搜索它。请阅读this guide on producing code for a good quality question,然后在您的问题中包含并标记您的代码。干杯! 【参考方案1】:你无能为力。 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 那样好的每比特质量。请注意,某些视频卡可能会人为强制限制可以同时编码的流数量(尽管有一些解决方法,如果我没记错的话)。
【讨论】:
【参考方案2】:不,如果不大大降低质量或分辨率,就无法加速 ffmpeg。如果有更快的方法,它会默认启用。
另外,切勿在 *** 中发布文本图片。在问题本身中发布实际文本。
【讨论】:
好的,关于速度,它受准确性,以及托管的可能性及其功能大小的影响,但是效果是否自然包括所有视频大小,意思是一兆大小的视频也很慢,并且在质量过程中包含特殊代码?以上是关于有啥方法可以加快 ffmpeg 处理时间的主要内容,如果未能解决你的问题,请参考以下文章
Camera.release() 在 Nexus 10 中释放相机需要 30 秒。有啥方法可以加快这个过程吗?
android中有啥方法可以使用FFMPEG库过滤掉噪声(低通滤波器)。有人能帮我吗