这里主要讲下项目实践,前两篇已经介绍了利用ffmpeg、nginx推接流,现在假如你的项目是内网摄像头该怎么办呢,因为大部分情况下比如学校、库房这些地方的摄像头必然是内网,而且监控系统也基本会是在Windows上,如果你要接内网的视频流到你的算法端口,这个算法端口已经部署到你采购的新电脑中。下面拿本次实践的校园内网(摄像头为海康威视)对这种情况说明下:
1.准备
推流端:校园监控有个总控室,会有一台电脑接入了所有摄像头,首先肯定是要把ffmpeg配置到总控室这台电脑(Windows配置ffmpeg前两篇博客已经说明,不知道的去看下)
2.修改电脑IP
接流端:用一根网线插到所有监控都插的那个路由器上,保证在同一个网段下,电脑插上网线后可能会无法识别网络,需要配置IP,下面是配置IP的过程,在网络和共享中心点击 更改适配器选项
如果你的电脑在其它地方也用过肯定会有很多网络配置,但你接入了内网后在新的网络环境下肯定有一个是 未识别 的,这个未识别的应该就是你刚连入的电脑
在未识别的网络上右击 属性,接着配置IPV4,IP地址改成和摄像头一个网段,我项目所在学校的网段是172.18.xxx.xxx,所以这里我配置接入电脑IP为172.18.2.251,这个IP不要和众多摄像头中的任何一个重复,按tab键往下填的时候子网掩码自动生成的,不用管,最后一个默认网关和总控室那台电脑一样,打开那台电脑的同一个地方看下就行。
3.修改nginx配置
nginx配置的重要部分就是server里你需要指定刚才你修改的那个IP
我的配置如下,记得改成自己的IP
worker_processes 1;
daemon off;
master_process off;
error_log logs/error.log info;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
application live {
live on;
}
}
}
http {
server {
listen 8080;
server_name 172.18.6.250;
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root html/nginx-rtmp-module/;
}
location /control {
rtmp_control all;
}
location /rtmp-publisher {
root html/nginx-rtmp-module/test;
}
location / {
root html/nginx-rtmp-module/test/www;
}
}
}
4.推流
推流我用的下面方式,这里我是将某一个摄像头的视频流往外推,不是所有,注意用户名和密码是被推摄像头的登录用户名和密码,这个需要跟学校那边的管理人员沟通要到,正常应该是每个摄像头都一样的,学校几百个摄像头不可能都单独设置,这里一定要分清摄像头用户名密码和管理员用户名密码,一开始学校工作人员给我的是管理员的用户名密码,要验证是否是摄像头用户名密码,直接在浏览器输入摄像头IP,登录下试试就行了,能登录则说明用户名密码没问题
下面中文标注的地方都要改成自己的,其它一般默认就行
ffmpeg -re -rtsp_transport tcp -i "rtsp:用户名:密码@摄像头IP:554/h264/ch1/main/av_stream" -f flv "rtmp://目标机器IP/live/test"
5.接流
前两篇有用python接流的代码,不再赘述(别忘了改代码里的IP)
雁过留声,人过留名,有用点赞,不要白嫖!