我对硬件H264编码有什么期望?


29

我偶然发现在维基百科文章认为,博通GPU拥有支持硬件编码 H.264 / AVC,不仅 -coding。

我还找到了一篇文章,其中有人举了一个示例ffmpeg来生成h264 / mp4视频文件。好吧,它是一个通用CPU与一个专门的GPU,所以这不是真正惊喜。

但是,与具有普通图形卡的标准台式PC相比,Raspberry Pi是否可能以更快的速度编码H.264 / AVC ?如果台式机用户使用150美元的Ati / Nvidia图形卡ffmpeg将其优化为Core-i5xxx,那么该组合是否提供“硬件H.264编码支持”的功能?如果没有,那么特别采用的Raspberry-Pi-ffmpeg会更快吗?如果是,是否已经有速度比较?


我不应该认为Raspberry Pi会比台式PC快。
Jivings

5
显然应该有人做一个基准并显示一些结果。
XTL 2012年

@XTL灿,你这样做吗?;-)
towi

这是非常好的结果。.能否将音频转码添加到示例命令?

Answers:


5

目前,即使正式宣布 Raspberry Pi确实支持h264硬件编码,似乎仍没有稳定的软件来使用该硬件对h264视频进行编码。因此,我们无法进行基准测试以将性能与常规PC进行比较

我不知道有人在从事这个工作,但来自 libav对于将这样的模块集成到现有项目中似乎感到悲观libav(请参阅12月2日09:23的回复)。

图书馆或软件允许的情况下,我很乐意做一个基准测试。


我不知道从哪里开始,但我可能愿意尝试一下。我一直在寻找寻找libavcodec src的原因,或者确切地说是x264。
towi 2012年

2
GStreamer库能够插入Broadcom芯片的OpenMax API,并且似乎能够执行硬件编码:gstreamer.freedesktop.org/releases/gst-omx/1.0.0.html
speedplane 2014年

25

截至2015年4月,Raspbian中包含的GStreamer 1.2通过omxh264enc支持OpenMAX硬件加速的H.264编码。

我已经做了一些基准测试比较:

  1. MacBook Pro(2011年初)双核i7-2620M 2.7GHz(Sandy Bridge)-4GB RAM
  2. RaspBerry Pi 2 Model B 900MHz四核ARM Cortex-A7 CPU-1GB RAM

样本文件:电影Alatriste(2006)中的60s样本。原始文件为1080p,占用30MB。我将文件转码为720p。忽略了所有音轨,将研究重点放在视频转码上。

结果:

在(1)上,我使用Handbrake(x264编解码器)用非常慢的x264设置和平均比特率1145kbps(1次通过)进行了转码,结果产生了7.7MB的文件。Profile High,4.0级。使用4个线程,编码耗时3分36秒。累计的手刹CPU费用约为380%。视频质量非常好。可以观察到很少的伪像,并且不容易观察到细节丢失。仍见下文。

在(2)上,我使用GStreamer和omxh264enc(硬件加速)以target-bitrate = 1145000(1145kbps),control-rate = 1(可变比特率控制方法)进行了转码,结果生成了6.9MB的文件。使用1个线程进行编码需要7分4秒。gst-launch-1.0〜100%的累计CPU总费用。视频质量显着下降,伪影清晰可见,细节易于观察到。仍见下文。

gst-launch-1.0 -v filesrc location=sample-1080p.mp4 ! decodebin ! videoconvert ! \
videoscale ! video/x-raw,width=1280,height=688 ! omxh264enc control-rate=1 \
target-bitrate=1145000 ! h264parse ! mp4mux ! \
filesink location=sample-720p-OMX-1145kbps.mp4

当使用带有x264enc的GStreamer作为编码器时,gst-launch-1.0的CPU累计总电量约为380%,这支持omxh264enc实际上使用GPU的事实。另外,在(2)中使用x264enc时,时间超过15分钟。

结论:

对于相当相似的文件大小,硬件加速的RaspBerry Pi 2 GPU编码器所花费的时间几乎是双核i7-2620M上软件x264编码器所花费的时间的两倍。由于在此测试期间RaspBerry Pi上大量未使用的CPU,因此添加音频转码和多路复用可能会弥补这一差距。视频质量明显优于软件编码的文件。请参见下面的剧照。

与x264编码器相比,omxh264enc(由gst-inspect-1.0公开)的可用配置选项受到限制,但进一步的实验可以提供更好的质量。

附件:

从Raspbian存储库安装GStreamer和OpenMax:

$ apt-get install libgstreamer1.0-0 libgstreamer1.0-0-dbg libgstreamer1.0-dev liborc-0.4-0 liborc-0.4-0-dbg liborc-0.4-dev liborc-0.4-doc gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-alsa gstreamer1.0-doc gstreamer1.0-omx gstreamer1.0-plugins-bad gstreamer1.0-plugins-bad-dbg gstreamer1.0-plugins-bad-doc gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-base-dbg gstreamer1.0-plugins-base-doc gstreamer1.0-plugins-good gstreamer1.0-plugins-good-dbg gstreamer1.0-plugins-good-doc gstreamer1.0-plugins-ugly gstreamer1.0-plugins-ugly-dbg gstreamer1.0-plugins-ugly-doc gstreamer1.0-pulseaudio gstreamer1.0-tools gstreamer1.0-x libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-dev
$ gst-launch-1.0 --version
gst-launch-1.0 version 1.2.0
GStreamer 1.2.0

在MacBook Pro上使用HandBrake(x264)对QuickTime X静止的720p视频进行了转码(有关完整细节,请打开或下载图像):

在MacBook Pro上使用HandBrake(x264)对QuickTime X静止的720p视频进行了转码

在Raspberry Pi 2上使用GStreamer(通过OpenMAX进行硬件编码)转码的720p视频的QuickTime X静止图像(有关详细信息,请打开或下载图像):

在Raspberry Pi 2上使用GStreamer(通过OpenMAX进行硬件编码)转码的720p视频的QuickTime X静止图像

更新:

根据ecc29建议使用lanczos缩放方法的建议,我对添加method=lanczos了一个测试videoscale。编码过程在时间上翻了一番,从大约7分钟跳到了37分钟的14分钟。结果的质量几乎等于没有方法的质量(默认双线性)。确实,缺陷主要来自硬件的编码过程。它们显然是压缩伪像。


对于GStreamer转码后的图像质量,应考虑另一个因素。在gstreamer将其发送到omxh264enc之前,视频缩放的不同参数将对图像产生影响。Videoscale使用双线性作为默认选项。Lanczos更好,但速度太慢。gstreamer的开发人员正在研究视频缩放的更多选项,但它们尚未处于稳定版本中。一些生成的模式可能有助于比较不同的选项:
ecc29

gst-launch-1.0 -e videotestsrc pattern=zone-plate kx2=80 ky2=45 num-buffers=1 ! video/x-raw, width=1920, height=1080 ! videoconvert ! videoscale method=lanczos ! video/x-raw, width=1280, height=720 ! avimux ! filesink location=lanczos_1280.avi
ecc29 2015年

我已经用lanczos缩放方法的结果更新了帖子。
M. Rubio-Roy

考虑购买3 b +。三年半后有更新吗?现在可以进行实时编码吗?
akostadinov

1

RPi中的GPU非常强大。我读过关于编码的信息,您可以编码1080p @ 30fps。也可以对多个流进行编码。还相信您可以使用RPi即时编码视频。

但。现代图形卡具有在GPU上运行整个编码的能力,这是GPU真正擅长的。

如果我必须评估个人意见。RPi可能不会比中等规格的显卡快。但是我认为这会比您想象的要快得多。甚至速度接近75%。

我在任何地方都找不到比较。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.