将PaddleDetection识别图像推流到浏览器
2024-10-22 14:52:45
将PaddleDetection识别图像推流到浏览器
经过之前的学习,我们已经能成功将人脸的是否瞌睡特征识别处理了。那么下面我们即将介绍使用ffmpeg将识别后的内容推送到RTMP服务器(SRS),并且使得客户端能浏览识别结果。
这一步是非常关键的,因为它将允许您将实时的识别结果传送到在线平台,使您能够实时监测和分享这些信息。通过将识别的内容流式传输到 RTMP 服务器,您可以为客户端提供一个实时、可视化的接口,以便他们能够及时了解到人脸瞌睡特征的状态。
在接下来的过程中,我们将优化流程,确保识别结果能够顺利传送到 RTMP 服务器,并且为客户端提供一个用户友好的界面,以便他们能够轻松地浏览和访问这些重要的识别信息。这将有助于提高监测和管理人员瞌睡情况的效率和准确性。
ffmpeg安装
FFmpeg(Fast Forward MPEG)是一个开源多媒体框架,它提供了一组用于处理音频、视频和多媒体数据的工具和库。FFmpeg 可以执行多种多媒体处理任务,包括:
- 音频和视频编解码: FFmpeg 可以用于将音频和视频从一种格式转换为另一种格式,包括不同的编解码器和容器格式。它支持许多常见的音频和视频编解码器,如H.264、H.265、AAC、MP3等。
- 流媒体处理: FFmpeg 可以用于处理和转码实时音频和视频流,以便进行实时流媒体传输。这使得它非常适用于视频会议、直播流、视频监控等应用。
- 图像和音频处理: FFmpeg 支持图像和音频处理,包括剪切、裁剪、调整大小、合并、提取、添加字幕、水印等操作。
- 屏幕录制: FFmpeg 可以用于屏幕录制,捕获计算机屏幕上的活动并将其编码为视频文件。
- 多媒体信息检索: FFmpeg 还包含用于检索多媒体文件信息的工具,例如文件格式、编解码器详细信息、流信息等。
- 音频和视频编辑: 虽然 FFmpeg 提供了基本的音频和视频处理工具,但它通常被用作底层库,供其他多媒体编辑软件和工具使用。
FFmpeg 是跨平台的,可以在多个操作系统上运行,包括Linux、Windows、macOS等。由于其强大的功能和开源性质,FFmpeg 被广泛用于多媒体应用程序、流媒体服务、视频编辑工具、视频转换工具等各种领域。它提供了丰富的命令行工具和API,使开发人员可以轻松地执行各种多媒体处理任务。
http://ffmpeg.org/download.html#build
https://www.gyan.dev/ffmpeg/builds/
修改推理代码加入推流
改造predict_video函数
修改PaddleDetection的deploy/infer.py文件约453行,加入以下代码:
1 | # 在顶部引入 |
改造后的代码
1 | def predict_video(self, video_file, camera_id): |
增加函数boxinfo
得到推理结果的标签信息以及对该标签的打分信息
1 | def boxinfo(np_boxes, labels, threshold=0.5): |
一段时间内出现瞌睡次数的累计
1 | import time |
Predict_video最终改造成:
1 | def predict_video(self, video_file, camera_id): |