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

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

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

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

    GDI与OpenGL与DirectX之间的区别

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

    2.6K20

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

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

    59540

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

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

    78410

    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 (!

    37430

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

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

    1K10

    Direct3D基础知识

    D3D体系结构 D3D与GDI处与同一层次,区别在于,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

    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

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

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

    1.5K10

    最新版chromium 76如何支持xp

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

    1.7K50

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

    正式授权版,需要在Init()接口调用之前添加设置license的代码(相关Key和CID请根据正式授权版邮件说明填写): 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

    98000

    windows平台桌面截屏技术介绍

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

    1.8K00

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

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

    1.5K20

    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播放出声音时使用

    39610

    OLE控件在Direct3D中的渲染方法

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

    79850

    OLE控件在Direct3D中的渲染方法

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

    93820

    DXGI快速截屏桌面直播技术

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

    3.9K60
    领券