利用ffmpeg推流到rtsp,再利用jmpeg在html界面上显示的解决办法
目录
需求
最近在百度飞桨上训练了一个摔倒识别的模型,用的PaddleDetection这个模型,训练好以后我部署到了Windows,但是我看大多数人都是部署到了Linux,具体方法大家可以自行百度。
部署好以后我是使用摄像头进行实时识别的,但是我想要展示处理后的画面,这个我看了飞桨的官方介绍,是可以实现的,但是由于第一次没有好好看,所以就没有想到推流到rtsp的方式。我第一次是我的同学帮我写的,因为百度飞桨这个模型是用的帧处理,就是将结果处理成为一帧帧的图片,在一个while循环里不断的处理,我一开始通过在循环里写cv2.imshow的方式将不断加载的图片播放成视频,在我的同学的改造下变成了cv2.imwrite,把图片保存到本地然后在用python代码读取生成视频,因为图片是不断变化的,他还用qt帮我写了个界面,真的,哭死!(别问我为什么不自己写,问就是还没学)
但是解决了画面的问题又一难题来了,摔倒识别用的python代码,我的网页是javaweb,我怎么能将这个画面在web里显示出来呢?我去百度了,百度到一些解决方法,比如websocket,但是很遗憾,我没解决成功,于是我就去问老师,武老师给我提供了一些方法,老大也给我提供了一些方法。
- 使用Flask来编写界面,但是由于时间紧迫,所以没有时间在学习新技术,所以Pass
- 使用qt写成软件的方式,理由同上,Pass
- 将视频保存在本地再读取,无法实现实时性,Pass
- 保存到数据在读取,同上,Pass
- 边保存边读取,百度了一下,实现不了我暂时,Pass
- 武老师说搜索网络直播,在老师的帮助下找到了一条路,就是推送视频流到rtsp,在用vue来读取,武老师还帮我查阅了很多资料,他真的,我哭死!
既然路已经找到,剩下的就是如何实现的问题了。
在python代码里推流到rtsp
首先自然而然的就是去搜索如何推流到rtsp,这里要感谢武老师提供的博客:传送门。
使用的工具是ffmpeg,它的作用就是将视频推送到rtsp上面,将本地视频变成一种网络流,但是我们需要下载一个工具提前,无需安装,直接打开即可:工具传送门。这个根据系统自行下载,我下载的是windwos的,里面有一个 .exe
文件,双击打开就会运行,不打开这个软件你是无法使用ffmpeg推流到rtsp的。
可以看到软件成功运行,ffmpeg需要配置环境变量,教程很多,大家自己百度,ffmpeg下载的传送门放这里了:ffmpeg官网。
现在我们只需要重新打开一个cmd,输入以下命令:
ffmpeg -re -stream_loop -1 -i "D:\Code\Python\Pycharm\innovation\PaddleDetection\output_inference\down.mp4" -c copy -f rtsp rtsp://127.0.0.1:8554/test |
上述指令的意思就是将本地视频推流到一个rtsp上面,rtsp地址为rtsp://127.0.0.1:8554/test,其中有一个参数的作用是循环播放,大家可以自行学习相关参数。出现这个画面就是说明推流成功了:
接着我们可以先用vlc播放器来验证一下,vlc播放器请自行下载安装,地址:传送门。怎么用vlc播放器播放rtsp流视频的方法也请自行百度,可以看到我们成功播放出来了。
标签:视频,12,ffmpeg,rtsp,Pass,推流,百度 From: https://www.cnblogs.com/dmx-03/p/18638829