代码与开发
代码片段与开发实践
给手机视频加上实时超分与补帧:三条开源路线的骁龙 8 Gen 3 真机实测想让手机上的视频更清晰、更顺滑,不一定要等厂商给开关。本文用三条开源路线在一台骁龙 8 Gen 3 手机上真机实测:Anime4K 着色器超分(装满血 mpv 就能用)、RIFE 神经网络补帧(自己编译 ncnn Vulkan 版,测出 GPU 实时的分辨率边界)、QNN NPU 推理(无需 root,比 CPU 快 4 倍),并给出 480p 到 4K 各档的实测效率表和一套可落地的实时组合方案。VisionFive 2 摄像头网页串流完整实现:V4L2 采集、HEVC 硬编与浏览器播放在 RISC-V 开发板 VisionFive 2 上从零实现摄像头网页直播的完整正确路径:media 管线配置、裸 ioctl V4L2 采集、WAVE420L HEVC 硬编、WebSocket 广播、浏览器 WebCodecs/MSE 三级解码,附全部关键参数与工程技巧。VisionFive 2 摄像头硬编串流实战(一):采集管线与传感器救援在 RISC-V 开发板 VisionFive 2 上把 imx219 摄像头采进内存,第一步就事故不断:media 链路开机全断、libv4l2 回写垃圾格式、ISP 守护进程假启动、sensor 根本没人叫醒。本篇记录采集管线的完整踩坑与救援过程。VisionFive 2 摄像头硬编串流实战(五):底部绿带两轮修复——1088 与 1080 的 8 行战争画面底部一条绿带,修了两轮才根除:第一轮败给帧池的零填充外露,第二轮败给一记天真的 resize(0)。病根都是同一个——ISP 输出 1088 行、有效帧只有 1080 行,而 NV12 的 UV 平面位置是从高度算出来的。2026-08-25 补记第三轮:换 IR-CUT 模组后花屏错位,才发现 1088 这个高度根本不该向驱动请求。VisionFive 2 摄像头硬编串流实战(二):HEVC 硬编翻案记——WAVE420L 从「固件不匹配」到 21fps我们曾白纸黑字写下「JH7110 硬编不可用:固件与内核驱动不匹配」,一周后翻案:两个低级错误——头命令调早了、编码完没等中断——伪装成了一场固件事故。本篇记录 WAVE420L HEVC 硬编的正确打开方式。VisionFive 2 摄像头硬编串流实战(三):Web 串流架构与手工封装 fMP4——Chrome 的坑集锦编码线程永不阻塞的 WebSocket 广播、WebCodecs hev1/hvc1 → MSE 三级降级链、392 行零依赖的 fMP4 封装器,以及 Chrome 给的三个「惊喜」:单帧段拒收、duration=Infinity 变 1fps、假时间戳 0.7 倍慢放。VisionFive 2 摄像头硬编串流实战(四):右下角黑块悬案——split_annexb 吃掉的 3 个字节右下角一块 3×2 CTU 的纯黑块,外加「只播关键帧」——两个症状,一个真凶:AnnexB 拆分函数的边界条件把每帧最后一个 slice 截掉了 3 字节。本篇完整记录这次从冤枉编码器到破案的过程。诺亚舟 NP1380 Qt GUI 开发(一):环境搭建与第一个程序在没有官方 SDK 的诺亚舟 NP1380 电子词典上搭建 Qt/Embedded 开发环境:QEMU 模拟器、SSH 通道、设备端编译,并写出第一个占满屏幕的原生窗口程序。诺亚舟 NP1380 Qt GUI 开发(二):打造原厂风格的界面用 QPE 原生标题栏、BlueStorm 主题和诺亚舟私有 NM 控件(复选框、按钮、滑块、蓝色滚动条),在 NP1380 上做出和系统自带软件一模一样的界面风格。诺亚舟 NP1380 Qt GUI 开发(三):ABI 兼容与滚动布局实战在没有原厂头文件的 NP1380 固件上安全调用私有库:从导出符号恢复最小声明、placement storage 对象构造、NMQWidget +0x9c 接口偏移、隐藏输入法符号绑定,以及 NMFollowList 滚动布局的完整实现方案。