摄像头视频推流python_python中用FFmpeg向rtmp服务器推流,实现摄像头直播

马上注册,分享更多源码,享用更多功能,让你轻松玩转云大陆。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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 上传

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值