dxva简介

dxva简介http www nmm hd org doc index php title DXVA E5 92 8Cpsp amp variant zh cnDXVA 和 psp 目录 nbsp 隐藏 1 nbsp 硬件加速介绍篇 1 1 nbsp DXVA 的实现 1 2 nbsp 几种常见的支持 DXVA 的播放器或解码器 1 3 nbsp 支持 DXVA 的视频 2 nbsp 压制篇 x264 版

http://www.nmm-hd.org/doc/index.php?title=DXVA%E5%92%8Cpsp&variant=zh-cn

DXVA和psp

目录

 
[隐藏]

硬件加速介绍篇

DirectX视频加速简介:

  DirectX视频加速(DirectX Video Acceleration/DXVA)是微软在Windows以及Xbox 360平台上的一种API技术规范,它允许通过硬件加速视频解码。以管线方式,将CPU疲于处理的运算,诸如反余弦变换(iDCT)、运动补偿(Motion Compensation)和反交错(Deinterlacing)等,交给GPU完成。DXVA 2.0能让更多的运算实现硬件加速,包括视频捕捉和处理。DXVA在显卡(Video Card)的视频渲染模块中工作。在Windows 2000中,DXVA 1.0作为一个标准的API被引入,并且在Windows 98以及之后的Windows中依然可用。DXVA 1.0可在覆盖合成器(Overlay Mixer)或VMR 7/9运行。DXVA 2.0,仅在Windows Vista、Windows 7以及之后的微软操作系统中可用,与Media Foundation合并,并且在MF(Media Foundation)中使用的是增强型视频渲染器(Enhanced Video Renderer/EVR)。 视频解码器为硬件加速解码和渲染特别定义了一条特殊的解码管线以使用DXVA。CPU分析流媒体并转换成DXVA兼容的数据结构。DXVA定义了一组可硬件加速的运算。除此之外,还定义了一组可以让图形驱动实现运算加速的硬件驱动接口(Device Driver Interfaces/DDIs)。如果解码器需要用到任何DXVA已支持的运算,那么通过调用这些接口,它便可实现运算的硬件加速。如果图形驱动未能调用这些接口,它将会返回给解码器进行软解码。然后已解码的视频输出给视频渲染设备。

DXVA的实现

DXVA有三种视频加速级别

  • MC加速
  • MC加速+iDCT加速
  • MC加速+iDCT加速+VLD[1]加速

[1]VLD: Variable-Length Decoding,即可变长度解码

几种常见的支持DXVA的播放器或解码器

  • PowerDVD(CyberLink): 著名的商业播放器
  • Nvidia PureVideo: 从名字就可以看出,Nvidia公司出品的视频解码器
  • MPC-HC: 继承了历史悠久的开源播放器MPC的衣襟,并在其基础上增加了许多实用功能
  • PotPlayer: 原Kmplayer作者开发的另一款播放器
  • ffdshow: 著名的开源编解码器,功能强大,内置了许多实用滤镜,在最近的版本中加入了DXVA模块

  在目前,虽然有许多播放器支持DXVA解码,但综合考虑MPC-HC是最为实用并且方便实用的。首先MPC-HC是开源软件,其次MPC-HC是绿色软件,无需安装即可使用,再则MPC-HC内置的字幕滤镜比起其他播放器,对ASS/SSA的支持度最高。因此接下来着重介绍MPC-HC

  • nVidia 8(9)xxx系列,仅支持H.264
  • ATI Radeon HD系列,支持H.264和VC-1
  • Intel G45,仅支持H.264

在未来,MPC-HC可能会增加对运动补偿模式的支持,以兼容更多古老的显卡。但在目前,还不支持MPEG2和WMV的硬件加速。

由于DXVA的限制,所使用的渲染器必须遵守以下规则:

Windows XP用户,必须使用覆盖合成器(Overlay Mixer),VMR 7或VMR9作为视频渲染器(Video Renderer)

Windows Vista/7用户,必须使用增强型视频渲染器(Enhanced Video Renderer/EVR)或EVR custom renderer

MPC-HC视频解码器必须直接连接视频渲染器,因此中间无法插入DirectVobSub或ffdshow之类的滤镜。 在DXVA模式中,外挂字幕可以通过MPC-HC内置的字幕滤镜来显示,但是对渲染器的要求更苛刻

Windows XP用户,必须使用VMR9

Windows Vista/7用户,必须使用EVR custom renderer

支持DXVA的视频

可以通过软件来检测:DXVAChecker

压制篇(x264版)

接下来将介绍如何压制一个能使绝大多数硬件加速解码方案都支持的视频 使用的编码器是x264,它是一个效率非常高的开源编码器,基于H.264标准设计。

H.264的规格分类

首先H.264的视频按照标准被分为几个规格

Profile在x264中被分为baseline/main/high (Profile越高级,支持越多的高级特性,成品的压缩率越高)

x264相关参数:–profile 可强制指定Profile,一般情况下可不选,x264将会根据其他参数自行设定此项。如果设置此项,x264将会自动无视所设Profile无法支持的高级特性。

特性支持表:http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles

Level被分为1/1.1/1.2/1.3/2/2.1/2.2/3/3.1/3.2/4/4.1/4.2/5/5.1 (Level越高,对分辨率/参考帧/码率的限制越小)

x264相关参数:–level 可强制指定Level,一般情况下可不选,x264将会根据实际情况自行设定此项,但自动设定并不一定准确。如果设置此项,x264将会自动限制DBP[2]。

具体规格详见:http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels

[2]DPB,即Decoded Picture Buffer。

兼容性

目前,随着软硬件的发展,播放硬件加速播放高清视频对视频本身的限制越来越小,有些甚至已经宣称支持 High Profile @ Level 5.1。但这些毕竟只有少数软硬件支持,为考虑支持更普遍的硬件加速方案。推荐压制视频不超过 High Profile @ Level 4.1。此规格被绝大多数主流硬件加速播放方案支持。

相关参数

因为大多数方案已经支持 High Profile。因此我们只需着重考虑Level对硬件加速的兼容。 Level与DPB以及码率息息相关。而DPB与分辨率(resolution)、参考帧(ref)相关。

DPB的参考帧限制公式: ref=Min(Floor(MaxDpbMbs / (PicWidthInMbs * FrameHeightInMbs)), 16)

MaxDpbMbs:

Level 1 1b 1.1 1.2 1.3 2 2.1 2.2 3 3.1 3.2 4 4.1 4.2 5 5.1
MaxDpbMbs 396 396 900 2,376 2,376 2,376 4,752 8,100 8,100 18,000 20,480 32,768 32,768 34,816 110,400 184,320

PicWidthInMbs * FrameHeightInMbs(分辨率) 举个例子:宽为1920时,PicWidthInMbs=120;高为1080时,FrameHeightInMbs=68。其它分辨率按比例计算即可。

常见高清视频视频分辨率参考帧限制:

Level 4.1 1920x1080: 4 1440x1080: 5 1280x960 : 6 1280x720 : 9 960x720  : 12 

关于码率,BD原盘都是Level 4.1,那压出来的东西一般不会超过原盘吧。

如果你有特别需求需要限制的话,可用 –vbv-maxrate 和 –vbv-bufsize 。

地址:ffmpeg

使用范例(命令行):

>ffmpeg -i input.mkv -vcodec copy -acodec copy -vbsf h264_changesps=level=41 output.mkv 
  • http://en.wikipedia.org/wiki/DirectX_Video_Acceleration
  • http://forum.doom9.org/showthread.php?t=
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212009.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:03
下一篇 2026年3月18日 下午9:03


相关推荐

  • 网卡Offload

    网卡Offload在数据中心 随着单台服务器集成的计算能力的增长 服务器的带宽需求也同步提升 从 10M 到 100G 数据中心服务器的网络带宽提升速率远大于 CPU 的计算能力的增长速率 操作系统协议栈需要通过 CPU 来实现上层数据的封装和解封装 于是 CPU 的处理能力成为了网络传输能力的瓶颈 将由 CPU 处理的数据报文的分段 分片 校验等工作 交给网卡驱动来处理以降低 CPU 负担的相关技术 这里我们简称为网卡 offload 特性 是一种较好的提升服务器吞吐能力的方案 本文将介绍几种常见的网卡 offload 特性 以及使用该特性的注

    2026年3月20日
    2
  • V2EX注册

    V2EX注册最近注册了 V2EX 网站 觉得是个不错的论坛类的网站 很适合程序员 里面有很多有意思的帖子 所以就帮忙推广一下 也是因为推广有铜币拿 推广人和被推广人都有 200 铜币的样子 话不多说 上推广链接 https www v2ex com r wal0912 大家互利共赢 论坛里铜币是必不可少的 几乎所有的操作都要铜币 所以 能在开始就多一点 何乐而不为呢 期待你的加入

    2026年3月17日
    2
  • Wireshark抓包——IP协议分析

    Wireshark抓包——IP协议分析一 实验目的通过本次实验 掌握使用 Wireshark 抓取 TCP IP 协议数据包的技能 能够深入分析 IP 帧格式 通过抓包和分析数据包来理解 TCP IP 协议 进一步提高理论联系实践的能力 二 实验内容 1 本次实验重点 利用 Wireshark 抓 IP 包及 IP 包的分析 2 本次实验难点 分析抓到的 IP 包 3 本次实验环境 Windows7 Wireshark 4 本次实验

    2026年3月20日
    2
  • 最新GitHub新手使用教程(Windows Git从安装到使用)——详细图解[通俗易懂]

    最新GitHub新手使用教程(Windows Git从安装到使用)——详细图解[通俗易懂]说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!一.叙述1.Git简介Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。2.首先要去GitHub官网注册一个账号详细教程:https://b…

    2022年5月24日
    48
  • 静态ip与动态ip区别_怎么设置静态IP

    静态ip与动态ip区别_怎么设置静态IP话不多少看图这是动态IP这是静态IP看明白了吗

    2022年8月5日
    6
  • 使用云主机一键部署OpenClaw(Clawdbot/Moltbot)

    使用云主机一键部署OpenClaw(Clawdbot/Moltbot)

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号