如何解决 iPhone 6 或 iPhone 6s 上从后台切换到前台播放视频会显示为 1 到 2 秒的绿屏

iPhone 6 搭载的是 A8 芯片,iPhone 6s 搭载的是 A9 芯片。

该问题是由于切换到后台后,解码器会话会失效,当再次进入前台时,需要再次创建会话,但由于使用的视频通道没有变,继续播放接收到的很大可能是 P 帧,iOS P 帧的解码分为以下两种情况:

  • A9 及以下芯片的解码器新的会话会解码无完整 GOP 的 P 帧,并将无法渲染的画面用绿色填充,即视频解码渲染开发中常说的绿屏
  • 而 A9 以上的芯片则算法是直接不解码无完整 GOP 的 P 帧,因此没这个问题。

iOS 如何获取解码视频使用的是软解码还是硬解码

软解码使用的是 CPU 解码,CPU 进行大量的矩阵计算是非常的占用性能,导致手机功耗增加,电量耗尽更快。

iPhone 6 搭载的是 A8 芯片,iPhone 6s 搭载的是 A9 芯片,iPhone 6s 之前的苹果手机都不支持 HEVC 硬解码。
iOS 上使用 VideoToolbox 框架解码视频时,iPhone 6 进行软解码时 CPU 占用将增加大约 30%,而使用 iPhone 14 使用硬解码 CPU 占用增加不到 10%。

那么如何验证 iPhone 是否支持硬解码呢?

macOS 软件彻底卸载篇

image-20240316193810542

软件长期使用不卸载,并且随着软件不断更新,它的占用空间会越来越大。

比如我的 Xcode 用 App Cleaner 检测到竟然占用了 101G,可安装至今还不到 6 个月。
比如 JetBrains 家的 IDE 可以通过 JetBrains Toolbox 进行软件的卸载,但是它仍然不能进行彻底卸载,即使通过 App Cleaner 也不能彻底卸载,那么就需要我们手动删除了,那需要手动删除的文件或目录是哪些呢?

如何用 Xcode 重命名 Swift 项目

昨天晚上重命名一个 Swift 项目,没想到问题还挺多的,花了点时间,今天再次尝试重命名项目,特此记录,供后续参考。

Python3 报错 dyld cache '/System/Library/dyld/dyld_shared_cache_x86_64h' not loaded: syscall to map cache into shared region failed

在执行 Python3 命令的时候报如下错误:

1
2
3
4
5
6
$ python3
dyld[44774]: dyld cache '/System/Library/dyld/dyld_shared_cache_x86_64h' not loaded: syscall to map cache into shared region failed
dyld[44774]: Library not loaded: /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
Referenced from: /Library/Frameworks/Python.framework/Versions/3.6/Resources/Python.app/Contents/MacOS/Python
Reason: tried: '/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation' (no such file), '/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation' (no such file)
[1] 44774 abort python3

估计是 Python 版本有问题,自 macOS Monterey 12.3 后,Python 2 已经从系统移除,安装命令行开发者工具后会自动安装 Python 3,那就可以换成 macOS 的 Python3 试试。

ClashX Pro 开启增强模式后 Git 连接不上 GitHub

代理软件如何实现真全局代理或对指定应用代理? - 干志雄的博客 这篇文章中讲了通过 ClashX Pro 开启增强模式来显示真全局代理,但是开启后会导致 Git 连接不上 GitHub 的问题。

1
2
3
$ ssh -T git@github.com
kex_exchange_identification: Connection closed by remote host
Connection closed by 28.0.0.102 port 22

增强模式是利用 TUN ,创建虚拟网卡改路由表优先走这块虚拟网卡接管所有流量。IP 28.0.0.101 是虚拟 IP,目的是为了接管系统流量。

这个问题的原因就是某些节点因为安全问题禁用了 22 端口,而 SSH 默认使用的就是 22 端口,因此连接就会被拒绝。解决方法就是把 22 端口换成 443 端口,即通过 HTTPS 端口建立的 SSH 连接。

Read more

macOS 截取窗口的正确姿势

macOS 虽然自带截图,但大多数人仍然会安装第三方的截图软件,比如我使用截图软件就是 Snipaste,他不光免费,而且还支持贴图的功能,能满足我的日常使用。

但它有个问题就是截取窗口的时候,并不是安装窗口形状截取的,它只能截取矩形,比如截取圆角的窗口,窗口圆角之外并非透明,而是上层窗口或桌面背景,如下图所示:

对于追求完美的我,这点我无法容忍。

好在 macOS 自带的截图不会存在这个问题,但在使用时需要点技巧来避免截取生成的窗口阴影。