个人背景:野生写代码的,纯兴趣爱好,编码既不是工作,也不是科班,连培训班都是蹭网课。
需求:买了个小米的摄像头,不支持 ONVIF ,但是当视频录制到 128M 就形成文件,支持存到 smb 上,想写个 web 页面方便查看。后端 express ,前端 vue3 。简单说就是播放一堆 mp4 文件。
实现:视频录制格式是 hvc1+opus 。
1 ,开始用 video 来播放没问题。copilot 帮助下很快前后端搭起来,可以根据日期选择播放视频文件。
2 ,考虑安全,前后端都加了 jwt 认证,但是 video 请求视频文件不支持带 headers.Authorization token 。
3 ,咨询 copilot ,推荐转成 blob ,这样可以了带认证了,但是 blob 必须一次把 128M 都读回来才能播放。
4 ,再咨询 copilot 如何分片,推荐了 mediasource 配合 range ,实现快速播放。
5 ,copilot 再次提示 chrome 的 mediasource 实现不支持 hvc1 ,果然 chrome 提示不支持的类型;换了 safari 的确是可以不缓冲直接播放了。
6 ,copilot 建议在后端 ffmpeg 转码以后再推出来,可是后端只是台 J1900 ,转 4k 的码比播放速度还慢。这条路也不通。
7 ,copilot 又推荐了 m3u8 的切片方法,看起来挺复杂了,感觉搞不定。
现在只有退回原点,取消认证,直接用 video 播放。看看 copilot 的帮扶道路,你说他没用吧,后面每个知识点都是现学的,但是最后还是没解决问题。
|