我偶然发现了Wikipedia文章,即Broadcom GPU具有对H.264 / AVC进行编码的硬件支持,而不仅仅是对解码进行解码。一个h264 / mp4视频文件。好的,它是具有专用GPU的通用CPU,所以这并不令人感到意外。 264 / AVC也许更快?如果台式机用户使用150美元的Ati / Nvidia图形卡将其ffmpeg优化为Core-i5xxx,那么该组合是否提供“硬件H.264编码支持”的功能?如果没有,那么特别采用的Raspberry-Pi-ffmpeg会更快吗?如果是,是否已经有速度比较?

评论

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

显然应该有人进行基准测试并显示一些结果。

@XTL你能做到吗? ;-)

这是非常好的结果。.您能在示例命令中添加音频转码吗?

#1 楼

目前,即使正式宣布Raspberry Pi确实支持h264硬件编码,似乎仍没有稳定的软件来使用该硬件编码h264视频。因此,我们无法进行基准测试来将性能与普通PC进行比较。现有的libav项目(请参阅他在12月2日09:23的答复)。

评论


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

–towi
2012年12月14日在12:37

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

–speedplane
2014年12月29日20:30在

#2 楼

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

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


MacBook Pro (2011年初)双核i7-2620M 2.7GHz(Sandy Bridge)-4GB RAM
RaspBerry Pi 2 Model B 900MHz四核ARM Cortex-A7 CPU-1GB RAM
示例文件:60年代电影Alatriste(2006)中的样本。原始文件为1080p,占用30MB。我将文件转码为720p。忽略了所有音轨,将精力集中在视频转码上。

结果:

在(1)上,使用Handbrake(x264编解码器),我用x264设置veryslow和平均比特率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总费用。视频质量明显下降,伪影清晰可见,细节容易观察到。仍请参见下文。 omxh264enc实际上使用了GPU。另外,在(2)中使用x264enc时,时间超过15分钟。

结论:

对于相当相似的文件大小,硬件加速的RaspBerry Pi 2 GPU编码器所花费的时间几乎是双核i7-2620M上软件x264编码器所花费的时间的两倍。由于在此测试期间RaspBerry Pi上大量未使用的CPU,因此添加音频转码和多路复用可能会弥补这一差距。视频质量明显优于软件编码的文件。与x264编码器相比,omxh264enc(由gst-inspect-1.0公开)的可用配置选项受到限制,但进一步的实验可以提供更好的质量。

附件:

从Raspbian信息库安装GStreamer和OpenMax:

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


在MacBook上使用HandBrake(x264)对720p视频进行QuickTime X静止Pro(完整的详细信息,请打开或下载图像):



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



更新: method=lanczosvideoscale。编码过程在时间上翻了一番,从大约7分钟跳到了14分钟(37秒)。结果的质量几乎等于没有方法的质量(默认双线性)。确实,缺陷主要来自硬件的编码过程。它们显然是压缩伪像。

评论


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

– ecc29
2015年4月16日在16:17



gst-launch-1.0 -e videotestsrc pattern = zone-plate kx2 = 80 ky2 = 45 num-buffers = 1! video / x-raw,宽= 1920,高= 1080!视频转换! videoscale method = lanczos! video / x-raw,宽度= 1280,高度= 720! avimux! filesink位置= lanczos_1280.avi

– ecc29
2015年4月16日在16:17



我已经用lanczos缩放方法的结果更新了帖子。

– M. Rubio-Roy
15年4月18日在11:38

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

–akostadinov
19年1月19日在18:54

#3 楼

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

但是。现代图形卡具有在GPU上运行整个编码的功能,这是GPU真正擅长的功能。 RPi可能不会比中等规格的显卡快。但是我认为这会比您想象的要快得多。甚至可能接近75%的速度。

我找不到任何地方可用的比较。