海康RTSP流转RTMP并推送至Web端展示

【流媒体服务】海康摄像头RTSP视频推流、转码、拉流、直播综合应用(六):【1】VLC+FFMPEG+Nginx实现RTSP到RTMP网页直播 海康摄像头RTSP视频流,跨浏览器网页直播案例 阅读详情
AI摘要

本文介绍如何实现海康摄像头视频流的实时传输到前端页面展示,包括获取RTSP视频流、流媒体服务器搭建及前端播放器选择等关键步骤。

最近帮着老师做项目的时候碰到一个难题,将海康摄像头的影像实时传输到前端页面进行展示。Google查了两天,终于有些眉目,记录一下经验。

大致需要经过以下几个步骤:

  1. 获取海康摄像头的视频流(基于RTSP协议的视频流)
  2. 流媒体服务器搭建
  3. 前端页面选用合适的播放器进行播放

下面详细说明一下每个步骤

1. 获取海康摄像头的视频流(基于RTSP协议的视频流)

不仅仅是海康摄像头,市面上大多数摄像头的视频流都是基于RTSP协议的,查阅了一下资料了解到海康的RTSP流格式:

rtsp://<账号>:<密码>@<IP>:554/<编码>/<通道>/main/av_stream
例如 rtsp://admin:12345@192.0.0.64:554/h264/ch1/main/av_stream  

说一下 ‘/h264/ch1/main/av_stream’ 这部分, 其中“h264”代表获取h264格式编码的流,我们实验室用的摄像头支持两种格式的编码,h264和h265,可以在终端进行设置,虽然h265编码比较好,但是后边几个步骤用到的技术对这个格式的支持很不友好,因此在这里建议使用h264的编码。后边的“ch1/main/av_stream”表示一些主码流、子码流、通道一类的信息,一般情况下按照这个格式填写就行。

拿到最终的URL后,最好测试一下是否是正确的,这里推荐用最新版的VLC做测试,VLC是一个非常强大的播放器,几乎支持所有格式的视频播放。
这里写图片描述
打开VLC-媒体-打开网络串流,弹出上面这个页面,把rtsp地址填进去,看看是否正常播放,如果不能,应该是账号密码错误或者格式不对。

2.流媒体服务器搭建

首先是rtsp转码
浏览器直接展示RTSP流稍微有点困难,但是也并不是没有办法,VLC Plugin 貌似可以做到,但是新版本的浏览器都不再支持这个插件了,所以只能将RTSP进行一个转码。
一开始计划了两种方案,一个是转成m3u8格式(基于HLS协议),另一个是采用FLV格式(基于RTMP协议),因为前者的延时比较大,所以最后采用了后者(从效果来看,RTMP协议的延时几乎察觉不出来)。
这两种转码的方式差不多,都是用ffmpeg进行转码+推流,指令如下:
ffmpeg -i "rtsp://admin:wls771102@192.168.14.175:554/h265/ch1/main/av_stream" -f flv -r 25 -s 640x360 -an rtmp://localhost:1935/live/room
这个指令中有两个URL,一个是RTSP视频流的地址,另外一个是接收RTMP流的流媒体服务器地址。流媒体服务器需要另外搭建,我这里选择的是整合了RTMP模块的Nginx。Linux版本的安装随便一百度就有,但是Windows版本就稍微复杂点,我这有一个整合好了的可以直接用的,需要的可以自取。

链接: https://pan.baidu.com/s/19cqUxAdZPEA1WlwSMKMkSg 密码: r3sr

RTMP默认端口号1935,开启Nginx后可以直接用ffmpeg直接推过去,rtmp://localhost:1935/live/room的路径部分是可以随意更换的。注意要先开Nginx然后再推流,下边是在windows下的效果图
ffmpeg转码+推流
然后复制rtmp://localhost:1935/live/room到VLC中,如果正常播放,说明流服务器搭建成功。

前端播放

支持RTMP播放的播放器找了好久,最后选择了videojs。 这里还有一些坑。首先是播放器页面如果不丢到服务器环境下可能出现无法播放的情况。还有就是,因为播放器是基于flash的,需要浏览器开启flash支持,但是一般情况下如果需要flash,浏览器都会弹窗询问,但是不晓得为啥这个播放器不会弹窗,所以需要手动启动浏览器的flash支持。chrome的话是点击url栏左边的感叹号进行设置,其他浏览器不太清楚。 另外,这个设置不是全局设置,也就是说如果项目站点移植之后,需要重新设置一下。
页面代码如下:‘

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Video.js | HTML5 Video Player</title>
    <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"></script>
</head>
<body width="640px" height="360px">
  <video id="example_video_1" class="video-js vjs-default-skin" controls preload="auto" width="640px" height="360px"  data-setup="{}">
    <source src="rtmp:/localhost:80/live/opencv" 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"></script>
</body>
</html>

2019-01-10补充说明

前端播放部分,除了使用videoJS, 还可以使用百度的 cyberplayer,是在videoJS的基础上开发的,针对直播做了很多优化,使用方便而且文档也比较全, 强烈安利!

2019-01-21补充说明

注意:本教程仅适用h264编码的流,有些受硬盘录像机管理的摄像头,即便是填写了/h264这个参数(rtsp://admin:12345@192.0.0.64:554/h264/ch1/main/av_stream ),但是返回的仍然是h265格式的流,这个需要在硬盘录像机里修改。直接访问摄像头后台修改的话,过几分钟会被重置。如果按照教程配置到最后出现VLC可以播放但是web无法播放的情况,很有可能就是这个问题。

查看摄像头编码的方法:

  • 直接在硬盘录像机里查看
  • VLC里边查看: 首先在VLC里拉流->tools->Codec选项卡->查看Codec参数
海康威视摄像头按需推流方案:基于 FFmpeg + Nginx-RTMP + Vue 实现 海康威视使用FFmpeg+Nginx-rmtp进行按需推流 1.简介 很多朋友不太理解海康威视的官方sdk的使用方法博主也是,因为官方提供的是C/S版的,提供的web开发包,对浏览器的兼容性也是极差,还有一种办法是使用ffmpeg进行视频推流, 但是缺陷也是比较明显的,同时推三到四个流出来的视频也是相当卡顿对服务器资源消耗极大 所以博主另辟稀路,可不可以进行按需推流(傻瓜式监控视频对接) (点击视频先关流再推流做到按需播放)呢? 主要思路: 利用FFmpeg推流软件进行视频RTSP转RTMP流 再利用vi 阅读详情

相关推荐

rtsp拉流并推送到rtmp服务器且循环录像

本文演示了如何从rtsp源拉取视频,推送到rtmp服务器,同时将视频保存为mp4到本地,5分钟一段

Hi20240217的博客 1236

c++高性能H.264/H.265实时流媒体服务器,h5客户端流媒体服务框架

【代码】c++高性能H.264/H.265实时流媒体服务器,h5客户端流媒体服务框架。

liveweb视频汇聚平台 632

如何通过RTSP协议将海康威视摄像机视频流安全推送到公网供VLC访问?

本文详细介绍了如何通过RTSP协议将海康威视摄像机视频流安全推送到公网,并使用VLC进行访问。内容包括RTSP协议基础、服务器中转环境搭建、摄像机配置、视频流参数优化、服务器端转发配置及VLC客户端连接方法,重点强调了安全防护措施如防火墙配置、IP白名单和日志监控,帮助用户实现安全高效的远程视频监控。

weixin_28335283的博客 532

海康摄像机 RTMP 推流到开源 GB/T28181 平台 | gowvp

gowvp 是 Go 语言实现的开源 GB28181 解决方案,基于GB28181-2022标准实现的网络视频平台,支持 rtmp/rtsp。

weixin_42324398的博客 2012

海康威视Web3.2无插件开发实战:从RTSP到浏览器播放全解析

在Web应用开发中,实现音视频流的实时传输与播放是一项常见需求,其核心原理在于将设备端的原始流媒体协议(如RTSP)转换为浏览器原生支持的格式。通过流媒体服务器进行协议转换与转封装,结合WebSocket实现低延迟双向通信,这项技术能显著提升跨平台兼容性与安全性,摆脱对浏览器插件的依赖。在安防监控、视频会议等应用场景中,这种无插件方案已成为主流。本文以海康威视设备为例,详细解析如何利用HTTP-FLV、WebSocket等现代Web技术栈,构建稳定高效的无插件视频应用,其中涉及Nginx流媒体服务器配置、S

weixin_34124651的博客 524

vue接入海康4G版摄像头通过萤石云平台推送视频流教程

vue-video-player接入海康视频,videojs-contrib-hls,vue播放视频

renkai721的专栏 7276

使用JavaCV实现海康rtsp转rtmp实现无插件web端直播(无需转码,低资源消耗)

FFmpeg转封装rtsp到rtmp(无需转码,低资源消耗)目录结构添加依赖,编写配置文件创建Bean创建缓存Cache修改启动类拉流、推流、转封装定时任务Timer线程池管理编写controller1.开启视频流接口(POST)2.关闭视频流接口(DELETE)3.获取视频流(GET)4.视频流保活(PUT)5.获取服务信息(GET)6.video.js 参考:javaCV开发详解之8:转封装...

banmajio的博客 2万+

rtsp实时流转rtmp/flv/ws-flv

win平台服务器使用,启动服务后,在浏览器中打开测试页面,http://localhost:18000,配置好rtsp流地址后,点击播放就可以看到实时画面,右键能获取到.flv的直播地址,然后就可以放在h5中播放了

海康威视rtsp转rtmp(java稳定版)

1、测试的目标 将海康威视摄像头产生的rtsp视频流,通过java代码转换后,以rtmp的形式推送到nginx服务器,实现远程访问。推流程序需要和设备在同一个局域网下(否则获取不到视频流),nginx可以在本地服务器,也可以是云服务器。 2、工具和环境 eclipse、maven、jdk1.8、javacv-1.5.1、nginx1.17.1、VLC media player、iVMS-42...

yancie_的博客 1万+

python调用海康工业相机并用opencv显示(整体实现)

python语言调用海康机器人(hikrobotics)工业相机 第一章 Python 语言下连接海康工业相机,并获取数据 文章目录 系列文章目录 前言 目录 python语言调用海康机器人(hikrobotics)工业相机 文章目录 前言 一、底层接口的准备 二、使用步骤 1.引入库 2.枚举设备 3.判断设备类型 4.输入连接设备 5.创建相机实例并创建句柄 6.打开设备 7.获取相关参数 8.主动获取图像 9.开启取流并获取每张.

qq_39570716的博客 5万+

cesium自定义指南针

项目需要一个指南针,用鼠标按住旋转指针,会让3d地图旋转,点击中心点重置方位。当然可以使用插件cesium-navigation-es6,但是样式不好修改,所以我自定义了一个指南针。

weixin_47017648的博客 750

海康大华等安防摄像机采用通用RTSP协议流转RTMP推送至Web无插件播放展示的流程方法

行业现状 中国互联网化的进程已经越来越快了,各个行业都在进行互联网化的改造,流媒体、音视频,作为跑在互联网上最大量级的数据类型,互联网带来的使用习惯已经冲击了非常非常多的传统行业,就包括非常稳重的电力行业、高速交通行业,都逐步在往互联网、物联网架构进行靠拢。 在传统流媒体视频监控行业、以视频为核心的物联网行业以及以视频为特色的各行各业,都在一方面想进行老设备的互联网化改造,另一方面想在新设备的接入...

Babosa的专栏 1万+

FFmpeg音频转换避坑实录:为什么VOS的REC转MP3比WAV转MP3体积小一半?

本文深入解析了FFmpeg在VOS系统REC格式音频转换中的优化技巧,揭示了REC转MP3比WAV转MP3体积小一半的原因。通过分析REC格式的压缩特性、转码参数陷阱及FFmpeg调优方法,帮助开发者实现高效音频转换,显著降低存储成本。

weixin_30752699的博客 526

Springboot java基于海康威视SDK二次开发

最近项目中用到海康威视的摄像头实现人员移动检测以及前端页面手机端等查看实时摄像头。由于第一次基于海康SDK开发,留一笔记用于记录,同时希望帮助到后来人。废话不多说,直接开始: PS:本文实现的功能如下(后期如用到会增加功能) 设备的布防、撤防(布防成功后可实现对客流量统计、移动侦测、设备遮挡、人脸侦测报警等。更多报警类型查看官方文档,本文只实现移动侦测作为例子。) 摄像头实时视频(用于web端、手机端观看) 传送门:官方SDK下载 传送门:本文所用SDK下载 一、流程分析 集......

救世主 1万+

用Docker-Compose三节点部署生产级Doris集群:从配置文件到故障转移

本文详细介绍了如何使用Docker-Compose部署一个生产级的三节点Apache Doris集群。内容涵盖从核心架构理解、配置文件编写到集群初始化验证的全过程,并重点讲解了如何实现高可用、数据持久化、健康检查以及故障转移等生产级运维关键点,为中小团队提供了一种在容器化便利性与系统稳定性间取得平衡的可靠部署方案。

kkk56的博客 856

从玩具到工业:手把手教你用Webots仿真Scara抓取(逆解实战篇)

本文详细介绍了如何在Webots仿真环境中实现Scara机械臂的逆解计算与抓取操作,涵盖从环境配置、逆运动学算法到轨迹规划与实时控制的完整流程。通过实战案例演示,帮助读者掌握机械臂逆解的核心技术,并应用于工业自动化场景,提升Scara机械臂的编程与控制能力。

weixin_30932215的博客 503

海康摄像头web观看、操作、rtsp转rtmp、rtsp转hls

海康摄像头web观看操作rtmp/hls推流rtsp流转rtmp流 源码介绍:   海康摄像头web端无插件播放是指设置好摄像头参数后,即可在web浏览器不安装任何自定义插件即可实现流程播放。   系统通过拉取海康rtsp流,在用户点击观看时,自动将流转换为rtmp与hls流,推送到自定义流媒体服务器,实现web端 flash播放与html5原生播放。 如有需求,可在线留言或者发消息都可以,看到后会第一时间回复。 或者联系QQ 305681384 目前支持如下功能: 在线观看...

xsmh001的博客 2734

粒子群优化与蚁群算法求解多旅行商问题

它要求在给定一组城市和旅行商之间的距离矩阵的情况下,找到一条最优的路径方案,使得所有旅行商可以分别从起始城市出发,途径其他城市,并最终回到起始城市,同时总旅行距离达到最小。这两种算法都是基于群体智能的优化算法,在求解组合优化问题时具有较好的性能表现。假设有n个城市需要被m个旅行商访问,城市间的距离由距离矩阵D表示,其中D(i,j)表示第i个城市到第j个城市的距离。粒子群优化算法是一种基于群体智能的优化算法,其中的粒子代表了潜在的解,并通过模拟粒子在解空间中的移动来搜索最优解。一、多旅行商问题建模。

m0_47037246的博客 553

多个海康威视摄像头Web播放完整方案(Docker+SRS+FFmpeg)

按此方案实施后,即可实现多个海康威视摄像头的稳定Web实时播放!

csdn_tom_168的博客 2149

智能车图像处理14-进阶篇6--坡道的判定

这篇文章主要讲述智能车图像处理中 : 如何判断坡道

taiyuezyh的博客 9218

【异常】API 速率限制报错问题全流程排查与解决指南 API rate limit reached. Please try again later.

摘要: 本文针对大模型API开发中常见的速率限制报错("API rate limit reached")提供全流程解决方案。首先解析该报错的本质是服务端对高频调用的保护机制,通过三步排查法确认根因:客户端请求频率超出账户阈值。提出三级解决方案:1)临时等待限流周期重置;2)升级付费账户提高调用配额;3)构建多模型容灾架构实现自动切换。建议生产环境优先采用容灾方案,通过备用API节点保障业务连续性,同时平衡不同模型服务的成本与性能。

奶爸的编程之路,也就一周冷个三天 1419

支持海康、大华、宇视IPC(国标GB28181、RTSP、RTMP协议流转)!一款国产开源网络视频平台来了

本项目是一款基于《GB28181-2016》标准开发的开源、高性能网络视频平台,专注于核心信令处理与设备管理后台功能实现,平台支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联,支持rtsp/rtmp等视频流转发到国标平台,支持rtsp/rtmp等推流转发到国标平台。可以广泛应用于安防监控、智慧城市、跨平台、跨网络视频预览等场景。高兼容性:完整实现GB/T 28181‑2016 标准,支持海康、大华、宇视等品牌的IPC/NVR/DVR接入。

1515

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

EasyRTSPLive摄像机NVR录像机RTSP协议实时流转RTMP协议直播流推送源码流程解析

在《海康大华等安防摄像机采用通用RTSP协议流转RTMP推送至Web无插件播放展示的流程方法》中,我们分析了整个将安防设备互联网化的主要思路,同时介绍了安防RTSP协议进行话联网化的RTMP输出的方法,这里我们主要介绍的就是其中描述的专门将RTSP流转换成RTMP推流的EasyRTSPLive的实现方法: EasyRTSPLive就是RTSP to RTMP,拉流IPC摄像机或者NVR硬盘录像机R...

Babosa的专栏 3053

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

基于 SmartMediaKit 的Linux平台多路RTSP转RTMP推送实战详解

本文聚焦大牛直播SDK(SmartMediaKit)在Linux平台下实现多路RTSP转RTMP推送的完整技术方案。结合RTSP、RTMP协议规范,深入解析零解码直通透传架构、句柄复用机制、线程安全设计等核心技术,并以实际Demo代码为基础,逐步讲解拉流、转发、推流、录像、截图各模块的实现细节。SDK具备低延迟(<200ms)、高并发、纯C++高性能等优势,适用于视频监控、智慧园区、直播平台等RTSP摄像头接入场景。

大牛直播SDK 1029

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 整合SSH框架时 关于Hibernate部分的 xxx is not mapped错误的解决方法
下一篇: 关于video-js currentTime()无效的解决办法
傲娇的鲤鱼
博客等级 码龄10年 88粉丝 53原创
评论 61
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值