EasyPlayerPro Windows播放器全屏模式下GDI显示出现黑屏问题解决

问题来源

  • 2017.12.21
    前天有杭州某教育领域客户反馈有部分视频源在全屏模式下显示黑屏;

问题复现

EasyPlayerPro由于没有实现单个窗口完全全屏,故没有暴露该问题,晚上加班,加上单个窗口完全全屏,即把控制区全部隐藏,仅将视频铺满整个屏幕;

改完,电脑罢工了,今天上午还蓝屏两次,ASUS, 伤透了我的心…

复现问题, 发现其实是1080P的视频在全屏状态下显示黑屏, 且显示器分辨率刚好是1080P. 并且是GDI显示模式;

又是GDI

问题解决

EasyPlayerPro

GDI显示视频使用的是DrawDibDraw函数, 后经调试, 是坐标的问题,修改以下三行代码:

    SetWindowExtEx(gdiRenderObj.canvas.hDCMemRender, 1, -1, &szWindowExt);
    ::SetViewportOrgEx(gdiRenderObj.canvas.hDCMemRender, rcWindow.left, rcWindow.bottom, &ptOrg);       //2017.11.28  rcWindow.bottom-1, 解决显示时顶部一条黑线问题
    ::SetViewportExtEx(gdiRenderObj.canvas.hDCMemRender, 1, 1, &szViewportExt);

然后在DrawDibDraw函数中将height-1(必须,否则不能正常显示);

BOOL bRet = ::DrawDibDraw(gdiRenderObj.hDrawDIB,
        gdiRenderObj.canvas.hDCMemRender,
        dstL,//rc.left,             // dest : left pos
        dstT,//rc.top,              // dest : top pos
        //-1,                   // don't zoom x
        //-1,                   // don't zoom y
        dstW,
        dstH-1,
        pbih,                   // bmp header info
        pBuf,                // bmp data
        iSrcLeft,                    // src :left
        iSrcTop,                     // src :top
        iSrcWidth,               // src : width
        iSrcHeight,              // src : height
        0//DDF_SAME_DRAW             // use prev params....
        );

问题搞定, 收工!!!

关于EasyPlayerPro

EasyPlayerPro是一款全功能的流媒体播放器,支持RTSP、RTMP、HTTP、HLS、UDP、RTP、File等多种流媒体协议播放、支持本地文件播放,支持本地抓拍、本地录像、播放旋转、多屏播放、倍数播放等多种功能特性,核心基于ffmpeg,稳定、高效、可靠、可控,支持Windows、Android、iOS三个平台,目前在多家教育、安防、行业型公司,都得到的应用,广受好评!

EasyPlayerPro:https://github.com/EasyDSS/EasyPlayerPro

点击链接加入群【EasyPlayer & EasyPlayerPro】:544917793

技术交流

获取更多信息

EasyDarwin开源流媒体服务器:www.EasyDarwin.org

EasyDSS商用流媒体解决方案:www.EasyDSS.com

EasyNVR无插件直播方案:www.EasyNVR.com

Copyright © EasyDarwin Team 2012-2017

EasyDarwin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值