【发布时间】:2013-08-16 03:38:35
【问题描述】:
我的工作需要我在几天内编码几千部电影。每部电影都需要以 3 种不同的格式进行编码。我使用 ffmpeg 将这些格式与输入源的单次读取并行输出,如下所述:http://ffmpeg.org/trac/ffmpeg/wiki/Creating%20multiple%20outputs
此外,我正在使用 GNU Parallel 对多个视频文件进行并行编码。我们有四个不同配置(48、32、16 和 16 核)的刀片服务器并行编码视频。理想情况下,我们应该能够并行编码 112 个视频。
但是,似乎在内核较少的机器上编码完成得更快。我在大约 4 个小时内在 16 个核心服务器上完成了 16 个编码,而在 48 个核心系统上完成 48 个编码需要将近 10 个小时。瓶颈可能是什么?一个典型的encode命令如下:
ffmpeg -i sample.mpg -y -vcodec libx264 -vprofile baseline -level 30 -acodec libfdk_aac -ab 128k -ac 2 -b:v 500K -threads 1 encoded/sample_enc.mp4
高度赞赏任何指针。谢谢!
【问题讨论】:
-
存储可能是瓶颈。它看起来像是您正在使用的某种共享存储。是 NFS 共享吗?查看刀片上的 CPU 负载结构,以检查进程是否正在等待 IO 或忙于等待其他操作系统资源。
-
确实,我猜存储是一个瓶颈。不幸的是,我没有时间从收到的便携式驱动器中复制内容。复制 TB 的数据本身需要一段时间。我只是将它们附加到服务器并开始编码。现在,我正在尝试 alexbuisson 的建议。几个小时后会更新。
标签: parallel-processing ffmpeg gnu-parallel