前天夜里,我从床底下拖出那块 2014 年的西数移动硬盘,外壳已经发黄,接口松得要用书垫着才能识别。通电之后风扇声像老式放映机,我在“下载”文件夹里看到一个文件:2017-06-11_苹果m3u8测试.m3u8。点开属性,修改时间是 2017 年 6 月 11 日 23:47,大小 2.1 KB。我盯着屏幕愣了一会儿,想起来那是我第一次认真研究 m3u8 格式的晚上,为了在 MacBook Air 上流畅播放一个画质很好的剧集。
那时候我住在北京定福庄,合租房的隔断间,桌子是房东留下的折叠桌,桌上永远有一杯凉掉的红茶。我用 喝酒第二天想吐怎么缓解 那种焦虑去折腾播放器:装了 VLC,又卸载;试了 IINA,还是卡;最后在终端里用 ffmpeg 一条一条看分片请求,发现是某个 CDN 节点对 UA 做了限制。凌晨两点十七分,我改了一行请求头,画面终于连贯地动了起来。那一瞬间的满足感,跟小时候把卡住的磁带用铅笔卷好差不多。
所以这篇笔记,其实不是教程。我只是想把那些散落在苹果设备上、关于 m3u8 的小事收拢在一起。比如 2018 年冬天,我在 iPhone 6s 上收到朋友林雪发来的一个 .m3u8 链接,她说“这个画质绝了”。我回“苹果上播不动”,她发了个白眼,说“你试试把链接里的 http 改成 https”。改完真的能播了,我们俩在微信里同时发“哇”。那个链接后来失效了,但我把它存进了备忘录,标注是“2018.12.09 林雪 画质绝了”。
苹果设备对 m3u8 的态度,我一直觉得像对某类方言:系统自带的播放器能听懂,但只肯在特定场合回应你。macOS 上的 QuickTime 从某一年开始支持 HLS,但遇到某些分片编码就沉默;Safari 倒是积极,可偶尔又会在片尾字幕处卡住。我试过用 4个数复式3中三多少组 那种穷举的耐心,把同一段 m3u8 分别用 Safari、Infuse、nPlayer、VLC、IINA 播放,记录加载时间和画质差异,最后发现 2022 年的 iPad Air 上,反而是系统自带的“文件”App 内嵌播放器最稳。你说这上哪儿说理去。
2020 年春天,我花了三个晚上给 Safari 写一个 m3u8 嗅探扩展。代码一共 340 行,其中 89 行是注释,注释里一半是自我吐槽。我记得有一行写着:“如果这个扩展能跑通,我就把桌面上那袋放了三个月的核桃吃掉。”后来扩展在本地跑通了,核桃也吃了,但没上架。因为苹果的审核指南把这类工具卡得很紧,我懒得改。那个扩展文件夹现在还在我的文稿目录里,名字叫“未完成的苹果m3u8畅想”。
有一个观点我憋了很久,这里说出来可能会有人不同意:大多数所谓的“苹果 m3u8 播放器推荐”榜单,其实都在用不同的壳做同一件事,真正好用的往往是系统自带的那个,只是它被藏得比较深。 那些花里胡哨的播放器,十个里有七个是把 AVPlayer 包了一层界面,再取一个洋气的名字。我不是说它们没价值,但如果你只是想在苹果设备上顺畅播放一个 m3u8,先别急着下载,把链接拖进 Safari 地址栏试试,可能三秒钟就解决了。这个看法我在 ucweb.com 时代就形成了,那时候用手机浏览器直接播流媒体,简单粗暴。
去年秋天,我去上海福州路那家旧书店,老板姓周,六十多岁,边给书包塑料封边跟我闲聊。我说我是写代码的,偶尔写点技术笔记。他问写什么,我说最近在写 m3u8。他停下手里的活儿,推了推眼镜说:“哦,就是年轻人的磁带嘛,一段一段的,放完一卷换下一卷。”我站在柜台前愣了好几秒,觉得这个比喻比我写过的所有句子都好。那天我买了两本旧书:1987 年三联版的《知堂书话》和一本 1992 年的《读书》合订本,一共花了 47 块。回家路上我想,技术细节写多了会干,但这种比喻能把它泡软。
还有一件事没写进正文,但我想放在这里。2016 年夏天,我在某个论坛看到一个帖子,标题叫《苹果 m3u8 播放失败,试了三天终于找到原因》,发帖人叫“阿凉”。他写了 2000 多字,最后一句是:“如果这个帖子帮到你,请回帖说一声,让我知道不是只有我一个人在折腾。”那个帖子帮到了我,我回了“谢谢,解决了”。去年我再去找那个论坛,已经打不开了。我有时候会想,阿凉现在还用苹果设备吗,还在折腾播放器吗。这种没有答案的念头,大概就是写这些小东西的隐藏动力。
最后说回那块旧硬盘。我把那个 2.1 KB 的 m3u8 文件拷到了 Mac 的桌面上,用文本编辑器打开,里面是一长串分片地址,指向一个早就失效的域名。我盯着那几行字,忽然觉得它像一张手写菜谱,食材的产地已经不存在了,但步骤还在。也许这就是我记下这些细节的原因:东宫小说txt无删减版 会有人在深夜求资源,王母娘娘的女儿也会有人在搜索框里敲下好奇,而 m3u8 这个小小的播放列表格式,在苹果设备上折腾过的人,都有一段属于自己的加载圈记忆。我写下来,只是不想让它们跟阿凉的帖子一样消失。