如何在 h.265 视频流中抓取到人脸并生成图片

如何在 h.265 视频流中抓取到人脸并生成图片

一、前言

现在的 web 需求也是越来越刁钻了。今天接到了一个奇怪的需求,要求在大屏播放实时直播的视频流,并且还要截取播放时段内一共出现了哪些人。

因此,首先第一步我们要先把视频流在 web 界面中播放出来,不然啥都白瞎。

当视频流播放出来了,我们再来思考抓取人脸的能力。

二、视频流播放

1、视频流介绍

如果还未接触过视频流的小伙伴肯定对视频流很陌生,那我们就来快速简单的了解一下视频流是什么东西。

视频流逝一种实时通讯技术,就是生成一段在线的链接,渲染在 web 界面上,实时传播别处视频或者直播的内容,你也可以理解为直播。

我们常见的视频流后缀有 m3u8,mp4,rstp,rtmp 等等。

rstp,rtmp 通常不适合在 web 上进行播放,因为浏览器限制、协议不兼容等。

因此我们可以用 m3u8,mp4 来进行开发。这个后缀可以让后端来处理,哪怕是 rstp,rtmp 的格式,也能通过转码来实现。

2、视频流格式

好了马上进入开发。。。等等先别急,我们需要先知道先视频流有哪些格式,我们使用的插件能否这些个时代的播放。

百度文心一言一下马上就知道视频流有 H.264H.265 两种编码格式。

  • H.264 是目前最广泛使用的视频编码,以其高效的压缩性能、良好的网络适应性和广泛的兼容性而备受推崇。
  • H.265H.264 的继任者,保持相同视频质量的前提下,能够实现更高的压缩比,从而进一步降低网络带宽的占用。

简单的说就是 H.265 更新,更牛。

目前市面上能查询得到的 web 播放插件几乎都只能支持 H.264。我这里实现过 vue-video-player 这款插件,有兴趣的小伙伴的小伙伴百度下使用教程,百度上说的可比我更详细,这不是今天的重点。

那如何能够能够既支持 H.264 又支持 H.265 的插件呢?在我查得快要放弃的时候,@easydarwin/easyplayer 这个插件竟神奇般的播放出来。

3、视频流播放

# 依赖安装
npm install @easydarwin/easyplayer

这个插件安装完可不算完,还需要一步最重要的 copy 功能,这一步决定了你视频流能不能正常播放。

copy node_modules/@easydarwin/easyplayer/dist/component/EasyPlayer.swf 到 静态文件 根目录
copy node_modules/@easydarwin/easyplayer/dist/component/crossdomain.xml 到 静态文件 根目录
copy node_modules/@easydarwin/easyplayer/dist/component/EasyPlayer-lib.min.js 到 静态文件 根目录

就是把 node_modules 对应路径下的这三个文件放到项目中的根目录下。

最后在 index.html 下引入这三个文件:

<script src="./EasyPlayer-lib.min.js"></script>
<script src="./crossdomain.xml"></script>
<script src="./EasyPlayer.wasm"></script>
<EasyPlayer
    style="width: 750px; height: 500px"
    :videoUrl="`http://cdn3.toronto360.tv:8081/toronto360/hd/playlist.m3u8`"
    aspect="16:9"
    live
    :fluent="true"
    :autoplay="true"
    video-id="videoElement"
    ref="easyPlayerRef"
    stretch
></EasyPlayer>

使用过于简单。这里提供几个可用的视频流用于小伙伴们测试。

  • http://kbs-dokdo.gscdn.com/dokdo_300/definst/dokdo_300.stream/playlist.m3u8
  • https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/hls/xgplayer-demo.m3u8
  • http://cdn3.toronto360.tv:8081/toronto360/hd/playlist.m3u8

三、手把手教你人脸抓取

百度一查有且只有 face-api.js 提供了该能力,或者说是应用最广的插件。

yarn add face-api.js

在使用前我们还要引入对应的识别模型,这些模型是开发者通过测试实现的模型,当然我们可以对模型进行修改,不过我没改,因为我看不懂~

官方 gitHub 提供了这些模型,我们只需要将这些模型下载下来,并同样复制到静态文件根目录下就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值