H.264 Video Codec速度和质量

从Kepler开始的所有 NVIDIA GPUs 都支持完全加速的硬件视频编码; GPUs 从费米开始支持完全加速的硬件视频解码。最近发布的图灵硬件提供了张量核心和更好的机器学习性能,但新的 GPU 还加入了新的多媒体功能,如改进的 NVENC 单元,以在视频编解码器中提供更好的压缩和图像质量。

仔细地看一看图灵设计的新的 NVENC 单元的性能和质量。

NVENC 性能测试设置

H.264 出现于 15 年前,已经成为一种无处不在的视频编码标准。它已经成为业界最重要和最广泛的编解码器。这些测试展示了 Tesla T4 与著名的开源编码器 libx264 在两种情况下的性能:

  • 高质量模式,代表最常见的编码方案与 VBR 控制和 B 帧启用。
  • 低延迟快速模式,适用于对延迟敏感的应用程序,如远程游戏或视频会议。

为此,测试计算机的配置如表 1 所示:

Testing Configuration

Component

Tesla T4 NVENC

libx264

CPU

Dual Intel Xeon E5-2660v3 @ 2.6 GHz

Dual Intel Xeon E5-2660v3 @ 2.6 GHz

GPU

TU104 (Tesla T4)

N/A

RAM

128 GB

128 GB

FFMPEG

4.0.2

4.0.2

Driver

415.15

N/A

这些性能测试将编码参数设置为表 2 中所示的参数:

Encoding Parameters

Preset

NVENC

libx264

High Quality

-c:v h264_nvenc -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high -bf 3 -b_ref_mode 2 -temporal-aq 1 -rc-lookahead 20 -vsync 0

-c:v libx264 -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high -tune psnr -vsync 0 -threads 4

Low Latency Fast

-c:v h264_nvenc -preset llhp -rc cbr_ld_hq -b:v BITRATE -bufsize BITRATE/FRATE -profile:v high -g 999999 -vsync 0

-c:v libx264 -preset fast -b:v BITRATE -bufsize BITRATE/FRATE -profile:v high -g 999999 -x264opts no-sliced-threads:nal-hrd=cbr -tune zerolatency -threads 4 -vsync 0

使用了各种输入视频进行 RD 估计,如 basketball _ drive 、 bq _ terrace 、仙人掌、 crowd _ run 、 ducks _ take _ off 、 jokey 、和服,以及更多分辨率为 1280 × 720 、 1920 × 1080 和 3840 × 2160 的视频。

效果和质量

平衡序列

图 1 到图 4 显示, Tesla T4 在高质量模式下为 libx264 提供相同或稍好的视觉质量,如 Kimono、 BQ Terrace 和 Park Scene 。

图 1. 720p 分辨率和服序列的 PSNR-RD 曲线。

图 2 . BQ 阶地序列 1080p 分辨率下的 PSNR-RD 曲线。

图 3 .公园场景序列在 720p 分辨率下的 PSNR-RD 曲线。

图 4 .公园场景序列的 PSNR-RD 曲线,分辨率为 1080p 。

与 libx264 相比, T4 显示了更好的预测和过滤,如图 5 和 6 所示。

图 5 .由 libx264 编码的 bq _ terrace 序列的帧。

图 6 . T4-Nvenc 编码的 bq_terrace 序列的帧。

高运动序列

红皮艇和仙人掌序列分别包含显著的混沌运动和圆周运动。与 libx264 相比, NVENC 在这些包含复杂内部预测的场景中显示出明显的优势,如图 7 和 8 所示。

图 7.红皮艇序列在 1080p 分辨率下的 PSNR-RD 曲线。

图 8 .仙人掌序列 1080p 分辨率的 PSNR-RD 曲线。

如图 9 和图 10 所示, Tesla T4 NVENC 在低延迟模式下的性能很容易超过 libx264 。请注意 Tesla T4 如何在高分辨率下更有效,在相同的比特率下提供 1db 更好的视觉质量。

图 9 . 1080p 分辨率和低延迟模式下仙人掌序列的 PSNR-RD 曲线。

图 10 .鸭起飞序列在 2160p 分辨率下的 PSNR-RD 曲线。

如图 11 和图 12 所示,视觉质量的差异很容易被肉眼看到:

图 11 .由 libx264 编码的 ducks_take_off 序列的第一帧。

图 12 .由 T4 NVENC 编码的鸭子取下序列的第一帧。

图灵 GPUs 配备了功能强大的 NVENC 视频编码单元,与 libx264 等复杂的软件编码器相比,它提供了更高的视频压缩效率,因为它结合了更高的性能和更低的能耗。理想的代码转换解决方案需要具有成本效益(美元/流)和节能(瓦/流)。看看在多个测试序列中平均的性能和功耗结果,如图 13 和 14 所示。

图 13 .在高质量模式下以每秒 30 帧同时编码的流数。

图 14 .在低延迟模式下以每秒 30 帧同时编码的流数。

T4 以高质量模式同时编码 22 个 720p 流。 GPU 还可以平均处理 10 个 1080p 的流和 2 到 3 个超高清( 2160p )分辨率的流。这相当于在相同的视觉质量级别上几乎是 libx264 的两倍。

在低延迟模式下运行显示出 T4 更大的优势。它可以编码 37 个 720p 分辨率的流, 17-18 个 1080p , 4-5 个超高清,性能比 libx264 高 2-2 . 7 倍,具有更高的视觉质量。可以在图 15 和图 16 中看到每个流的瓦特数。

图 15.  高质量模式下平均每流功耗瓦特

图 16.  低延迟模式下平均每流功耗瓦特

Tesla 还显示出很高的功率效率,在高质量模式下优于 libx264 2-4x ,在低延迟模式下高达 5 倍,同时保持低负载CPU。

结论

与前几代相比, NVIDIA 的 Tesla T4 的编码能力有了很大的提高。与 libx264 这样的软件编码器相比,它在高质量模式下显示出相同或更好的视觉质量,而在低延迟模式下则优于它们。这相当于在功耗降低 2-5 倍时性能提高了一倍。

H.264 Video Codec速度和质量的更多相关文章

  1. 【HEVC帧间预测论文】P1.2 An Efficient Inter Mode Decision Approach for H.264 Video Codin

    参考:An Efficient Inter Mode Decision Approach for H.264 Video Coding <HEVC标准介绍.HEVC帧间预测论文笔记>系列博 ...

  2. How to use VideoToolbox to decompress H.264 video stream

    来源:http://stackoverflow.com/questions/29525000/how-to-use-videotoolbox-to-decompress-h-264-video-str ...

  3. RFC3984: RTP Payload Format for H.264 Video(中文版)

    转载地址:https://blog.csdn.net/h514434485/article/details/51010950 官方文档,中文版本地址:http://www.rosoo.net/File ...

  4. H.264视频的RTP荷载格式

    Status of This Memo This document specifies an Internet standards track protocol for the   Internet ...

  5. World’s Smallest h.264 Encoder

    转载 http://www.cardinalpeak.com/blog/worlds-smallest-h-264-encoder/ View from the Peak World’s Smalle ...

  6. H.264开源解码器评测

    转自:http://wmnmtm.blog.163.com/blog/static/38245714201142883032575/ 要播放HDTV,就首先要正确地解开封装,然后进行视频音频解码.所以 ...

  7. 【图像处理】H.264开源解码器评测

    转自:http://wmnmtm.blog.163.com/blog/static/38245714201142883032575/ 要播放HDTV,就首先要正确地解开封装,然后进行视频音频解码.所以 ...

  8. (转载)H.264码流的RTP封包说明

    H.264的NALU,RTP封包说明(转自牛人) 2010-06-30 16:28 H.264 RTP payload 格式 H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) ...

  9. iOS硬解H.264:-VideoToolboxDemo源码分析[草稿]

    来源:http://www.cnblogs.com/michaellfx/p/understanding_-VideoToolboxDemo.html iOS硬解H.264:-VideoToolbox ...

随机推荐

  1. 洛谷P1424 小鱼的航程(改进版)

    题目背景 原来的题目太简单,现改进让小鱼周末也休息,请已经做过重做该题. 题目描述 有一只小鱼,它上午游泳150公里,下午游泳100公里,晚上和周末都休息(实行双休日),假设从周x(1<=x&l ...

  2. Windows PE第九章 线程局部存储

    线程局部存储(TLS) 这个东西并不陌生了,之前写过了一个关于这个的应用,利用静态TLS姿势实现代码段静态加密免杀或者所谓的加壳思路.地址在这:http://blog.csdn.net/u013761 ...

  3. Redis笔记整理

    Redis 遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库.数据结构服务器. 特点:     1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时 ...

  4. RxJava线程控制

    RxJava中的线程转换主要通过下面两个方法: 1.subscribeOn 2.observeOn 一.subscribeOn 1.调用一次subscribeOn时: Observable obser ...

  5. 如何在spring boot中从控制器返回一个html页面?

    项目截图 解决方法 我之前用的@RestController注解,而@RestController这个控制器返回数据而不是视图,改成@Controller 就好了(以下是修改后的) @Controll ...

  6. Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may ne

    更多精彩关注微信公众号 错误原因 在pom中引入了mybatis-spring-boot-starter ,Spring boot默认会加载org.springframework.boot.autoc ...

  7. Java中如何保证线程顺序执行

    只要了解过多线程,我们就知道线程开始的顺序跟执行的顺序是不一样的.如果只是创建三个线程然后执行,最后的执行顺序是不可预期的.这是因为在创建完线程之后,线程执行的开始时间取决于CPU何时分配时间片,线程 ...

  8. python函数默认值只初始化一次

    当在函数中定义默认值时,值初始化只会进行一次,就是执行到def methodname时执行.看下面代码: from datetime import datetime def test(t=dateti ...

  9. python模块导入原理

    转自:http://blog.csdn.net/u012422440/article/details/41791433 今日在自学Python,借此机会,正好重新开始写博文,既可以巩固python的知 ...

  10. Django(21)migrate报错的解决方案

    前言 在讲解如何解决migrate报错原因前,我们先要了解migrate做了什么事情,migrate:将新生成的迁移脚本.映射到数据库中.创建新的表或者修改表的结构. 问题1:migrate怎么判断哪 ...