有啥方法可以加快 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库过滤掉噪声(低通滤波器)。有人能帮我吗

QTcpSocket 仅每 ~0.5 秒读取一次数据,即使数据包非常小,有啥方法可以加快速度吗?

我正在使用低端笔记本电脑来学习使用 web 和 android 设备的颤振。有啥方法可以加快构建过程吗?