马上注册,分享更多源码,享用更多功能,让你轻松玩转云大陆。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
一、目的
从OpenCV中读取帧后,一方面对帧进行其他处理,同时把获取的帧推送到rtmp服务器实现直播。
二、docker中搭建rtmp服务器
本文忽略怎样安装docker,docker的命令等。
(一) 拉取rtmp镜像并运行
我用的是 jun3/rtmp 这个镜像(GitHub地址是:https://github.com/jun3372/rtmp)
[DISCUZ_CODE_0]
(二) rtmp服务器的简单操纵运行镜像后在浏览器地址栏输入:127.0.0.1:8080即可看到这个界面:
053534tf9ev9vsv13ww33p.png (50.85 KB, 下载次数: 0)
2020-2-4 05:35 上传
不过可能是我浏览器的缘故,即使在推流时也无法播放。
在浏览器地址栏输入:127.0.0.1:8080/stat 可查看rtmp服务器当前推拉流的情况。
没有视频流推送时是如许的:
053535s2jqt8tto295ft5q.png (77.63 KB, 下载次数: 0)
2020-2-4 05:35 上传
有视频流推送时是如许的:
053535pnn4191i941sxbj4.png (290.77 KB, 下载次数: 0)
2020-2-4 05:35 上传
(三) FFmpeg推流验证
怎么装FFmpeg就忽略过了。我是从ARM嵌入式主机推流的,Ubuntu18的操纵体系。在终端中用此命令推流:
[DISCUZ_CODE_1]
命令中有很多参数,我并不完全清楚。需要根据实际情况修改的如下:参数说明-s 640x480推送给服务器的视频流画面的分辨率
-i /dev/video10推送哪个摄像头拍到的画面,我的是10
rtmp://1.2.3.4:1935/stream/pupils_tracertmp服务器的地址。其中1.2.3.4应该为实际rtmp服务器地址;stream是固定的,应该是刚才那个docker镜像中写死了;pupils_trace想怎么写都行,写什么在rtmp服务器后台就看到什么
三、python中进行推流为了和其他python程序较好的联合,同时又尽可能淘汰对原有代码的改动,我单独做成一个类。
采用多进程方式处理(python自带的multiprocessing模块实现)
(一) 实现思路通过队列从外部获取需推送的内容,包括帧和其他相关信息
如果有必要,则在推送前做一些画面处理
多进程daemon方式后台推送,不影响其他程序
(二) 代码
四、vlc拉流软件看直播
直接按界面顺序上图。
053536r0p6l12894i29xhx.png (94.77 KB, 下载次数: 0)
2020-2-4 05:35 上传
053536cxpjbh7hh8ddj752.png (80.58 KB, 下载次数: 0)
2020-2-4 05:35 上传
053536tw5wwf1yozfywy51.png (104.39 KB, 下载次数: 0)
2020-2-4 05:35 上传