EasyPlayerPro Windows播放器全屏模式下GDI显示出现黑屏问题解决
问题来源
- 2017.12.21
前天有杭州某教育领域客户反馈有部分视频源在全屏模式下显示黑屏;
问题复现
EasyPlayerPro由于没有实现单个窗口完全全屏,故没有暴露该问题,晚上加班,加上单个窗口完全全屏,即把控制区全部隐藏,仅将视频铺满整个屏幕;
改完,电脑罢工了,今天上午还蓝屏两次,ASUS, 伤透了我的心…
复现问题, 发现其实是1080P的视频在全屏状态下显示黑屏, 且显示器分辨率刚好是1080P. 并且是GDI显示模式;
又是GDI…
问题解决
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
技术交流
QQ交流群:544917793
获取更多信息
EasyDarwin开源流媒体服务器:www.EasyDarwin.org
EasyDSS商用流媒体解决方案:www.EasyDSS.com
EasyNVR无插件直播方案:www.EasyNVR.com
Copyright © EasyDarwin Team 2012-2017

EasyPlayerPro Windows播放器全屏模式下GDI显示出现黑屏问题解决的更多相关文章
- EasyPlayerPro windows播放器在播放RTMP视频显示重复异常问题解决
问题来源 2017.12.18 今日有杭州某教育领域客户反馈EasyPlayerPro在播放一个rtmp源时,画面显示异常的问题.截图如下: 问题复现 一番思考, 将显示格式改为D3D显示, 正常, ...
- EasyPlayerPro windows播放器本地配置文件配置方法介绍
需求背景 应EasyPlayerPro某客户需求,在EasyPlayerPro启动时,自动播放指定的url源, 不需要每次都去手动填写, 且实现自动播放,不需要手动的单击播放按钮: 为响应该需求,特增 ...
- EasyPlayerPro Windows播放器读取xml配置文件中的特殊字符问题
问题被反馈 今日一客户反馈说播放不了带用户名密码的流, 奇怪,这个问题不存在啊-,按照客户的说法, 是将url地址保存在配置文件中,然后再打开EasyPlayerPro运行: 问题复现 在EasyPl ...
- EasyPlayerPro Windows播放器电子放大/局部放大播放功能实现
背景描述 在视频监控软件中,我们看到很多的软件都有电子放大功能, 按住鼠标左键不放,框选一个区域,再松开鼠标左键,即对选中的区域进行放大显示, 且可以重复该操作,逐步放大所需显示的区域, 有没有觉得, ...
- EasyPlayerPro windows播放器本地音频播放音量控制实现
背景描述 作为一个播放器, 除了能播放视频和声音外,音量控制是绝对不能缺少的功能; 本文在音视频播放的基础上,增加对音量的控制: 实现流程 调用mixerGetDevCaps获取音频输出设备列表; 打 ...
- EasyPlayerPro Windows播放器进行本地对讲喊话音频采集功能实现
需求 在安防行业应用中,除了在本地看到摄像机的视频和进行音频监听外,还有一个重要的功能,那就是对讲. EasyPlayerPro-win为了减轻二次开发者的工作量,将本地音频采集也进行了集成: 功能特 ...
- EasyPlayerPro Windows播放器本地快照抓拍截图功能实现方法
背景描述 作为一个播放器,截图功能必不可少; 下面主要记录一下截图功能的实现: 实现流程 将解码后的帧进行格式转换(目标格式为RGB24); 采用独立的线程进行截图处理; 截图可保存为BMP或JPG两 ...
- EasyPlayerPro Windows播放器实时流进行本地缓冲区即时回放功能实现
背景描述 参照国内视频监控行业监控软件,实现当前视频的即时回放功能,例如: 监控人员发现刚刚的某个视频点有可疑,就像录像回放一样,想倒回去看一下,但又不想切换到录像回放界面, 此处就体现即时回放的价值 ...
- 一不小心把windows资源管理器给结束任务了 电脑黑屏了 怎么处理
按键盘上的三个键,Ctrl+Shift+Esc来启动任务管理器: 在任务管理器界面的左上角,有一个“文件”按钮,点击它会出现下拉的“新建任务(运行)...”按钮 鼠标点了“新建任务(运行)...”会弹 ...
随机推荐
- go --socket通讯(TCP服务端与客户端的实现)
这篇文章主要使用Go语言实现一个简单的TCP服务器和客户端.服务器和客户端之间的协议是 ECHO, 这个RFC 862定义的一个简单协议.为什么说这个协议很简单呢, 这是因为服务器只需把收到的客户端的 ...
- PHP使用frameset制作后台界面时,怎样实现通过操作左边框架,使右边框架中的页面跳转?
左框架的链接,不仅要指定链接的文件名,还需要通过 target 属性指定要打开的目标框架名(即楼主要求的右框架名). 例:假设右框架为 <frame scr="lx1.htm" ...
- django博客开发
找一文件夹作为项目文件夹1 django-admin.py startproject mysite建立工程2 cd mysite python manage.py startapp blog 建立第一 ...
- [Django]中建立数据库视图
Django中建立数据库视图 Django中没有建立视图的接口.假设要建立一个视图须要一些手动的改变. 这里使用的Django 版本号>1.5, 使用的数据库为mysql 第一步 建立视图,比如 ...
- 两段用来启动/重启Linux下Tomcat的Perl脚本
两段代码,第二段比较好些. 下面是Split输出结果方式的代码: #!/usr/local/bin/perl #Date:2015-07-07 print "Begin to restart ...
- vue.js+koa2项目实战(三)登录注册模态框
登录注册模态框 注: [Vue warn]: Do not use built-in or reserved HTML elements as component id: diaLog 原因:diaL ...
- 【LeetCode】Validate Binary Search Tree ——合法二叉树
[题目] Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defin ...
- shell脚本实现定时重启进程
##############################Deploy crontab for yechang ad*******eta restart ###################### ...
- Robot Framework ---Selenium API
一.浏览器驱动 通过不同的浏览器执行脚本. Open Browser Htpp://www.xxx.com chrome 浏览器对应的关键字: firefox FireFox ff internete ...
- VM tools安装错误The path "" is not a valid path to the xx generic kernel headers.
在网上搜索非常多解决方式.并不适用于我的问题,最后通过下面步骤解决: 1. 更新软件源(防止build-essential不能 安装),然后安装build-essential和linu-headers ...