wpf 程序在某些win10电脑花屏(显示错乱)

问题

最近接到一个用户反馈他的win10电脑使用我的程序时候出现花屏,然后我远程看确实会出现,然后编译一个单独wpf程序也会花屏。

过程

猜测.net framework 问题

因为他的电脑是win10,自带是4.6框架,我于是下载4.8最新版本,安装重启后发现无效,那么说明跟.net 没有关系

猜测显卡问题

使用360安全卫士的系统修复,点击一键修复,然后检测显卡驱动不是最新,然后更新驱动后发现wpf程序正常了。

总结

  1. 驱动问题,因为渲染基本归系统
  2. 软件注入【网上有说戴尔电脑有注入导致显示问题,我这个用户不是】
  3. 如果上面搞不懂,直接重装系统【基本是万能大法】
    每个人情况不一样,主要有排查思维

android 协同 实时渲染问题 scrcpy的小技巧

android 协同或者直播

我自己开发android的apk直接开启录制屏幕,然后传输H264到PC端,我发现无法实时,但scrcpy却可以做到,我一步步查找代码进行分析

format.setLong(MediaFormat.KEY_REPEAT_PREVIOUS_FRAME_AFTER, 100_000);

Applies only when configuring a video encoder in "surface-input" mode. The associated value is a long and gives the time in microseconds after which the frame previously submitted to the encoder will be repeated (once) if no new frame became available since.

上面goolge的解释,如果没有新的帧就会重复上一个帧,我不知道这么设置后就可以看起来实时,不然大概就是2秒左右的延迟,我自己手机浏览器显示时间就可能明显感觉到。我之前没有用h264编码时候,直接截图都没有延迟,可能就是编码导致的,因为图片没有变化就不会进行编码,可能下次编码就需要等待一段时间,所以产生的延迟了。

h5显示出现延迟

我自己改了好多代码发现网页显示渲染比较慢,代码调整几次都发现有2秒的延迟,无论用画布还是别人渲染方法都不是很好,所以我直接放弃还是用SDL进行渲染。

SDL渲染出现残影(偶尔显示之前帧)

这个问题开始我以为数据传送有问题,我后面直接改成本地文件读取帧,也有问题。
我突然想到可能没有加延迟,导致渲染过快有残影出现,我后面加了SDL_Delay(1) 一毫秒延迟就再也没有出现了。

总结

自己开发的时候减少很多业务代码,scrcpy用了队列,用C的指针来代替工厂类,这种代码不好方便找代码,对自己开发的那确实比较舒服。
用webview显示实时做不到,网上看了好多方案,貌似都不是很好,都基本有2秒左右延迟。

电信申请独立IP过程以及路由使用

背景

自己突然想申请一个独立IP玩玩,比喻远程桌面,直接连接速度还是快很多,而且P2P下载软件有加速功能,虽然我基本不用下载,对于我最有用可能用写一下P2P穿墙的测试代码,所以说中国能够拥有独立IP人不多,P2P网络的梦想可能靠ipv6了。。。

过程

  1. 打电信电话,说自己远程办公
    网上如果不给你办,一定要态度强硬,不然工信部投诉,结果直接给我安排。
  2. 电信人打电话给我,然后给我设置独立IP
  3. 直接网线连接光猫,登录后台useradmin ,密码在猫的后面,查看分配IP确实是Ip138对应的IP,说明我已经分配外网IP
  4. 配置光猫,直接找电信对接人要超级密码,设置DMZ或者桥接。
    所以一定要配置光猫,必须要超级账号,否则没有任何意义,除非开始光猫就是桥接,通过路由器拨号上网,我懒的问账号和密码,所以直接dmz,类似转发,我按照网上的方法都没有搞到密码,所以最后直接发短信的问的。
  5. 路由器设置,既可以设置dmz也可以设置端口转发,我设置端口到另外一个路由器指定端口
  6. 第二个路由器设置端口转到指定IP电脑的端口

    我的网络

    光猫----> 路由器A(wifia)---->路由器B(wifib)----->自己台式机
    为什么2个路由器,因为wifi穿墙不信号强,换几个路由器一样,所以用2个路由器,没有无线wifi中继。

    验证过程

    自己台式机开启一个软件监听指定端口,然后用另外一台电脑,通过外网IP加端口连接,连接通说明就可以了。自己可以用软件,也可以自己写一个网络通信的代码。

    补充

    如果转发端口,一定要设置IP绑定指定MAC,不然IP是动态,一旦IP过期,可能分配别的IP地址。
    光猫DMZ可以设置MAC 设置,这样子就不用IP,不用设置IP绑定问题。
    我的套餐199,如果便宜可能申请不到,我是看网上这么说的,反正我申请下来,没有遇到什么事情。

parsec局域网玩FPS游戏

背景

自己一台笔记本用来开发,另外一台台式机偶尔玩一下荒野行动,用大屏幕玩游戏肯定舒服一点,这样子导致每次都会要切换,导致有一点麻烦

测试过程

  1. 向日葵
    我自己是会员,可以开启游戏模式,结果他无法读取游戏画面,这个应该向日葵采集API的问题,无法采集到显卡渲染的界面。vs 都无无法采集到,因为默认选项用显卡渲染加速,所以无法使用。
  2. 微软远程桌面
    游戏画面是能看到了,结果鼠标一下子飞好远,然后查了一下解决方案,看到微软一个回答,FPS游戏建议用parsec。。。 说明这个无法满足问题。我自己还是用家庭版本,到github找一个安装远程方法搞了半天,结果也无法游戏,只能远程,不过只是远程来看,微软的桌面确实足够了,比其他远程软件要好。
  3. parsec
    直接搜索进行下载、注册、使用。
    直接远程,结果黑屏,然后自己搜索,结果是被远程端必须插入显示器,但我只有一台显示器,于是找了一下解决方案

    parsec 方案解决显示器问题

    购买hdmi虚拟显示器

    这种需要购买一个硬件,插到电脑

    软件,虚拟一个显示器

    貌似国外有开源代码,我觉得麻烦,懒得编译,自己找到一个DisplayAgent软件
    https://pan.baidu.com/s/1vdqm0Is9pjAcG40Qf_q7cw
    不知道这个软件不知道是不是国内,可以试用10分钟,可以购买,貌似才10几块钱。
    如果你联系不到作者,我可以告诉你一个最简单破解方案。
    任务管理器->性能管理,找到软件,然后xx.... 我就不说完了,毕竟有点断人财路。。