环境:海康威视录像机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播放相关推荐

  1. 用apache反向代理解决单外网ip对应内网多个web主机的问题

    用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...

  2. [转]用apache反向代理解决单外网ip对应内网多个web主机的问题

    用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...

  3. 树莓派小车的4G遥控与视频回传(内网穿透)

    目录 1.项目简介 2.工具 3.步骤 1.手机端 (1)设置ip和端口 (2)遥控界面 2.树莓派 (1)给树莓派配置公网环境 (2)树莓派进行内网穿透 (3)树莓派UDP监听 (4)树莓派视频回传 ...

  4. 树莓派摄像头使用 motion + frp内网穿透 实时视频显示

    本文主要介绍motion的使用,frp内网穿透步骤. 一.准备材料 二.motion的下载安装 三.motion的使用 四.frp的下载安装 五.frp内网穿透服务器配置步骤 六.frp内网穿透客户端 ...

  5. rsync同步数据到内网

    最近公司要求将IDC的APP日志备份到公司办公网内部,思前想后,结合以前学过的知识,决定用rsync直接推送,即从APP服务器上直接将日志推送到公司内网.这样避免了在生产服务器上额外安装更多软件而且只 ...

  6. 4.通过Opencv采集摄像头视频数据

    VideoCapture() 虚拟采集器,一般设备号从0开始 cap.read() 读取视频帧 返回值有两个,第一个为状态值,读到帧为true 第二个值为视频帧 cap.release() 释放资源 ...

  7. 传统安防监控摄像头Onvif云台控制直播流如何转换成GB/T28181对接到国标视频平台公安内网

    传统安防监控摄像头Onvif云台控制如何转换成GB/T28181 1.应用背景 2.部署流媒体服务 2.1.Onvif探测添加 2.1.1.通道编辑 2.2.视频广场播放 2.3.云台操作 3.GB/ ...

  8. Mac pycharm flask 用内网ip 运行 web

    1. 菜单 run -> run 2. 选择,你要运行的 py 程序 3.  设置 Additional options: 为   --host=0.0.0.0 ,把 FLASK_DEBUG 的 ...

  9. 没有公网IP,怎么实现外网访问内网视频监控

    以海康威视监控为例,先在内网部署好监控系统,通过本地浏览器输入监控设备管理地址,登录管理后台: 在管理后台可成功查看摄像头视频画面即内网监控系统搭建成功: 找到配置界面查看设备端口信息,记下HTTP访 ...

最新文章

  1. AndroidStudio 在工具栏上设置显示前进和后台的方法
  2. 区块链相关论文研读2 - vChain,关于可验证的查询
  3. [国家集训队]航班安排
  4. linux字符终端看视频,在Linux终端上看电影很酷吗?
  5. 敏捷个人架构图 V1.3
  6. MySQL为表添加外键约束
  7. hdu4513--Manacher算法--回文串的O(n)算法
  8. YBTOJ:最短时间(长链剖分、线段树)
  9. 【javascript】DOM操作方法(3)——document节点属性
  10. 给定数字的b+树创建_在C ++中找到给定数字中的两个的下一个和上一个幂
  11. phpstorm 如何设置函数的注释内容
  12. 设计牛人——设计入门答疑番外篇有感
  13. Iframe和Frame中实现cookie跨域的方法(转载)
  14. 【刷题】BZOJ 1124 [POI2008]枪战Maf
  15. 免费下载网易云音乐付费歌曲及下架歌曲
  16. vue如何debugger
  17. 基于Java实现的商品推荐系统
  18. 教程:个人深度学习工作站配置指南
  19. 下载安装anaconda
  20. 达梦8 DCA学习笔记

热门文章

  1. c#操作word图表(二)
  2. 在openSUSE上编译aMule-DLP
  3. 德智体美劳,全面发展的DevOps
  4. 汽车行业如何借助微信小程序引流
  5. 作者已死?AI正用艺术征服人类
  6. mail163邮箱个人登录入口在哪里?
  7. 英语常用的62个英语句型,学英语须掌握
  8. 惠普暗夜精灵2怎么打开后盖_散热为何如此优秀?HP暗影精灵II代拆解
  9. 测试硬盘软件hd不能结束进程,终于解决了HD TUNE以及所有其他硬盘检测工具都不能使用的情况。。...
  10. 复数乘法 哔哩哔哩2020校园招聘面试题详解