一段有趣的代码行

主要观点:代码可以有趣且有创意,但有时需克制以免代码可读性差,偶尔有趣的解决方案是最好的。作者更新 Deno Audio Duration 包时想起一段有趣代码,可在原生 Deno 中获取 MP3 和 M4A 音频文件的毫秒时长且无依赖。获取时长的简单方法是通过 [Deno.Command]调用ffprobeexiftool,但依赖第三方二进制会使 Docker 镜像膨胀,MP3 文件无时长元数据需解析帧等后估计,M4A 音频等使用的容器规格有时长元数据,代码通过Promise.race设置两个异步调用搜索 MP4 头部,默认另一个 promise 会继续运行,用AbortController停止它,此代码虽不是最快但效果好,作者觉得竞速代码的想法很有趣,可多于两个 promise 竞速,最后呼吁享受编码。

关键信息:

  • 介绍代码的有趣与创作性及需克制。
  • 更新包时想起获取音频时长代码。
  • 两种获取时长方法及各自特点。
  • Promise.race的使用及作用。
  • AbortController的应用。

重要细节:

  • [Deno Audio Duration]包的更新及相关链接。
  • MP3 无时长元数据及处理方式。
  • M4A 时长元数据位置及搜索方法。
  • Promise.race中两个异步调用的方向。
  • AbortController停止多余 promise 的方式。
阅读 12
0 条评论