ffmpeg色彩空间转换速度

时间:2017-05-05 05:07:31

标签: ffmpeg gpu color-space

我在一台相当快的,支持GPU的机器上运行2个ffmpeg命令(AWS g2.2xlarge实例):

ffmpeg -i ./in.mp4 -s 1280x720 -r 30 -an -f rawvideo -pix_fmt yuv420p - | cat - >/dev/null

时给出524fps
ffmpeg -i ./in.mp4 -s 1280x720 -r 30 -an -f rawvideo -pix_fmt argb - | cat - >/dev/null

只有101 ......它不应该,在现代CPU上每帧不能多达8ms,更不用说GPU了!

我做错了什么,我怎样才能提高速度呢?

PS:现在这真是荒谬!

ffmpeg -i ./in.mp4 -s 1280x720 -r 30 -an -f rawvideo -pix_fmt yuv420p - | ffmpeg -s 1280x720 -r 30 -an -f rawvideo -pix_fmt yuv420p -i - -s 1280x720 -r 30 -an -f rawvideo -pix_fmt argb - | cat - >/dev/null

制作275 fps!这是迄今为止不完美,但我可以忍受的东西。

为什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

很容易看出GPU用于输出编码 - 没有CPU能够以1080的播放速度将mp4编码为1280x720x30fps

你确定吗?在中档Haswell i5上,我的CPU编码大约为该分辨率的4-5倍。由于您还没有指定编解码器,因此ffm​​peg默认为libx264用于MP4输出,不会在GPU上编码。

检查ARGB管道的输出。为了保存为RGB,必须将libx264显式调用为-c:v libx264rgb。除H.264外,不存储alpha。因此对于MP4格式,您可能必须使用最新版本的ffmpeg编码为VP9。输出将是具有alpha平面的YUV像素格式。如果MOV有效,PNG和QTRLE是您的其他选择。

我不知道用于ffmpeg的VP9 / PNG / QTRLE的硬件加速编码器。