如何将网络摄像头视频流传输至AWS Kinesis并对接Rekognition实现实时人脸识别?
我之前也踩过这个坑,当时折腾了好一阵才弄明白怎么把实时数据流接入Rekognition,给你梳理几个可行的方案,都是我实际用过的,应该能帮到你:
实时数据流接入AWS Rekognition的核心方案
官方最推荐的实时人脸识别路径是Kinesis Video Streams(KVS)+ Amazon Rekognition Video,这是专门针对实时视频流设计的集成方案,拆解下具体操作步骤:
1. 搭建KVS作为实时数据流管道
- 先在AWS控制台创建一个KVS流,记好流的ARN和名称,后面要用到。
- 把你的实时视频源(比如Web摄像头、IP摄像头、直播推流设备)推送到这个KVS流:
- Web端可以用AWS官方的
aws-kinesis-video-streams-webrtc-sdk实现摄像头推流,核心逻辑是获取媒体流后通过WebRTC连接推送到KVS; - 硬件设备可以用KVS Producer SDK(支持C++、Java等语言)来完成推流。
- 给个Web端的极简代码示例:
const client = new KinesisVideoClient({ region: '你的AWS区域' }); const signalingClient = new SignalingClient({ client, channelARN: '你的KVS通道ARN', }); // 省略获取摄像头媒体流、建立WebRTC连接并推流的细节,SDK文档里有完整示例
- Web端可以用AWS官方的
2. 创建Rekognition Stream Processor处理实时流
这是实现实时识别的核心步骤,让Rekognition自动监听KVS流并分析每帧画面:
- 确保你已经创建了Rekognition人脸集合(Collection),用来存储待识别的目标人脸;
- 通过AWS CLI或控制台创建Stream Processor:
这里的aws rekognition create-stream-processor \ --name "你的StreamProcessor名称" \ --input "KinesisVideoStream={Arn='你的KVS流ARN'}" \ --output "KinesisDataStream={Arn='你的Kinesis Data Stream ARN'}" \ --settings "FaceSearch={CollectionId='你的人脸集合ID',FaceMatchThreshold=80}" \ --role-arn "你的IAM角色ARN(需要具备KVS读取、Rekognition操作、Kinesis Data Stream写入权限)"Kinesis Data Stream用来接收Rekognition的识别结果(比如匹配到的人脸ID、置信度),后续可以用Lambda或EC2消费这个数据流做业务处理。
3. 启动Stream Processor并验证结果
- 启动创建好的Stream Processor:
aws rekognition start-stream-processor --name "你的StreamProcessor名称" - 可以通过Kinesis Data Stream控制台查看识别结果,或者用Lambda触发处理,比如Python代码片段:
import base64 import json def lambda_handler(event, context): for record in event['Records']: payload = base64.b64decode(record['kinesis']['data']) result = json.loads(payload) if 'FaceSearchResponse' in result: for face_match in result['FaceSearchResponse'][0]['MatchedFaces']: print(f"匹配到人脸ID:{face_match['Face']['FaceId']},置信度:{face_match['Similarity']}")
其他备选方案(适配特定场景)
- 如果你的源是RTMP直播流,可以用AWS MediaLive + MediaPackage + Rekognition Video:先把RTMP流导入MediaLive转成HLS格式,再用Rekognition分析HLS流,缺点是延迟比KVS高,适合非超低延迟场景;
- 如果是低频率的单帧识别(比如每秒拍一张照片),可以直接用Lambda触发S3上传/MQTT消息,调用Rekognition的
SearchFacesByImageAPI,这种方式更简单,但不属于纯视频流处理。
常见坑点提醒
- 权限问题:IAM角色必须赋予足够权限,否则会出现Stream Processor启动失败或无识别结果的情况;
- 延迟控制:KVS+Rekognition的延迟大概在1-3秒,如果需要更低延迟,可以考虑在边缘端(EC2/Greengrass)先做帧筛选,再把关键帧传给Rekognition;
- 人脸集合更新:如果新增/删除人脸,要及时同步更新集合,避免识别结果不准确。
内容的提问来源于stack exchange,提问作者nukalov
相关产品推荐
相关产品推荐

