6

我有一份潜在的工作需要我使用 FFMPEG 和 x264 进行一些视频编码。我将有一系列文件,我需要对其进行一次编码,然后我就可以关闭这些实例。由于我不太确定 x264 和 FFMPEG 的资源利用率,我应该获得什么样的实例?我想要么

高CPU超大型实例

7 GB 内存
20 个 EC2 计算单元(8 个虚拟内核,每个内核有 2.5 个 EC2 计算单元)
1690 GB 实例存储
64 位平台
I/O 性能:高
API 名称:c1.xlarge

或者,或者,

集群 GPU 四重超大型实例

22 GB 内存
33.5 EC2 计算单元(2 x Intel Xeon X5570,四核“Nehalem”架构)
2 x NVIDIA Tesla “Fermi” M2050 GPU
1690 GB 实例存储
64 位平台
I/O 性能:非常高(10千兆以太网)
API 名称:cg1.4xlarge

我应该使用什么?x264/FFMPEG 在更快/更多的 CPU 下性能是否更好,或者它真的对 GPU 造成更大的冲击?无论如何,集群 GPU 似乎是性能更高的实例。我应该更喜欢什么?

4

4 回答 4

3

Ffmpeg 最近添加了对 VAAPI 和 VDPAU 的支持,但这允许它仅使用 GPU 来解码 H.264 视频。对于编码,它使用 CPU。

于 2011-12-03T08:48:16.493 回答
1

目前,Amazon EC2 使用现代 NVIDIA GPU 提供(一些)GPU 加速实例,这意味着您可以在它们上利用 NVENC。

于 2019-04-04T02:09:31.757 回答
0

对 CPU/GPU 的简短回答是,这取决于您如何使用ffmpegH264 编码。

此外,您混淆了 H264 和 x264。H264 是视频编解码器标准,x264是 H264 标准的一种实现。x264 如此流行,因此有时它已成为 H264 的代名词和混淆。我指出的原因是 x264 是 H264 的基于软件的实现,这意味着它只会将 CPU 内核用于所有进程。当您使用 x264 进行视频编码时,您的用例中不会使用 GPU。

话虽这么说,也许你想问的是是否去

  • 基于硬件的 H264 实现(使用 GPU),或
  • 基于软件的 H264 实现(使用 CPU)

每种可用都有几种可用的实现。Ffmpeg 已经有一个不错的页面。如果您打算使用 Nvidia GPU 实例,则需要编译具有 NVENC支持的 FFmpeg 以获得硬件实现。使用 GPU/CPU 高效地完成所有转码过程本身就是一门艺术。


所以简而言之,x264 不会使用 GPU。如果要使用 GPU,则需要使用编码器的硬件实现。哪种实现更好在很大程度上取决于您的用例和您关心的内容(质量、成本、周转时间等)


我的背景/免责声明:我在Bitmovin担任高级工程师。我们解决了这个“集群/资源”分配工程问题,以及许多其他问题,以从给定的比特率中提取最佳的视频质量。最后,我们提供 API,您只需将它们插入您的工作流程即可。这里表达的观点是我自己的。

于 2022-03-03T10:10:21.293 回答
-3

使用 zencoder.com 之类的服务可能会更好,它们具有出色的 API,并且您从中获得的质量很可能比花几个小时摆弄 Ffmpeg 参数优化要好。

于 2012-09-24T19:36:21.533 回答