首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

H265播放器EasyPlayer-RTSP WIN版播放器D3DGDI两种渲染模式效果比较

EasyPlayer随着多年不断发展迭代,不断基于成功实践经验,发展出包括有: EasyPlayer RTSP、EasyPlayer RTMP、EasyPlayerPro EasyPlayer.js...比较常见D3DGDI两种渲染方式,因此我们重点来看一下D3DGDI对机器性能影响表现情况。...GDI渲染格式界面选择如下: D3D渲染格式界面选择如下: 二者性能比较: EasyPlayer拉同样流,上图是GDI渲染方式,下图是D3D渲染方式;我们可以看出GDI方式所消耗CPU内存资源均比...D3D方式要高。...综上所述,使用EasyPlayer选择渲染方式时候,如果电脑配置较低选择D3D会占用较低资源,如果电脑不支持D3D渲染的话则只能选择GDI渲染方式;当然如果机器支持D3D也配置还可以的话两种方式都没有明显区别

65550
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    GDI与OpenGL与DirectX之间区别

    GDI,图形设备接口,MS开发通用windows系统图形编程接口,功能强涉及面广,一般编程都用它。...早期性能比DX差远了,但是通过操作系统捆绑销售以及MS大力市场推广,稳稳占据了市场,并且经过不断升级,现在性能上基本已经超过了OPENGL。...基本绘图方法OPENGL差不多,只不过接口采用COM方式,对于COM不了解程序员来说上手有点难度。 学开发GDI是最基本,学三维、学多媒体,就学DX吧。...现在显卡基本都支持DX,支持OPENGL已经很少了 ,不过OpenGL3D图形处理确实很不赖,对OpenGL感兴趣可以看一下NeheOpenGL教程中文版电子书,chm格式,里面有48个课程讲解相应代码...另外对于DirectX学习的话推荐是>>,后者已经差不多不发行了,其实后者代码很丰富,可以上网搜一下电子版

    2.5K20

    Windows平台RTMP|RTSP播放器为什么要兼容GDI绘制

    为什么要支持GDI 先说结论,Windows平台播放渲染这块,一般来说99%以上机器都是支持D3D,实现GDI模式绘制,除了为了好兼容性外,在远程连接场景下,D3D创建不成功,需要使用GDI模式...在之前博客,我们提到过:D3D绘制出来图像效果更细腻,绘制效率也更高,CPU占用相对GDI更低。 ​...,然后分别以D3D模式GDI模式拉流(播放端缓冲设置为0)。...无论是从延迟CPU占用上看,D3D模式都占优。 实现思路: 以C++demo为例: 1....机器少之又少,在环境具备情况下,优先建议考虑D3D模式绘制,不支持情况下,同时兼容GDI绘制是个不错选择。

    58640

    SkeyePlayer渲染引擎D3DRender实现视频图像高效率渲染解决方案(附源码)

    D3DRender,该渲染引擎支持基于GDID3D两种渲染方式,GDI方式也是我们熟知windows图像绘制接口,普遍应用于win32以及MFC界面编程,以及图形元素绘制;但是由于使用纯软windows...D3DRender初始化 D3DRender库分别为GDID3D两种渲染模式提供不同API接口进行渲染初始化,调用如下代码段实现其初始化: //创建D3dRender if (pThread-...渲染模式需要设置OSD叠加相关参数,如OSD叠加文字字体、大小等参数,OSD叠加详细讲解将在后续文章中进行讲解,本文不做过多赘述。..., }D3D_SUPPORT_FORMAT; 其中指定色彩格式RGB24为GDI渲染,其他色彩格式均为D3D渲染方式,具体视频图像渲染调用如下: if (pThread->renderFormat...} } 如上代码段所示,GDI模式通过RGB_DrawData函数进行渲染,D3D模式通过D3D_UpdateData进行渲染,只需要传入YUV或者RGB数据缓冲区以及视频图像长宽即可,

    75310

    SkeyePlayer RTSP Windows播放器OSD字幕叠加接口方法使用效果全解析

    SkeyePlayer RTSP Windows播放器新增OSD字幕叠加接口方法,这个接口码率信息显示接口方法类似,都是调用FFRender库接口实现多OSD叠加,下面讲解下该方法调用注意事项...其中OSD大小设置只有D3D渲染模式才能生效;我们已经对OSD叠加接口有所了解,下面我们来写一段调用代码来看看效果://OSD ExampleSkeye_PALYER_OSD osd;osd.alpha...(m_ChannelId, 1, osd);如上代码段所示,主要对OSD_PLAYER_OSD结构参数进行设置,就能得到我们想要效果,如下图所示:(1)GDI显示外链图片转存中......(img-3J1hL1gx-1652407820541)对比两种方式OSD叠加还是有所区别的,D3D因为有硬件加速,我们可以看到OSD叠加更加清晰而且效率也高,OSD则是相对粗糙,而且在原FFRender...库中GDI接口是不支持换行,所以,我们需要做一些技术处理,如下段代码所示:std::string sOSD = pThread->osd.stOSD;while (!

    34830

    FPS游戏:封装D3D游戏选择菜单

    19年发布了一篇《FPS游戏:实现GDI方框透视》这篇文章,本篇文章中使用到技术是外部GDI绘制,该绘制模式在Win10系统中如果不关闭毛玻璃效果则绘制会失效,为了解决绘制失效窘境,故本人将代码从易语言顺利移植成了...C/C++并使用注入方式劫持绘图函数实现内部D3D绘制,如下本人将具体分析如何实现内部绘制。...首先在外部GDI绘制时,您肯定发现了,在WindowsXP系统下绘制出来无论是方框还是文字都会频繁闪烁,而在Win10系统,由于启用了毛玻璃效果,则外部GDI绘制干脆躺平了,这就很尴尬。...外部D3D绘制模块 所谓外部D3D绘制,其实现原理是,通过在外部创建顶层窗体,并每隔指定毫秒数,自动附加窗体到目标进程上,我们所有的绘制操作都是在自身进程上实现。...内部D3D绘制模块 相对于外部D3D绘制模块来说,则不存在以上问题,与外部绘制不同,内部绘制需要控制转接函数,在原始绘图函数工作之前,需要增加新绘制方法,内部绘制效率时最高,且内部绘制不存在占用CPU

    96610

    Direct3D基础知识

    D3D体系结构 D3DGDI处与同一层次,区别在于,D3D可以使用HAL(Hardware Abstraction Layer)通过DDI来访问图形硬件,充分发挥硬件性能. 2....D3D设备对象 2.1 D3D设备类型         HAL,支持硬件加速光栅化硬件或软件处理         Software Device,硬件模拟层         REF,reference.../950 2.4 D3D绘制 Clear(),可以清空颜色缓冲区,深度缓冲区,模板缓冲区.可以选择清除区域 BeginScene()EndScene()不允许嵌套 Present(),可以指定更新区域...设备丢失: 图形显示丢失焦点,必须重新创建相关资源 任何显存资源在设备丢失时必须销毁,包括CreateAdditionalSwapChain()创建交换链D3DPOOL_DEFAULT格式内存资源...D3D表面 表面格式:通常有两个属性,表面大小与颜色位数 表面翻转:将后台缓冲区移动到前台缓冲区过程 交换链:按顺序逐个提交到前台显示多个后台缓冲区集合 多个视图应用程序用多个交换链 访问表面内存

    1.3K80

    为何使用 DirectComposition 创建更加迷人界面流畅丰富动画组合不同位图通过集成 DWM 节省内存兼容原有代码

    本文主要翻译Why use DirectComposition,介绍 DirectComposition 功能优点。...对于帧率要求高动画也可以使用 DirectComposition ,可以支持高速绘制、缩放组合很多动画。...组合不同位图 很多 Windows 程序都组合几个渲染技术,如界面菜单使用 GDI 来画,因为画静态 GDI 性能好。...画动画使用 D3D 来画,然后把多个渲染进行组合,显示在一个窗口,这时就可以使用 DirectComposition 来组合位图。...那么 DWM 是什么作用,DWM 实际作用 Windows 组合引擎或合成程序,需要每个窗口把显示内容给屏外表面或缓冲区,缓冲区是系统给每个顶层窗口分配,所有的 GDID3D、D2D 到先渲染到这里

    1.5K10

    D3D深度测试Alpha混合

    深度测试 a) 深度缓冲区:屏幕上每个像素点深度信息一块内存缓冲区.D3D通过比较当前绘制像素点深度对应深度缓冲区深度值来决定是否绘制当前像素. b) D3DPRESENT_PARAMETERS...SetRenderState( D3DRS_ZENABLE, TRUE ); 深度测试函数:D3DRS_ZFUNC: D3DCMP_NEVER 总是返回FALSE D3DCMP_LESS (常用) 小于深度缓冲区相应值时返回...D3DCMP_GREATER 大于 D3DCMP_NOTEQUAL 不等于 D3DCMP_GREATEREQUAL 大于等于 D3DCMP_ALWAYS 总是返回TRUE 更新缓冲区:保持深度缓冲区不变还是用当前像素深度值更新...Alpha混合 a) 原理:Color = (RGBsrc * Ksrc) OP (RGBdst * Kdst) 最常用方法:Color = (RGBsrc * Alphasrc) + (RGBdst...颜色缓冲区计算结果) D3DBLENDOP_MAX MAX(源计算结果, 颜色缓冲区计算结果) Color = (RGBsrc * Alphasrc) + (RGBdst * (1 – Alphasrc) )设置示例

    1K60

    最新版chromium 76如何支持xp

    这个是chromium里面用最多xp下没有的api。我解决方案是自己撸了一套山寨版api,接口原型完全windows原版一样。...2,d2d、d3d系列。 这部分我直接砍掉了。不影响。因为d2d可以用GDID3D可以走angle或者swiftshader。这里夸一下谷歌,居然把swiftshader收购了。...给我感觉就是为了造一部汽车,就先买了一座铁矿。话说回来,chromium渲染走是opengl,但这个在windows下驱动支持各种问题,所以谷歌会用angle把opengl转发给D3D。...下一步就是修复各种流程上bug。 下面挑几个点讲下。 首先是字体渲染。操蛋谷歌把老GDI渲染全部干掉,走DWrite渲染。更操蛋是干掉就算了,还把代码都删了。其实完全可以判断下版本走哪个分支。...所以针对这个问题,需要找到当年patch,再把gdi渲染补充回来。 然后是声音播放不了。这个也是干掉了老wavexxxx系列api导致。

    1.7K50

    Windows平台RTSP|RTMP播放端SDK集成说明

    正式授权版,需要在Init()接口调用之前添加设置license代码(相关KeyCID请根据正式授权版邮件说明填写): 2.4 接口调用时序(以C#为例) 2.4.1 设置授权license C#...2.4.7 D3DRender检测 目前,几乎很少存在不支持D3D绘制情况,考虑到系统通用性,我们在播放之前,先做检测,具体调用接口如下: /* * handle: 播放句柄 * hwnd: 这个要传入真正用来绘制窗口句柄...绘制情况下,设置回调YUV数据,上层直接用GDI模式绘制,注意:GDI绘制效率偏低。..._ = true; playWnd.Visible = false; // 不支持D3D就让播放器吐出数据来,用GDI绘制 //video frame callback (YUV...2.4.9 设置回调PCM NT_SP_SetIsOutputAudioDevice:设置是否播放出声音,这个和静音接口是有区别的,这个接口主要目的是为了用户设置了外部PCM回调接口后,又不想让SDK

    96200

    windows平台桌面截屏技术介绍

    windows系统中,抓取屏幕有很多方法,比较常用GDImirror两种方式,除此以外,利用ddrawDXGI(windows7以上系统支持)方式也可以抓取屏幕。...由于mirror方式涉及到驱动底层,并且也不是所有系统都支持,这里不做介绍,着重介绍GDI, DDRAWDXGI这三种抓屏方式, 一,GDI 所有的windows版本都通用抓屏方式,...::ReleaseDC(::GetDesktopWindow(), window_dc); DeleteObject(memBitmap_); 二,DirectX 使用DDraw,D3d...缺点:也GDI一样,如果启用了特效,速度也非常慢。 三, DXGI 这种抓屏方式,速度非常快,而且即使启用了Aero特效,抓屏效率也一样。...尤其在windows10以后系统上,当桌面没有变化时,你是抓取不到任何图像,只有在桌面有变化时,你才能抓取到图像。这会带来更高抓屏效率更少系统开销。

    1.7K00

    WPF 从最底层源代码了解 AllowsTransparency 性能差原因

    PresentWithD3D 使用 D3D 方法,或通过 PresentWithGDI 使用 GDI 方法。...因此可以回答本文为什么在 4k 下将会占用更多内存问题,其实是需要在 4k 下进行全屏窗口才会占用很多内存,因为在如上代码里面重新申请了一段内存,这个内存大小窗口大小是关联 在上面代码中申请内存用途是用来从...D3D 拷贝出来,用于后续做 GDI 渲染使用。...而通过 GDI 再次渲染将会降低整个应用渲染性能 说道这里,是否有方法可以提升性能?...其实有的,详细请看 WPF 制作高性能透明背景异形窗口 当前 WPF 在 https://github.com/dotnet/wpf 完全开源,使用友好 MIT 协议,意味着允许任何人任何组织企业任意处置

    1.4K20

    RTSP协议探究RTSP播放器技术实现

    二、协议特性有状态协议:与HTTP无状态特性不同,RTSP是一个有状态协议,服务器需要维护关于客户端会话状态信息。可扩展性:RTSP支持新方法参数添加,具有良好可扩展性。...三、协议功能播放控制:客户端可以通过RTSP命令控制媒体流播放,如播放、暂停、停止、快进快退等。...绘制情况下,设置回调YUV数据,上层直接用GDI模式绘制,注意:GDI绘制效率偏低。..._ = true; playWnd.Visible = false; // 不支持D3D就让播放器吐出数据来,用GDI绘制 //video frame callback (YUV/RGB...设置回调PCMNT_SP_SetIsOutputAudioDevice:设置是否播放出声音,这个和静音接口是有区别的,这个接口主要目的是为了用户设置了外部PCM回调接口后,又不想让SDK播放出声音时使用

    26210

    OLE控件在Direct3D中渲染方法

    Windows上图形绘制是基于GDI, 而Direct3D并不是, 所以, 要在3D窗口中显示一些Windows中控件会有很多问题 那么, 有什么办法让GDI绘制内容在3D中显示出来?...反正都是图像, 总有办法实现嘛!...前段时间在研究浏览器在游戏中嵌入, 基本思路就是在后台打开一个浏览窗口, 然后把它显示内容拷贝到一张纹理上, 再把纹理在D3D中绘制出来, 至于事件处理就要另做文章了....所以, 其它Windows里GDI绘制东西都可以这样来实现! 最初我是GetDC, 然后GetPixel逐像素拷贝, 慢得我想死........后来发现了BitBlt这一速度很快复制方法, 才有了实用价值: 1. 取得控件DC: GetDC(hWnd) 2.

    92820

    OLE控件在Direct3D中渲染方法

    Windows上图形绘制是基于GDI, 而Direct3D并不是, 所以, 要在3D窗口中显示一些Windows中控件会有很多问题 那么, 有什么办法让GDI绘制内容在3D中显示出来?...反正都是图像, 总有办法实现嘛!...前段时间在研究浏览器在游戏中嵌入, 基本思路就是在后台打开一个浏览窗口, 然后把它显示内容拷贝到一张纹理上, 再把纹理在D3D中绘制出来, 至于事件处理就要另做文章了....所以, 其它Windows里GDI绘制东西都可以这样来实现! 最初我是GetDC, 然后GetPixel逐像素拷贝, 慢得我想死........后来发现了BitBlt这一速度很快复制方法, 才有了实用价值: 1. 取得控件DC: GetDC(hWnd) 2.

    79550

    DXGI快速截屏桌面直播技术

    综合来看,各方面秒杀GDI截屏技术,易用性上也比MirrorDriver技术好得多,是Windows8以后平台截屏技术首选。...调用流程   首先,这套接口是集成在DirextX之中,所以更大部分DirectX接口使用方式基本一致,也就是通过D3D,各种QueryInterface,各种Enum,核心方法,是AcquireNextFrame...截屏性能测试   这里把他跟传统使用GDI截屏技术,进行对比。程序只截取桌面数据,然后把数据保存到自己内存buffer中,不做其他操作。...我笔记本比较老了,所以GDI最多只能跑到20帧了,不过可以看到,即使这种情况下,当不设置帧率,也就是无限循环截屏情况下,DXGI性能只能用可怕来形容。。。 ?...(转载请注明作者出处~)

    3.8K60
    领券