大华海康摄像头视频拉流

流程

 

 

技术

海康&大华&DSS获取RTSP

实时流

海康:
rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
说明:
username: 用户名。例如admin。
password: 密码。例如12345。
ip: 为设备IP。例如 192.0.0.64。
port: 端口号默认为554,若为默认可不填写。
codec:有h264、MPEG-4、mpeg4这几种。
channel: 通道号,起始为1。例如通道1,则为ch1。
subtype: 码流类型,主码流为main,辅码流为sub。

栗子:

IPC

rtsp://admin:123456@192.168.18.105:554/h264/ch1/main/av_stream

NVR
rtsp://admin:123456@192.168.18.106:554/Streaming/Channels/101

说明:

101,第一个1代表通道,最后一个1代表麻溜。

大华:

rtsp://[username]:[password]@[ip]:[port]/cam/realmonitor?channel=1&subtype=0
说明:
username: 用户名。例如admin。
password: 密码。例如admin。
ip: 为设备IP。例如 10.7.8.122。
port: 端口号默认为554,若为默认可不填写。
channel: 通道号,起始为1。例如通道2,则为channel=2。
subtype: 码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1)。

栗子:

rtsp://admin:admin@192.168.18.107:554/cam/realmonitor?channel=2&subtype=1

 

回放流
海康:
rtsp://[username]:[password]@[ip]:[port]/Streaming/tracks/101?starttime=20120802t063812z&endtime=20120802t064816z

说明:

101:1,表示通道1;01,表示以单播形式回放指定设备的通道中的录像文件

starttime:开始时间

endtime:结束时间

时间范围是starttime到endtime,其中starttime和endtime的格式要符合ISO 8601。

具体格式是YYYYMMDD”T”HHmmSS.fraction”Z” ,Y是年,M是月,D是日,T是时间分格符,H是小时,M是分,S是秒,Z是可选的、表示Zulu (GMT) 时间。

大华:

rtsp://[username]:[password]@[ip]:[port]/cam/playback?channel=1&subtype=0&starttime=2017_01_10_01_00_00&endtime=2017_01_10_02_00_00

说明:

username: 用户名。例如admin。
password: 密码。例如admin。
ip: 为设备IP。
port: 端口号默认为554,若为默认可不填写。
channel: 通道号,起始为1。例如通道2,则为channel=2。
subtype: 码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1)。

starttime:开始时间

endtime:结束时间

大华DSS:

rtsp://[ip]:[port]/dss/monitor/params?cameraid=设备编号%24通道号&substream=码流类型

说明:

[ip]:[port]:来自大华DSS媒体网关MGW

设备编号:平台上设备编号,例如1000004
通道号:设备下通道,从0(通道一)开始。
码流类型:1代表主码流,2代表辅码流

栗子:

rtsp://192.168.19.102:9090/dss/monitor/params?cameraid=1000112$0&substream=1

RTSP转RTMP实战

一、下载nginx-rtmp-ffmpeg集合

https://download.csdn.net/download/yiyu1/10829669

二、修改Nginx/conf文件夹下nginx.conf文件:

worker_processes 1;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
chunk_size 4000;
# TV mode: one publisher, many subscribers
application mylive {
live on;

}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

server {
listen 20000;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

 

三、启动Nginx

四、通过dos命令执行脚本

D:\ffmpeg\bin\ffmpeg.exe -re -rtsp_transport tcp -i "rtsp://192.168.19.102:9090/dss/monitor/params?cameraid=1000112$0&substream=1" -f flv -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 "rtmp://localhost:1935/mylive/1"

 

五、通过HTML访问rtmp

<!DOCTYPE html>
<html lang="en">
<head>

<title>Video.js | HTML5 Video Player</title>
<!-- <link href="video-js-6.2.0/video-js.css" rel="stylesheet">
<script src="video-js-6.2.0/videojs-ie8.min.js"></script> -->

<link href="http://vjs.zencdn.net/5.20.1/video-js.css" rel="stylesheet">
<script src="http://vjs.zencdn.net/5.20.1/videojs-ie8.min.js">>
</head>
<body>

<video id="example_video_1" class="video-js vjs-default-skin" controls preload="auto" width="1280" height="720" poster="http://vjs.zencdn.net/v/oceans.png" data-setup="{}">
<!-- <source src="1.mp4" type="video/mp4"> -->
<source src="rtmp://localhost:1935/mylive/1" type="rtmp/flv">
<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
</video>
<script src="http://vjs.zencdn.net/5.20.1/video.js">>
</body>

</html>

 

注:需要运行flash

————————————————————

推荐阅读:

老王讲架构:负载均衡

支付宝系统架构内部剖析

大数据Spark与Storm技术选型

【赞】用Python实现Zabbix-API 监控

程序员怎么留住健康?

大数据智慧平台技术方案

大数据聚合平台解决方案

 

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要通过事件触发摄像头视频,你可以使用威视提供的SDK和API进行开发。 首先,你需要在威视设备上设置事件触发,例如移动侦测、人脸识别等。然后,在你的应用程序中,通过SDK连接到威视设备,并使用API来获取事件信息和视频。 以下是一个示例代码,可以通过移动侦测事件触发摄像头视频: ```python import requests # 威视设备的IP地址和端口号 ip = '192.168.1.100' port = '80' # 登录威视设备,获取登录session url = f'http://{ip}:{port}/artemis/api/login' data = {'username': 'admin', 'password': 'admin123'} response = requests.post(url, json=data) session = response.json()['data']['sessionID'] # 获取移动侦测事件列表 url = f'http://{ip}:{port}/artemis/api/eventService/v1/eventSubscriptionByEventTypes' headers = {'Content-Type': 'application/json', 'X-Auth-Token': session} data = {'eventTypes': ['isapi_thermal:VMD']} response = requests.post(url, headers=headers, json=data) event_list = response.json()['data'] # 获取最新的移动侦测事件ID event_id = event_list[0]['eventId'] # 获取事件的图片 url = f'http://{ip}:{port}/artemis/api/video/v1/eventPictures/{event_id}/picture' headers = {'X-Auth-Token': session} response = requests.get(url, headers=headers) # 获取事件的视频 url = f'http://{ip}:{port}/artemis/api/video/v1/cameras/1/previewURLs' headers = {'Content-Type': 'application/json', 'X-Auth-Token': session} data = {'streamType': '0', 'protocol': 'rtsp'} response = requests.post(url, headers=headers, json=data) preview_url = response.json()['data'][0]['url'] # 播放视频 # ... ``` 在上面的示例代码中,首先通过SDK登录威视设备,获取登录session。然后使用API获取移动侦测事件列表,并获取最新的事件ID。接下来,使用API获取事件的图片和视频,并在应用程序中播放视频。 需要注意的是,威视设备的SDK和API可能会因设备型号和固件版本而有所不同,上面的代码仅供参考。在实际开发中,你需要参考威视提供的文档和示例代码进行开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值