ffmpeg -hwaccel dxva2 -threads 1 -i INPUT -f ..._ffmpeg vdpau">
赞
踩
https://blog.csdn.net/lg1259156776/article/details/73274222
要启用DXVA2,请使用 --enable-dxva2 ffmpeg配置开关。
要测试解码,请使用以下命令:
<span style="color:#333333">ffmpeg -hwaccel dxva2 -threads 1 -i INPUT -f null - -benchmark</span>
****************vlc 启用 dxva2.0硬件解码后,CPU使用率明显降低*************
http://download.csdn.NET/download/xin_hua_3/7324839
用GPU-Z工具看GPU负载确实没有负载
===============================
FFmpeg提供了硬件加速的子系统。
硬件加速允许使用特定设备(通常是图形卡或其他特定设备)来执行多媒体处理。这允许使用专用硬件来执行要求苛刻的计算,同时使CPU免于这种计算。通常,硬件加速使特定硬件设备(通常是GPU)能够执行与解码和编码视频流或过滤视频相关的操作。
当使用FFmpeg工具时,通过-hwaccel 选项启用HW辅助解码 ,该选项启用特定解码器。每个解码器可能具有特定限制(例如,H.264解码器可能仅支持基线简档)。通过使用特定编码器(例如nvenc_h264)启用HW辅助编码 。仅在几个过滤器中支持过滤硬件辅助处理,在这种情况下,您可以通过过滤器选项启用OpenCL代码。
有几种硬件加速标准API,其中一些在某种程度上由FFmpeg支持。
Linux英特尔 | Linux NVIDIA | Windows英特尔 | Windows NVIDIA | OS X. | Android的 | iOS版 | 覆盆子皮 | |
---|---|---|---|---|---|---|---|---|
CUDA | ñ | 和 | ñ | 和 | 和 | ñ | ñ | ñ |
Direct3D 11 | ñ | ñ | 和 | 和 | ñ | ñ | ñ | ñ |
DXVA2 | ñ | ñ | 和 | 和 | ñ | ñ | ñ | ñ |
MediaCodec | ñ | ñ | ñ | ñ | ñ | 和 | ñ | ñ |
MMAL | ñ | ñ | ñ | ñ | ñ | ñ | ñ | 和 |
NVENC | ñ | 和 | ñ | 和 | ñ | ñ | ñ | ñ |
OpenCL的 | 和 | 和 | 和 | 和 | 和 | ñ | ñ | ñ |
快速同步 | 和 | ñ | 和 | ñ | ñ | ñ | ñ | ñ |
VA-API | 和 | 和* | ñ | ñ | ñ | ñ | ñ | ñ |
VDA† | ñ | ñ | ñ | ñ | 和 | ñ | ñ | ñ |
VDPAU | ñ | 和 | ñ | ñ | ñ | ñ | ñ | ñ |
VideoToolbox | ñ | ñ | ñ | ñ | 和 | ñ | 和 | ñ |
XvMC | 和 | 和 | ñ | ñ | ñ | ñ | ñ | ñ |
*半维护。
†上游弃用。
AVHWAccel | 解码器 | 编码器 | CLI | 过滤 | AVHWFramesContext | |
---|---|---|---|---|---|---|
CUDA | ñ | ñ | ñ | N / A | 和* | 和 |
Direct3D 11 | 和 | ñ | N / A | ñ | ñ | ñ |
DXVA2 | 和 | ñ | N / A | 和 | ñ | ñ |
MediaCodec | ñ | 和 | ñ | N / A | N / A | ñ |
MMAL | 和 | 和 | N / A | ñ | N / A | ñ |
NVENC | N / A | N / A | 和 | N / A | N / A | ñ |
OpenCL的 | N / A | N / A | N / A | N / A | 和 | ñ |
快速同步 | 和 | 和 | 和 | 和 | ñ | ñ |
VA-API | 和 | ñ | 和 | 和 | 和 | 和 |
VDA | 和 | 和 | N / A | 和 | N / A | ñ |
VDPAU | 和 | ñ† | N / A | 和 | ñ | 和 |
VideoToolbox | 和 | ñ | 和 | 和 | ñ | ñ |
XvMC | 和 | ñ† | N / A | ñ | N / A | ñ |
N / A API不直接支持此功能,或者当前不可实现此功能。
* 工作正在进行中。如果指示“Y”,则基础设施已到位,但尚未实施过滤器。
†实际上是,但已被弃用,不应使用。
视频解码和演示API为Unix。由NVidia为UNIX / Linux 系统开发。要启用此功能,您通常需要分发中的libvdpau开发包和兼容的图形卡。
注意,VDPAU不能用于解码内存中的帧,压缩帧由libavcodec发送到VDPAU支持的GPU设备,然后可以使用VDPAU API访问解码图像。这不是由FFmpeg的自动完成的,但必须在应用程序级别(检查例如做 ffmpeg_vdpau.c 通过使用文件 ffmpeg.c)。此外,请注意,使用此API无法将解码后的帧移回RAM,例如,如果您需要再次对解码帧进行编码(例如,在服务器上进行转码时)。
目前通过libavcodec中的VDPAU支持几个解码器,特别是MPEG视频,VC-1,H.264,MPEG4。
XVideo运动补偿。这是X Window系统的X视频扩展(Xv)的扩展(因此仅在UNIX / Linux上可用)。
官方规范,请访问: http://www.xfree86.org/~mvojkovi/XvMC_API.txt
视频加速API(VA API)是一种非专有且免版税的开源软件库(“libVA”)和API规范,最初由英特尔开发,但可与其他设备结合使用。只有Linux: https://en.wikipedia.org/wiki/Video_Acceleration_API
Direct-X视频加速API,由Microsoft开发(支持Windows和XBox360)。
链接到MSDN文档: http://msdn.microsoft.com/en-us/library/windows/desktop/cc307941%28v=vs.85%29.aspx
目前支持几种解码器,特别是H.264,MPEG2,VC1和WMV3。
DXVA2硬件加速仅适用于Windows。为了构建支持DXVA2的FFmpeg,您需要安装dxva2api.h头文件。对于MinGW,可以通过下载VLC维护的标头来完成:
http://download.videolan.org/pub/contrib/dxva2api.h
并将其安装在include补丁中(例如在 / usr / include /中)。
对于MinGW64,默认提供dxva2api.h。安装mingw-w64的一种方法是通过 pacman 存储库,可以使用以下两个命令之一安装,具体取决于体系结构:
- <span style="color:#333333">pacman -S mingw-w64-i686-gcc
- pacman -S mingw-w64-x86_64-gcc
- </span>
要启用DXVA2,请使用 --enable-dxva2 ffmpeg配置开关。
要测试解码,请使用以下命令:
- <span style="color:#333333">ffmpeg -hwaccel dxva2 -threads 1 -i INPUT -f null - -benchmark
- </span>
视频解码API,仅在MAC上受支持。H.264解码在FFmpeg / libavcodec中可用。
开发者文档: https://developer.apple.com/library/mac/technotes/tn2267/_index.html
NVENC是由NVIDIA开发的API,可以使用NVIDIA GPU卡执行H.264和HEVC编码。FFmpeg通过nvenc_h264 和 nvenc_hevc 编码器支持NVENC 。要在FFmpeg中启用它,您需要:
访问 NVIDIA视频编解码器SDK 下载SDK,并了解更多关于所支持的GPU和支持的驱动程序。
用法示例:
- <span style="color:#333333">ffmpeg -i input -c:v nvenc_h264 -profile high444p -pixel_format yuv444p -preset default output.mp4
- </span>
您可以使用ffmpeg -h encoder = nvenc_h264 或 ffmpeg -h encoder = nvenc_hevc查看可用的预设,其他选项和编码器信息 。
注意: 如果您 发现无NVENC功能设备 错误,请确保您使用支持的像素格式进行编码。请参阅上面显示的编码器信息。
英特尔QSV(快速同步视频)是一种允许使用最近的英特尔CPU和最新英特尔CPU支持的最新英特尔CPU和集成GPU进行解码和编码的技术。请注意,(CPU)GPU需要与QSV和OpenCL兼容。某些(较旧的)支持QSV的GPU与OpenCL不兼容。请参阅: http://www.intel.com/content/www/us/en/architecture-and-technology/quick-sync-video/quick-sync-video-general.htmlhttps://software.intel .COM / EN-US /用品/ Intel的SDK换的OpenCL应用-2013释放,笔记
要启用QSV支持,需要英特尔®媒体SDK集成在英特尔媒体服务器演播室: https://software.intel.com/en-us/intel-media-server-studio
英特尔®媒体服务器工作室适用于Linux和Windows,包含libva和libdrm库,libmfx调度程序库和英特尔驱动程序。libmfx是根据系统功能选择编解码器的库,如果硬件加速编解码器不可用,则回退到软件实现。
FFmpeg QSV支持依赖于libmfx,但英特尔提供的库没有附带 pkg-config 文件和正确的安装程序。因此安装库最简单的就是在这里使用由lu_zero打包libmfx版本: https://github.com/lu-zero/mfx_dispatch
Windows上的要求:安装Intel Media Server Studio中包含的Intel Media SDK,它带有图形安装程序和MinGW编译环境(例如由MSYS2提供,带有相应的Mingw-w64软件包)。然后,您需要构建libmfx并将其安装在pkg-config识别的路径中。例如,如果在/ usr / local中安装, 则需要更新$ PKG_CONFIG_PATH 环境变量,使其指向 / usr / local / lib / pkgconfig。
Linux上的要求:您需要依赖Intel Media Server Studio for Linux,或者使用最近支持的系统,包括libva和libdrm库,libva Intel驱动程序以及lu_zero打包的libmfx库。注意:如果您使用Intel Media Server Studio通用安装脚本,安装脚本可能会覆盖您的系统库并破坏系统。
请检查以下网站获取有关的各种Linux平台的英特尔图形堆栈的最新信息: https://01.org/linuxgraphics
要在FFmpeg构建中启用QSV支持,请使用--enable-libmfx进行配置 。
FFmpeg通过_qsv 后缀标识的几个编解码器集成了对解码和编码的支持 。特别是,它目前支持MPEG2视频,VC1(仅解码),H.264和H.265。
例如,要使用h264_qsv编码为H.264 ,您可以使用以下命令:
- <span style="color:#333333">ffmpeg -i INPUT -c:v h264_qsv -preset:v fast out.qsv.mp4
- </span>
官方网站: https://www.khronos.org/opencl/
目前仅用于过滤(去抖动和非锐化过滤器)。要使用OpenCL代码,您需要使用--enable-opencl启用构建 。libavutil / opencl.h中提供了使用FFmpeg中的OpenCL API的API。目前尚未支持解码/编码。
配置--list-decoders | grep h264
h264_crystalhd
h264_mmal
h264_qsv ===》这个对应vaapi?
h264_vda
h264_vdpau ====》VDPAU
FFmpeg 3.1“Laplace”,一个新的主要版本,现在可用!一些亮点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。