视频的编码

现阶段最常见的 codec 是 H264 和 VP9,多数 4k 设备逐渐开始支持前者,而后者主要是 YT 的编码方式。H264 之所以比较普及是因为硬件方面的支持已经到位,相关软件可以调用对应的硬件实现编码解码。但是 H264 支持更高分辨率的视频能力是非常有限的。这导致了 H265 的工作,现在手头 HikVision 的监控摄像头与 Yi DashCam Ultra 是可以支持 H265 编码,但是其他的设备都不支持。相同的设置下,H265 可以比 H264 节省 1/3 左右的存储空间。

可是 H265 相关的硬件依然比较少,播放或者录制都还是主要靠软件实现,效率比较低下。需要知道的是 H265 与 H264 都是需要缴纳 royal fee 才能使用的格式,现有的厂商已经在 H264 上缴纳过费用,缺乏继续缴纳费用使用 H265 的动力。而尽管 Google 的 VP9 不需要费用并且提供与 H265 相当的压缩能力,但是获得的硬件厂商方面的支持却比较少,比如编码没有硬件支持,而解码在 Intel/ARM 上算有,但在 iOS 设备上却没有,这导致 VP9 编码速度非常的慢,甚至比 H265 还要慢。

Google 在 VP9 之后曾许诺开发 VP10,号称将压缩比进一步提高(文件尺寸缩小一半),但是由于业界存在一股统一编码格式的需求,这部分努力最终会体现到 AV1,这个格式据传能够显著 beat VP9。到今年 AV1 发布了它的参考软件实现以及 spec 1.0。

最后提一下的是 container format,H264/265 系列是 MPEG 组织自己的,他们也使用自己的 container MP4。而 Google 通过收购 On2 获得了 VP8 并在此基础上研发的 VP9 也使用了自己主推的 webm 格式封装,形成了一套 royal free 的格式,并且 AV1 也将被此格式支持,这部分工作很可能有希望替换掉 MPEG 那一套收取 royal fee 的做法,并形成新的工业界标准。但是至于业界卖不卖帐,我们拭目以待。现在看起来 AV1 主推公司都是软件公司,而其实现是否能满足要求进入获得更广泛的支持阶段,它需要拿到 IETF 的 NetVC 的背书,满足它提出的几个评判标准。

在 Linux 世界里,下面是几个提供这些支持的库:

  • libx264 提供的 H264 codec
  • libx265 提供的 H265 codec
  • libvpx 提供的 VP9 codec
  • libwebm 提供 webm 格式支持
  • AV1 的支持见这里
Advertisements
视频的编码

KeePass

终于开始了 KeePass 的迁移。原因大概是最早的单机版本策略在现在有点过时,随着 NAS 的加入,我们可以更加安全的共享自己的密码,从而在多个不同的设备上访问。这里又回到了多年以前在 Windows 里面就知道的 KeePass,这么多年了,似乎它还是这个领域不多的佼佼者。

我们这里提供两个数据访问方式:

  • Synology Drive:它可以选择单向或者双向同步,如果有的设备永远只读,那么可以选择单向同步;通过 Drive 多设备访问时,应该创建一个独立的目录作为单独的 sync task 存在,尽量不要使用比较黑科技的想法(比如 symlink 或者 mount –bind),这样多个设备就能比较容易的同步这一小部分文件
  • WebDAV,这需要在 NAS 上安装 WebDAV 服务器,开通 https 后通过 router 的 port forwarding 将其暴露在公网上,不少 KeePass 的客户端如果不能从 Synology Drive 获得,还是可以通过 WebDAV 完成同步的

Windows

Windows 的 KeepPass 是原生支持,功能最丰富,而群晖在 Windows 上的 CloudStation 客户端 Synology Drive 也是存在一个比较稳定的版本的,我们通过 drive 从 NAS 上 two way sync 密码文件夹到本地,然后再使用 KeepPass 打开该文件即可,可以修改文件(sync)也可以选择覆盖。

Mac

同样存在 Synology Drive,客户端可以选择 MacPass 这个免费的程序。不支持 WebDAV,但是也可以考虑使用 WebDAV 的 mount。

Android

通过 Keepass2Android Password Safe 这个免费的客户端通过 WebDAV 访问 NAS 上的密码文件。

iOS

通过 Synology Drive 与 KeepPass Touch 实现。后者可以选择 import 然后可以打开 iCloud 或者 drive 里面的文件,这时打开 drive 里面的即可。但是似乎免费版本有些限制,比较猥琐。

Linux

Synology Drive 也提供了 Fedora 和 Ubuntu 的 package,自用的 debian 可以使用 Ubuntu 搞定。客户端有 mono 的 KeePass 和 Qt 的 KeepPassXC,差别似乎不大,前者应该跟 Windows 下面的是一样的

KeePass

监控摄像头

老婆表示有监控摄像头会比较安全一点,于是稍微做了一点功课,据说 HikVision(海康威视)的比较给力,看了几个 YT 的 sample 觉得 4k 的成像质量不错,可惜美国不给卖,但是有 Lorex 贴牌在 costco 有个套装,包括

  • 6 个 8MP 的摄像头,似乎对应的是 4mm 镜头,PoE + bullet 的设计
  • 一个 NVR,带 2T 硬盘

但是后来发现这个版本似乎并不是给 HikVision 贴的,而是 Dahua。似乎 Aliexpress 上有海康威视单个摄像头卖,但是不带 cable,差不多一个摄像头也要 120$,算下来这个 costco 700$ 的套装(折扣已过期)还挺划算。不过不知道这个 NVR 和 Synology Surveillance station 谁更好用。这里必须要吐槽一下群晖这个软件的收费,我一开始并没有注意到,一个 NAS 支持多少 camera 并不是完全由硬件的能力决定的,不同型号现在收费的标准也不一样:DS918+ 仅仅带有两个 free license(意味着支持两个摄像头),而每额外增加一个摄像头需要支付大约 50$ 的许可费。美国人的住宅如果安装摄像头,两个一定是非常紧迫的,毕竟多数 house 都是几个出入口。一个 4k 的摄像头才 100+ 为了使用它还要再付 50?难怪一群用户都在骂群晖这个定价,买了 NAS 本身就有一定的溢价,那么多的钱自然就是为了支持群晖继续开发上面的配套软件了,然后还要为每个多加的摄像头继续收费?要是每个多收 5$ 也就算了,50$ 真的吗?好在也有别的软件做同样的事情。

这种户外的摄像头大约三种风格:

  • bullet 子弹
  • dome 圆顶
  • turret 炮塔

老婆比较喜欢 bullet 据说比较有威慑力,但是看说法现在好像大家都更喜欢 turret,相对占用空间小,圆顶的玻璃罩子据说对红外成像有一定的干扰。不过这个绝对是仁者见仁的事情了,在 YT 上看到的有的人觉得 dome 不容易被蜘蛛网挡住,清理更为方便。

另一个重要的因素大概是 cabling:

  • 不少人选择 wifi 其实这个有一定的缺陷,或者 camera 需要使用电池,或者还是需要走电线,所以省了不了什么麻烦
  • 有的 camera 用的模拟信号,据说也能上 4k,没有试过。这个里面也有一个电源线的问题,有的 cable 据说也是数据电力一起的
  • 然后数字信号比较常见的就是 POE 的解决方案了,不过大部分 router 自己是不支持的,倒是 NVR 很多是自带 POE 和摄像头配套,也可以单独购买 POE 交换机,但是就是另一个开销了

摄像头的视频数据需要压缩编码,现在都到了 4k 的时代,如果不上比较新的 H265 的话都不好意思。相同码率下,比 H264 还是好不少。注意的是这些摄像头的帧率一般不会像 action camera 一样到 30fps 乃至 60fps(如 YI 4k+ action camera),不少只有 15-20fps。其实对于存储来说,如果能做到类似 VBR 编码的音频就更好了,但是现在还是必须得设置一个固定的 fps,个人感觉近一周数据有个 6fps 是够用的,一个月的话存个 1fps 也许就够了,谁会真的去看那些古老的视频,也没谁盯着荒郊野外的小区偷东西吧。不过把这些数据通过 timelapse 剪辑出来还是会比较有意思的吧。

这里我们可以看看下面几款摄像头:

  • Lorex LNB8005-C,这是 costco 套装里面带的 8MP 摄像头,支持 4k@15fps
  • Dahua IPC-HFW4830E-S,这理论上应该是一样的型号,很多性能指标是完全一样的
  • 海康威视 DS-2CD2085FWD-I,支持 4k@20fps

与传统 webcam 很大的不一样是它们其实都是自带操作系统(嵌入式 Linux),上电后可以提供一个 web interface,用来设置和管理每个摄像头的视频格式,视频存储方式,overlay 以及诸如 NTP 之类的信息,可以想象得到 Lorex 提供的带 NVR 的套装应该会在 NVR 上简化单个摄像头的配置(比如批量配置),而且它们都支持多种协议获得视频信息(HTTP 和 RSTP 是比较常见的),能够建立监测区域发现运动并触发警报,并且通过 DDNS 建立 internet 访问。当然这个界面是需要登陆的(LNB8005 默认的用户名密码为 admin:admin)。从某种角度上来说,即便没有 NVR,它们也可以单独的完成简单的任务,比如通过 tf 卡提供一个短期的存储空间即可。

Lorex LNB8005-C 红外成像

NVR 只是为了将这些数据更好的保存下来,提供一个一致的用户接口,而不是单独为每个 camera 提供一个 live view。群晖的 surveillance station(简称 SS)也是看中了这个功能而设计的。但是有一点区别的是谁主导视频的存放:

  • 我们可以将 NAS 打开 诸如 NFS 或者 FTP 功能,配置 ipcam 上传视频数据
  • 也可以让 SS 配置好获取视频的 URI,让 SS 主动 pull

后者给人一个管理的感觉,之后一切都可以通过 SS 及其配套的 app(DS Cam)完成了。Lorex 并不在 SS 支持的 camera 列表中,但是其 web 界面上可以看到对应 RSTP 的 url pattern,因此可以在 SS 里面通过添加一个 user defined 的 camera,把端口换到 554,这样 SS 也可以获得视频信息,之后就可以配置存放数据的大小之类的东西了。使用 SS 额外的好处是可以在 NAS 上进行行为检测,理论上 NAS 的处理能力还是远远高于 camera 自带的处理器,因此可以使用一些高级的 model 作出更好的判断。不过个人不会想额外负担 camera license 的费用了。

和 cable 相关的,对 SWE 来说更困难的大约是布线:

  • 户外寻找合适的安装位置(与摄像头的形状和视角有关系,也与走线的可能性有关系)
  • 走线其实在房屋设计的时候是留有空间的,传说中的 attic,检查了一下自家的 attic 还算干净,不过里面很多 insulation 材料什么的,一旦打开了和外界的接口,最终还需要把那里通过某种方式封起来,避免损失热封闭和虫、鼠的入侵。
  • 因为 POE switch 还是需要连回 router 的,所以这两个之间可能也需要考虑布线什么的问题。

总而言之,工程的问题不仅仅在于软件。

监控摄像头