DEAD MAN CODING

FOOOLING.COM

IPTV 隔一阵卡一下,最后查出是内核把接收缓冲偷偷砍了一刀

2026-06-15 23:30:40

家里的 IPTV 是组播流,中间挂了一台树莓派双网卡当网关:一头收运营商的组播 UDP,另一头用 msd_lite 把它转成 HTTP 单播,局域网里谁想看就拉一条 http://pi:8888/rtp/...。平时挺好,但有个让强迫症抓狂的毛病:看上半小时到几个小时,画面会冷不丁卡一下、糊一小会儿,然后又自己好了。频率不高,可一旦盯上就忍不了。


麻烦的是,我手边能折腾的这台机器 CPU 太弱,根本放不动这流;能解码的机器又在别处。也就是说我没法"边看边定位"。那干脆就别看了——我把流直接往 /dev/null 里灌,谁也不放,只盯着它的传输层数据,从带宽、丢包、数据完整性里反推到底是哪儿出了问题。


思路其实很简单。画面卡顿逃不开三种原因:带宽不够、丢包、或者数据本身坏了。好在这三样在 MPEG-TS 流里各有各的信号,互不串味——带宽看每秒吞吐稳不稳,丢包看每个 PID 的连续计数器(CC)有没有断,数据坏没坏看包头那个 TEI(传输错误指示)位有没有被上游置起来。把这三个数摆出来,是哪一类基本一眼就分得清。


先用 ffprobe 瞄了一眼这是什么流:H.264、1080i、MPEG-TS,码率大概 9 Mbps 上下,近似恒定。然后写了几十行 Python,curl 用管道把流喂进来,按 188 字节一个包切开自己数:逐 PID 记 CC 断裂当丢包,看 TEI 位当坏包,再按秒累加字节当吞吐。挂了半个钟头。


数据出来,方向指得很干脆:

吞吐    8.76 Mbit/s   (全程一条直线)
TEI     0 个          (没有坏包)
丢包    43 次 ...

阅读全文

六年后重开 blog:用 Claude 写了一个把微信变成万能通道的小项目

2026-04-21 15:54:00

上一次写 blog 是 2019 年,一晃已经六七年过去了。这段时间里 AI 的形态变了太多——从 GPT-3 出圈、ChatGPT 刷屏,到现在 Coding Agent 已经能替我写大半业务代码、重构老项目。既然这波浪潮这么猛,那就蹭一下热度,用一个最近刚落地的小项目记录点东西。


这次的主角是 wechat-clawbot-gateway——一个微信消息网关。定位很简单一句话:微信是通道,不是应用。下面讲讲它的思路、实现原理,以及我是怎么和 Claude 把它写出来的。


为什么要做这个

我家里跑着一堆零碎的小服务:HomeAssistant 控灯、QNAP 存资料、Transmission 下电影、一堆 IoT 传感器、再加上一些脑洞大开想跑的 AI Agent。它们各自都有告警和交互的需求,但各自的 App 分散、体验割裂。微信是我打开频率最高的 App,如果能把所有这些东西都"通到微信上",那手机端就有了一个统一的控制面板。

市面上的方案大多是"微信机器人 + 某个垂直应用"——比如只做 AI 问答,或者只做 HomeAssistant 通知。我想要一个更底层的东西:微信只负责收发消息,下游接什么业务,通过插件随便接。


整体架构

三层结构,每层职责干净:

WeChat User
    ↓ iLink 协议(腾讯 OpenClaw 公开 HTTP API) ...

阅读全文

Google相册有多智能

2019-03-12 06:41:33

周末难得出了一次太阳,正好测试一下谷歌照片的智能拼接功能(???)

随意对着某个方向大致按照大疆云台的顺序手动拍了6张,上传google相册后,2小时内果然拼接出一张完整的图片。  个人认为还行,能部分取代云台功能了。

于是又试了下更大范围的全景,结果并没有给我拼上。看来google照片的全景功能也是全靠随缘啊。

阅读全文

年轻人应该住怎样的酒店

2019-03-12 06:08:49

这周入住了citigo酒店,整体感觉就是一个互联网场景的酒店:早饭供应到12点,每天供应2罐无糖可乐,深夜食堂羊肉串,微信控制电器(已失效),汉斯格雅飞雨,跃层房型....  挺有意思的,比较适合年轻旅客...

阅读全文

用Apple TV看电信IPTV

2018-07-06 03:50:09

(有点标题党,我不是针对谁,我这里说的是所有平台播放电信IPTV的方法)

世界杯期间,如何看球是大家会遇到的一个问题。选择有很多:咪咕、优酷、电信机顶盒播放IPTV等。

我家的机顶盒是悦盒,看了下规格,最大能支持到2160p@30HZ,当然对于直播信号1080P@30HZ来说绰绰有余,但无法解决以下问题:


1. 60HZ的电视,30HZ的输出界面一定会感觉很卡顿, 而换成1080P@60HZ又感觉自己亏了 
2. 色彩,悦盒的整体色彩不如Apple TV 4K的HDR模式(可能是心理作用) 
3. 多客户端同时看(Emmmm..)


配置过程稍有复杂,首先理解一个事情,IPTV在悦盒上能看是因为悦盒主动发起了DHCP请求,去获取了一个IP地址,而IPTV的网络里面,视频信号没有加密,只要知道视频源IP,就能直接播放走起」。


以下的方式,也自然是通过模拟这个请求,去获取IP地址。

悦盒的IPTV网络IP获取认证抓包是:

Bootstrap Protocol
    Message type: Boot Request (1)
    Hardware type: Ethernet (0x01)
    Hardware address length: 6
    Hops: 0
    Transaction ID: 0xaaaaaaaa
    Seconds elapsed: 0
    Bootp flags: 0x0000 (Unicast)
        0... .... .... .... = ...

阅读全文

友情链接