海康威视RSTP摄像头视频数据从内网读取在web用HLS播放
环境:海康威视录像机DS-7804NB-K1/4P,Ubuntu16.04
录像机内网地址192.168.100.99,一个摄像头接在4号口(32口以下通道号从33开始),摄像头内网地址 192.168.1.64,服务器内网地址192.168.100.75,测试PC192.168.100.83
1.摄像头取rtsp流、VLC或EasyDarwin串流
从摄像头直接取RTSP流 rtsp://admin:123456@192.168.1.64/Streaming/Channels/1
从录像机取摄像头RTSP流 rtsp://admin:123456@192.168.100.99:554/h264/ch36/main/av_stream
VLC:
sudo apt-get install vlc,
媒体->流->网络->输入摄像头RTSP流->串流->地址rtsp://admin:123456@192.168.100.99:554/h264/ch36/main/av_stream->激活转码、Video-H.264+MP3(MP4)->流->端口5580,路径/hiktest/h264/ch36/main
则流网络地址为rtsp://192.168.100.75:5580/hiktest/h264/ch36/main
EasyDarwin:https://github.com/EasyDarwin/EasyDarwin/releases
下载EasyDanwin,直接解压,sudo bash start.sh
浏览器访问localhost:10008配置推流
输入rtsp://admin:123456@192.168.100.99:554/h264/ch36/main/av_stream
输出/hiktest/h264/ch36/main
则流网络地址为rtsp://192.168.100.75/hiktest/h264/ch36/main
以下步骤以EasyDanwin串流地址为例
2.nginx+ffmpeg将rtsp流转为hls流
安装nginx和rtmp模块(需更新Ubuntu源,nginx需1.14以上才能直接apt安装rtmp的mod):
sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
sudo apt-get install nginx
sudo apt-get install libnginx-mod-rtmp
sudo mkdir /HLS
sudo mkdir /HLS/hls
sudo chmod -R 777 /HLS
sudo chmod -R 777 /HLS/hls
cd /etc/nginx
sudo vi /etc/nginx/sites-enabled/default
在http的server内部加入
location /hls {#add_header 'Access-Control-Allow-Origin' '*' always;#add_header 'Access-Control-Expose-Headers' 'Content-Length';add_header Cache-Control no-cache;#if ($request_method = 'OPTIONS') {# add_header 'Access-Control-Allow-Origin' '*';# add_header 'Access-Control-Max-Age' 1728000;# add_header 'Content-Type' 'text/plain charset=UTF-8';# add_header 'Content-Length' 0;# return 204;#}types {application/vnd.apple.mpegurl m3u8;video/mp2t ts;}root /HLS;expires -1;}
sudo nginx -s reload
ffmpeg:http://www.ffmpeg.org/download.html
直接解压,运行
./ffmpeg -rtsp_transport tcp -r 25 -i rtsp://192.168.100.75/hiktest/h264/ch36/main -fflags flush_packets -max_delay 1 -segment_time 5 -an -flags -global_header -hls_time 1 -hls_list_size 3 -hls_wrap 4 -vcodec copy -y /HLS/hls/ch36.m3u8
P.S.这里先串流是因为我直接将原RTSP流做输入时会报错,有待再查证原因;后来出现过Invalid UE golomb code-1.0、pkt->duration = 0, maybe the hls segment duration will not precise、Cannot use rename on non file protocol, this may lead to races and temporary partial files等问题,不太记得具体怎么解决的,注意apt-get install ffmpeg的版本过旧,hls_wrap要比hls_list_size大,最好用-r指定fps
3.web客户端
HTML中嵌入
<script src="https://cdn.jsdelivr.net/hls.js/latest/hls.min.js"></script>
<video id="video" style="width:100%;" controls></video>
<script>var video=document.getElementById('video');if(Hls.isSupported()){var video = document.getElementById('video');var hls = new Hls();hls.loadSource('http://192.168.100.75/hls/ch36.m3u8');hls.attachMedia(video);hls.on(Hls.Events.MANIFEST_PARSED,function() {video.play();});}else if(video.canPlayType('application/vnd.apple.mpegurl')){source=document.createElement('source');source.setAttribute("type","application/vnd.apple.mpegurl");source.setAttribute("src","http://192.168.100.75/hls/ch36.m3u8");video.appendChild(source);}else{alert("not support!");}
</script>
更新:
nginx在nginx.conf配置rtmp模块:
rtmp{ server{ listen 1935; chunk_size 1024; application live{ live on; } } }
rtsp转rtmp:
ffmpeg -re -rtsp_transport tcp -i rtsp://admin:123456@192.168.0.99:554/h264/ch36/sub/av_stream -f flv -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://localhost:1935/live/stream
参考链接:
https://www.dreamvps.com/tutorials/hls-and-nginx-on-ubuntu/
https://www.cnblogs.com/Jim-william/p/7991928.html
http://mufool.com/2016/08/01/hls-ios-profile/
海康威视RSTP摄像头视频数据从内网读取在web用HLS播放相关推荐
- 用apache反向代理解决单外网ip对应内网多个web主机的问题
用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...
- [转]用apache反向代理解决单外网ip对应内网多个web主机的问题
用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...
- 树莓派小车的4G遥控与视频回传(内网穿透)
目录 1.项目简介 2.工具 3.步骤 1.手机端 (1)设置ip和端口 (2)遥控界面 2.树莓派 (1)给树莓派配置公网环境 (2)树莓派进行内网穿透 (3)树莓派UDP监听 (4)树莓派视频回传 ...
- 树莓派摄像头使用 motion + frp内网穿透 实时视频显示
本文主要介绍motion的使用,frp内网穿透步骤. 一.准备材料 二.motion的下载安装 三.motion的使用 四.frp的下载安装 五.frp内网穿透服务器配置步骤 六.frp内网穿透客户端 ...
- rsync同步数据到内网
最近公司要求将IDC的APP日志备份到公司办公网内部,思前想后,结合以前学过的知识,决定用rsync直接推送,即从APP服务器上直接将日志推送到公司内网.这样避免了在生产服务器上额外安装更多软件而且只 ...
- 4.通过Opencv采集摄像头视频数据
VideoCapture() 虚拟采集器,一般设备号从0开始 cap.read() 读取视频帧 返回值有两个,第一个为状态值,读到帧为true 第二个值为视频帧 cap.release() 释放资源 ...
- 传统安防监控摄像头Onvif云台控制直播流如何转换成GB/T28181对接到国标视频平台公安内网
传统安防监控摄像头Onvif云台控制如何转换成GB/T28181 1.应用背景 2.部署流媒体服务 2.1.Onvif探测添加 2.1.1.通道编辑 2.2.视频广场播放 2.3.云台操作 3.GB/ ...
- Mac pycharm flask 用内网ip 运行 web
1. 菜单 run -> run 2. 选择,你要运行的 py 程序 3. 设置 Additional options: 为 --host=0.0.0.0 ,把 FLASK_DEBUG 的 ...
- 没有公网IP,怎么实现外网访问内网视频监控
以海康威视监控为例,先在内网部署好监控系统,通过本地浏览器输入监控设备管理地址,登录管理后台: 在管理后台可成功查看摄像头视频画面即内网监控系统搭建成功: 找到配置界面查看设备端口信息,记下HTTP访 ...
最新文章
- AndroidStudio 在工具栏上设置显示前进和后台的方法
- 区块链相关论文研读2 - vChain,关于可验证的查询
- [国家集训队]航班安排
- linux字符终端看视频,在Linux终端上看电影很酷吗?
- 敏捷个人架构图 V1.3
- MySQL为表添加外键约束
- hdu4513--Manacher算法--回文串的O(n)算法
- YBTOJ:最短时间(长链剖分、线段树)
- 【javascript】DOM操作方法(3)——document节点属性
- 给定数字的b+树创建_在C ++中找到给定数字中的两个的下一个和上一个幂
- phpstorm 如何设置函数的注释内容
- 设计牛人——设计入门答疑番外篇有感
- Iframe和Frame中实现cookie跨域的方法(转载)
- 【刷题】BZOJ 1124 [POI2008]枪战Maf
- 免费下载网易云音乐付费歌曲及下架歌曲
- vue如何debugger
- 基于Java实现的商品推荐系统
- 教程:个人深度学习工作站配置指南
- 下载安装anaconda
- 达梦8 DCA学习笔记