首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏流媒体人生

    使用ffmpeg dxva技术解码

    ffmpeg中已经实现了使用dxva加速解码部分代码。但是要整合在自己的播放器中dxva相关管理代码没有实现。 以下笔者带大家去实现一个基于dxva的加速解码器。 关键代码如下 dxva2_h264.c AVHWAccel ff_h264_dxva2_hwaccel = { .name = "h264_dxva2", .type .c #if CONFIG_WMV3_DXVA2_HWACCEL AVHWAccel ff_wmv3_dxva2_hwaccel = { .name = "wmv3_dxva2 static int Setup(va_dxva2_t *va, void **hw, const AVCodecContext *avctx) { //va_dxva2_t *va = vlc_va_dxva2 = NULL ) dxva_Delete( p_va ); p_va = dxva_New(avctx->codec_id); if(p_va !

    3.2K20发布于 2018-08-02
  • 来自专栏全栈程序员必看

    C++ ffmpeg+dxva2实现硬解码「建议收藏」

    0.前言 参考博客:ffmpeg实现dxva2硬件加速 下载源码:GitHub:https://github.com/Yacov-lu/ffmpeg-DXVA-decode MFCApplication2(基于对话框): 将源码中的文件夹《D3D》《include》《lib》、文件《D3DVidRender.h》《D3DVidRender.cpp》《ffmpeg_dxva2 .h》《ffmpeg_dxva2.cpp》、还有《Debug》文件中的《avcodec-57.dll》《avdevice-57.dll》《avfilter-6.dll》《avformat-57.dll》 2.2.3、问题3:执行到sws_getContext异常退出 调试发现:dxva2_init 返回值 -22,而源码执行发现返回值0;修改添加: 修改后 dxva2_init 返回0 ,便不再执行 2.3.6、int dxva2_init(AVCodecContext *s, HWND hwnd); 这步骤就是配置硬解码,函数dxva2_init是初始化配置dxva2解码器的入口,配置工作主要就是由它来完成

    3.1K10编辑于 2022-11-16
  • 来自专栏DotNet程序园

    使用C#+FFmpeg+DirectX+dxva2硬件解码播放h264流

    修改的文件位于libavutil/hwcontext_dxva2.c文件,我先将修改部分贴出来然后再给大家解释 hwcontext_dxva2.c修改部分   代码中dxva2_device_create9 _extend函数是我新加入的,并且在dxva2_device_create函数(这个函数是ffmpeg原始流程中的,我的改动不影响原本任何功能)中适时调用;简单来说,原来的ffmpeg也能基于dxva2 enable-shared --enable-small --disable-all --disable-autodetect --enable-avcodec --enable-decoder=h264 --enable-dxva2 --enable-hwaccel=h264_dxva2 --toolchain=msvc --prefix=host make && make install ? 让你再选一个,而我们首先认定了要用dxva2的硬件解码器,其次,如果dxva2初始化错误,ffmpeg内部会自动降级为内置264软解,因此我们无需多此一举。

    4K11发布于 2019-11-28
  • 来自专栏音视频技术

    FFmpeg 硬件加速方案概览 (上)

    DirectX视频加速(DXVA)是一个API和以及需要一个对应的DDI实现,它被用作硬件加速视频处理。软件CODEC和软件视频处理器可以使用DXVA将某些CPU密集型操作卸载到GPU。 DXVA 2 API需要Windows Vista或更高版本。 ,文章中的DXVA,大多数情况下指的实际上是 DAVA2)。 为了使用 DXVA功能,基本上只能根据需要选择使用DirectShow或者Media Foundation;另外,需要注意的是,DXVA/DXVA2/DXVA-HD只定义了解码加速,后处理加速,并未定义编码加速 现在,FFmpeg只支持了DXVA2的硬件加速解码,DXVA-HD加速的后处理和基于Media Foundation硬件加速的编码并未支持(在DirectShow时代,Windows上的编码支持需要使用

    2.9K20发布于 2021-09-02
  • 来自专栏站长的编程笔记

    【说站】PotPlayer 播放器v1.7.21759绿色版

    PotPlayer播放器,拥有强劲播放引擎加速,支持DXVA, CUDA, QuickSync,多媒体播放器支持蓝光3D,内置强大的解码器及滤镜/分离器,支持自定义添加解码器,对字幕的支持非常优秀,能够兼容特效字幕及在线搜索字幕实时翻译 HDR 转换功能到 H/W HDR 功能 + 添加 pes 文件播放功能 + 添加 HEVC 420P12, 422P10, 422P12, 444P8, 444P10, 444P10 DXVA - 修正在某些视频中应用旋转的视频截图时截图异常的问题 - 修正播放某些视频时发生的错误 - 修正某些菜单项未在快捷键中注册的问题 - 修正某些字幕无法显示的问题 - 修正 dxva copyback 播放 av1 时出现黑屏的问题 - 修正首次播放时无法随机播放的问题 - 提高内部色彩空间处理速度 - 修正使用 DXVA copyback 时浏览速度慢的问题 设置—>使用硬件加速 (DXVA) ├—滤镜—视频解码器—内置解码器/DXVA设置—解码器—>H.265/HEVC 5、删除TV直播列表, 登陆程序,日志管理, 消息通知, 多语言等不必要的文件

    2.3K30编辑于 2022-11-25
  • 来自专栏林德熙的博客

    WPF 修改屏幕亮度

    在 WPF 中可以使用 Dxva2 或 GDI 的方法调整屏幕亮度或获取屏幕亮度 比较推荐使用 Dxva2 的方法修改亮度,但不是所有的屏幕都支持的。 假定某个设备有多个屏幕,此时可以使用 User32 的 MonitorFromWindow 方法获取某个窗口所在的屏幕,此时根据这个屏幕的返回的 GetMonitorBrightness 判断是否支持 Dxva2 的方法 如果 Dxva2 的方法不支持,那么尝试使用 GDI 的方式,下面请让我告诉大家两个方法如何使用 先定义 AdjustScreenByDxva2 类,这个类通过 dxva2.dll 的几个方法进行获取或修改屏幕亮度 [DllImport("dxva2.dll")] public static extern bool SetMonitorBrightness(IntPtr hMonitor , ref short pdwCurrentBrightness, ref short pdwMaximumBrightness); [DllImport("dxva2

    1.4K10发布于 2020-07-07
  • 来自专栏Qt项目实战

    Qt编写安防视频监控系统27-GPU显示

    一、前言 之前用ffmpeg解码的时候,已经做了硬解码的处理,比如支持qsv、dxva2、d3d11va等方式进行硬解码处理,但是当时解码出来以后,还是重新转成了QImage来绘制,这样就大打折扣了,尽管可以看到 下面是本人测试的结果: 测试数据,64位WIN10+32位qt5.7+32位ffmpeg3+6路1080P主码流+6路子码流 方案 CPU 内存 GPU none+none 12% 147MB 0% dxva2 +painter 21% 277MB 62% none+yuyv 17% 177MB 22% dxva2+yuyv 25% 400MB 38% d3d11va+yuyv 18% 30MB 65% qsv +nv12 22% 970MB 40% dxva2+nv12 20% 380MB 40% d3d11va+nv12 15% 320MB 62% 二、功能特点 支持多画面切换,全屏切换等,包括1+4+6 可设置硬解码类型,支持qsv、dxva2、d3d11va等。 默认采用opengl绘制视频,超低的CPU资源占用,支持yuyv和nv12两种格式绘制,很牛逼。

    1.5K00发布于 2020-08-02
  • 来自专栏Qt项目实战

    Qt音视频开发21-通用硬解码

    不同内核硬解码处理 vlc硬解码: 1.1 通过调用libvlc_media_add_option设置参数:avcodec-hw=auto 1.2 支持的参数:none auto any d3d11va dxva2 avcodec_send_packet avcodec_receive_frame解码数据 2.6 调用av_hwframe_transfer_data转换硬解码的数据 2.7 支持的参数:none qsv cuvid d3d11va dxva2 mpv硬解码: 3.1 通过调用mpv_set_option设置参数hwdec 3.2 支持的参数:none auto any d3d11va dxva2 二、功能特点 支持多画面切换,全屏切换等,包括 可设置硬解码类型,支持qsv、dxva2、d3d11va等。 默认采用opengl绘制视频,超低的CPU资源占用,支持yuyv和nv12两种格式绘制,很牛逼。

    2.1K10发布于 2020-08-31
  • 来自专栏C/C++与音视频

    FFMPEG硬件编解码器使用

    如在h264解码器中可以使用cuda 加速,qsv加速,dxva2 加速,d3d11va加速,opencl加速等。 cuda qsv dxva2/d3d11va opencl 应用场景 适应NVIDIA显卡平台,但跨OS 适应Intel显卡平台,但跨OS 适用Windows OS,但跨硬件平台 仅仅支持opencl的硬件平台 , "Usage: %s <device type> <input file> <output file>\n", argv[0]); return -1; } // 设备类型为:cuda dxva2 qsv d3d11va opencl,通常在windows使用d3d11va或者dxva2 type = av_hwdevice_find_type_by_name(argv[1]); //根据设备名找到设备类型 input_ctx); av_buffer_unref(&hw_device_ctx); return 0; } 编译后生成hw_decoder.exe,解码生成YUV文件如下: hw_decoder.exe dxva2

    4.8K40编辑于 2022-06-14
  • 来自专栏Gnep's_Technology_Blog

    使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c

    enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2

    99810编辑于 2024-01-04
  • 来自专栏全栈程序员必看

    PotPlayer 高逼格无边框的本地播放器

    1、设置硬件加速:窗口左上角或者右键菜单,打开选项-滤镜-视频解码器-内置解码器/DXVA设置,勾选使用硬件加速dxva(可选优先使用d3d11dxva) 最好用的PC端播放器PotPlayer无边框设计

    2.8K10编辑于 2022-08-31
  • 来自专栏Qt项目实战

    Qt音视频开发22-通用GPU显示

    之前用ffmpeg解码的时候,已经做了硬解码的处理,比如支持qsv、dxva2、d3d11va等方式进行硬解码处理,但是当时解码出来以后,还是重新转成了QImage来绘制,这样就大打折扣了,尽管可以看到 方案 CPU 内存 GPU none+none 12% 147MB 0% dxva2+none 3% 360MB 38% d3d11va+none 2% 277MB 62% none+painter 30% 147MB 0% dxva2+painter 30% 360MB 38% d3d11va+painter 21% 277MB 62% none+yuyv 17% 177MB 22% dxva2+yuyv 25% 400MB 38% d3d11va+yuyv 18% 30MB 65% qsv+nv12 22% 970MB 40% dxva2+nv12 20% 380MB 40% d3d11va+nv12 可设置硬解码类型,支持qsv、dxva2、d3d11va等。 默认采用opengl绘制视频,超低的CPU资源占用,支持yuyv和nv12两种格式绘制,很牛逼。

    1.7K40发布于 2020-09-01
  • 来自专栏C/C++与音视频

    视频编解码硬件方案漫谈

    如在h264解码器中可以使用cuda 加速,qsv加速,dxva2 加速,d3d11va加速,opencl加速等。 cuda qsv dxva2/d3d11va opencl 应用场景 适应NVIDIA显卡平台,但跨OS 适应Intel显卡平台,但跨OS 适用Windows OS,但跨硬件平台 仅仅支持opencl的硬件平台

    4.1K31编辑于 2022-06-14
  • 来自专栏音视频咖

    WebRTC 与 FFmpeg 相继发布最新版本

    12bit decoding VDPAU accelerated VP9 10/12bit decoding AV1 decoder (Hardware acceleration used only) DXVA2 tun & .pcm) muxer AV1 VAAPI decoder adenorm filter ADPCM IMA AMV encoder AMV muxer NVDEC AV1 hwaccel DXVA2

    1.6K20发布于 2021-04-29
  • 来自专栏Qt项目实战

    Qt编写的项目作品9-RTSP播放器+视频监控(ffmpeg版本)

    支持qsv dxva d3d 硬解码。

    1.8K10发布于 2020-03-19
  • 来自专栏Qt项目实战

    Qt音视频开发12-mpv解码播放

    支持qsv、dxva2、d3d11va等硬解码。 "yes"); //启用键盘输入 setValue("input-vo-keyboard", "yes"); //设置硬件加速 none auto any d3d11va dxva2

    1.5K30发布于 2020-08-18
  • 来自专栏跟Qt君学编程

    跨平台多媒体框架-QtAV

    特性 硬件解码支持:DXVA2,VAAPI,VDA/VideoToolbox,CedarX,CUDA。 OpenGL和ES2支持几乎所有格式。 RGB和YUV格式的视频捕获。

    1.6K10编辑于 2023-03-17
  • 来自专栏嵌入式项目开发

    ubuntu下交叉编译X264和FFMPEG到RK3399平台(编译器:aarch64-linux-gcc)

    │ │ ├── avfft.h │ │ ├── d3d11va.h │ │ ├── dirac.h │ │ ├── dv_profile.h │ │ ├── dxva2 hwcontext_cuda.h │ │ ├── hwcontext_d3d11va.h │ │ ├── hwcontext_drm.h │ │ ├── hwcontext_dxva2

    2.9K20编辑于 2022-01-12
  • 来自专栏hank

    使用ffmpeg把mp4转换为NV12文件

    enable-libvidstab --enable-libvorbis --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 enable-libvidstab --enable-libvorbis --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 enable-libvidstab --enable-libvorbis --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2

    3.6K30发布于 2021-04-14
  • 来自专栏全栈程序员必看

    视频要不要开hdr_hdr在什么情况下使用

    在LAV解码器当中,可以在“Hardware Acceleration”处选择硬解方式,目前常用的一般是两种硬解,一种是“DXVA2(native)”,另一种是“DXVA2(copy-back)”。 如果软解性能不够,需要硬解,推荐使用DXVA2 copy-back 这两种硬解的区别在于,native会把数据完全交给GPU处理,而copy-back会多出一个回传到内存给CPU处理的步骤。 一来,使用DXVA native硬解,某些GPU解码可能会出现问题,例如AMD RX显卡用native解码10bit可能会出问题,但NV的GTX10X0就不会,你很难判断到底某显卡用native解码能不能正常工作 因此,如果你想要用显卡硬解10bit视频,那么推荐使用LAV解码器当中的DXVA2 copy-back硬解方式。如果性能足够强劲,还是推荐使用CPU软解,最不容易出错。 与此同时,如果用madVR渲染的话还要注意版本,madVR在0.9之后的版本才开始支持DXVA YUV 4:2:0的10bit解码输入。

    1.9K40编辑于 2022-10-05
领券