• EasyPlayerPro-win配置全屏模式不能全屏是为什么


    最近遇到一个项目团队是做全景视频播放的,希望用EasyPlayerPro做一个客户端程序,但是在调试DEMO的时候遇到一个问题,即配置了全屏模式后,视频只能出现在窗体左上角。

    EasyPlayerPro播放界面:

     

    针对该问题,我们与这个项目团队进行了详细沟通,才得知当前的显示器是多屏拼接显示的,用Nvidia的Surround配置多个显示器拼接成一个显示器来用,目的是提高显示效果。但是就算如此,也不应该在本应全屏的时候不能全屏显示,最终只能回归到检查代码。

    在检查到代码FullScreen()时,忽然看到了如下代码:

    ShowWindow(SW_MAXIMIZE);
    

    这个代码透露了一定的信息,让我们开始思考当前指定窗口最大化是否不能对多屏显示起作用,或者只是对当前第一块屏幕有效?于是我们开始实验,去除最大化操作,这时候程序正好出现在屏幕中间,通过拖拽的方式可以拉到铺满整个屏幕的最大化效果,于是又检查了下当前屏幕分辨率,分辨率为:7688*4328。

    既然通过拖拽的方式可以实现最大化的需求,我们是否可以换个思路,直接将窗口指定分辨率,于是做如下试验:

    SetWindowPos(NULL, 0, 0, 7688, 4328, 0)
    

    从左上角开始绘制窗体的时候就指定好窗体的宽和高,然后再配合去除窗体边框等,调试运行后,过然可以解决问题,此时能果断解决网友遇到的“全屏”问题。

    关键代码如下:

    // 去掉标题栏  
    ModifyStyle(WS_CAPTION, 0); //(WS_POPUP | WS_BORDER | WS_CAPTION | WS_SYSMENU, WS_CHILD);
    // 去掉边框
    ModifyStyleEx(WS_EX_DLGMODALFRAME, 0);  
    //窗口位置和大小保持原来不变
    SetWindowPos(NULL, 0, 0, 7688, 4328, 0);//SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_FRAMECHANGED); 
    //SetWindowPos(NULL, 0, 0, 1920, 1080, 0);//SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_FRAMECHANGED); 
    //最大化窗口
    ShowWindow(SW_NORMAL); 
    //ShowWindow(SW_MAXIMIZE);//不能再使用最大化,此最大化只是针对当前屏幕最大化
    

    拓展

    EasyPlayerPro虽然支持了几乎所有的流媒体协议,但是在很多场景和需求下面(例如:SDK包大小,自定义协议,数据加密),EasyPlayerPro的定制成本比较高,灵活程度没有EasyPlayer-RTSP和EasyPlayer-RTMP专用播放器的灵活程度高,EasyPlayerPro考虑的是通用性,而专用播放器考虑的是定制性。因此如果还想了解TSINGSEE青犀视频开发的其他专用播放器,欢迎联系我们,目前EasyPlayer系列已经支持H265编码的视频播放,同时支持集成,欢迎了解。

     
  • 相关阅读:
    jsp eclipse 创建jsp项目
    SQL Server 身份验证 登陆
    HUD 5086 Revenge of Segment Tree(递推)
    HDU 1700 Points on Cycle (几何 向量旋转)
    RocketMQ broker jvm 监控
    RocketMQ runbroker.sh 分析JVM启动参数
    问题:虚拟机老生代垃圾回收频繁出现
    空白行 ,空白
    eclipse find 两位数
    生成字母+数字6位字符串
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14943746.html
Copyright © 2020-2023  润新知