好多开发者使用场景,除了实现基础的低延迟RTSP、RTMP播放外,还需要实现RTSP、RTMP流数据的本地录像功能。 本文以大牛直播SDK的Windows平台播放模块为例,介绍下如何实现RTSP、RTMP流录像。 功能设计 [拉流]支持拉取RTSP流录像; [拉流]支持拉取RTMP流录像; [逻辑分离]和播放、转发功能完全分离,支持随时录像; [参数设置]支持设置单个录像文件大小、录像路径等,并支持纯音频、纯视频 、音视频录制模式; [音频转码]支持音频(PCMU/PCMA,Speex等)转AAC后再录像; [265支持]支持RTSP/RTMP H.265录制到MP4文件; [事件回调]从开始录像,到录像结束均有 = NT_SP_E_EVENT_ID_BASE | 0xB, /*rtsp status code上报, 目前只上报401, param1表示status code*/ /* 接下来请从
技术背景我们在做RTSP、RTMP直播播放器的时候,有个比较重要的功能,就是拉流端实时录像,包括设置单个录像文件大小、文件前缀、audio转AAC、只录制视频或只录制音频、开始录像、停止录像事件状态回调等 我们录像模块,覆盖了RTMP、轻量级RTSP服务、RTSP|RTMP播放端录像,平台覆盖了Windows、Linux、Android、iOS,主要功能设计如下: [拉流]支持拉取RTSP流录像; [拉流 ]支持拉取RTMP流录像; [推流端录像]支持RTMP|RTSP推送端同步录像; [轻量级RTSP服务录像]支持轻量级RTSP服务SDK同步录像; [推流端录像实时暂停/恢复]支持推送端录像过程中实时暂停录像 、恢复录像; [逻辑分离]大牛直播录像SDK不同于普通录像接口,更智能,和推送、播放、转发、内置轻量级RTSP服务SDK功能完全分离,支持随时录像; [url切换]在录像过程中,支持切换不同URL,如两个 总结RTSP、RTMP播放端录像,我们的设计,是播放和录像分离,可以只录像或只播放,如果同时录像和播放,只需要一个拉流实例来完成。
上一篇介绍了RTSP的GET_PARAMETER消息,看到这个消息类型,我们很容易习惯性的想到应该还要有一个RTSP_SET_PARAMETER消息,如我我们所愿,RTSP确实有这样一条消息,本篇我们来看一看 URI表示rtsp的地址; Rtsp Version表示版本号; CSeq表示序列号; Content-length表示内容长度 Content-type表示内容类型; 之后跟着1个或多个参数及对应的值 RtspVersion表示Rtsp的版本号; 状态码和状态描述给出了对于设置某个参数的请求的回复状态,如状态码451,表示无效参数(Invalid Parameter)! 到这里,关于RTSP的主要的一些请求,我们基本就都了解了,当然,RTSP还有一些其他更加细节的请求,在实际中应用较少,就不再做详细介绍了!
好多开发者问我们,Unity环境下,除了RTSP或RTMP的播放,如果有录像诉求,怎么实现?实际上录像相对播放来说,更简单一些,因为不涉及到绘制,只要拉流下来数据,直接写mp4文件就好了。 (考虑到磁盘读写IO,Windows平台一般不建议多录录制),录像的话,需要考虑的是,设置好文件录制规则,比如,是否录制纯音频或纯视频、单个录制文件大小、文件录制目录等,并设置录像回调事件:/* * SmartPlayerWinMono.cs file_name); } else if (status == 2) //status 2:表示已经写好一个录像文件 { Debug.Log("RecordCallBack, 已生成一个录像文件 NTSmartPlayerSDK.NT_SP_Close(videoctrl[sel].player_handle_); videoctrl[sel].player_handle_ = IntPtr.Zero; }}以上是Unity平台RTMP或RTSP 播放端录像相关接口设计和调用实例,感兴趣的开发者可以参考。
技术背景上篇文章,我们介绍了Unity平台RTMP、RTSP播放器录像功能,这里,我们详细的介绍下,做个RTSP或RTMP拉流端录像模块有哪些需要考虑的技术点? 在我们常规的考量,RTMP或RTSP流录制,无非就是拉取数据写文件而已,接口设计StartRecorder()/StopRecorder()足矣。 后再录像;支持录像事件回调,从开始录像,到录像结束均有event callback上来。 除了上述的设计,还需要确保和RTSP、RTMP播放在一个实例下,确保播放的过程中可以随时录像,录像的过程中,可以随时播放。 录像模块设计无图无真相,先看录像设置:图片开始录像、停止录像:图片Windows平台,我们提供了C++和C#的接口,本文以C++接口设计为例:先说录像设置:设置录制纯音频或纯视频: /**
我们的视频平台EasyNVR能够接入RTSP协议的摄像头进行安防视频直播,其中分为录像版和直播版。顾名思义,直播版就是服务器不带云端存储功能,录像版既能进行视频直播,也能够调用录像观看。 EasyNVR录像版重启崩溃 多数的用户都会选择EasyNVR录像版,我们发现在录像版运行的时候,通过页面可以看到视频直播,但是录像显示的是近段时间为空录像,进入服务器重新启动软件服务,软件随即报错: 通过进入服务器发现,服务器上有挂载磁盘,录像写入到对应挂载的磁盘上,当挂载的磁盘出现问题导致软件启动出现问题,则报出对应的打印错误。 解决问题 主要问题是出现在录像的磁盘写入上,这个问题可以从两方面解决: 一是:修复磁盘挂载问题,找到磁盘出现问题原因(需要具体硬件运维人员具体分析),解决磁盘问题; 二是:修改软件录像磁盘写入位置,重新配置录像写入位置
TSINGSEE青犀视频各大平台都是可以接入摄像机及硬盘录像机的,比如EasyNVR这样的平台,如果接入硬盘录像机的话,则需要从录像机上取RTSP流接入进平台,因此对于硬盘录像机的操作及取流流程我们也要有比较详细的了解 本文就和大家分享一下海康硬盘录像机接入摄像机rtsp流的流程。 1.进入硬盘录像机鼠标右键选择【主菜单】,找到【系统配置】,如下: image.png 2.进入系统配置后选择网络配置根据自己网络情况配置硬盘录像机的ip地址: image.png 3.在主界面选择通道配置 ,进入配置摄像头通道界面: image.png 4.选择通道配置点击自定义添加: image.png 5.设置协议管理,修改rtsp的流地址: image.png 6.修改完成后,在自定义添加IP通道窗口页面进行配置摄像头的 ip,选择我们刚刚保存的RTSP协议并且输入摄像头的用户名与密码,点击添加: image.png 7.配置正确在通道管理页面可以播放刚刚配置的摄像头。
技术背景 我们在做Windows平台RTMP推送、轻量级RTSP服务录像模块的时候,部分开发者抱怨路径无法设置中文,只能设置为英文。 、暂停录像、停止录像为例,调用逻辑如下,可以看到除了中文路径诉求,录像模块还可以添加前缀、添加文字、水印: public bool StartRecorder() { NTSmartPublisherSDK.NT_PB_StopRecorder(handle_); try_close_handle(); } 开始录像和录像完成后 break; } EventGetPublisherEventMsg(event_log); } 总结 Windows平台RTMP推送、轻量级RTSP 服务配套的录像模块,除了设置录像保存路径外、还可以设置录像文件前缀、是不是添加日期、时间等,还有就是单个录像文件大小,超过这个大小后,会自动切换到下个文件。
技术设计本文以大牛直播SDK的Windows平台RTSP|RTMP直播播放录制功能设计为例,谈谈我们的接口的细粒度设计。 目前,我们录像模块,涵盖了Windows/Linux/android/iOS 推送端(涵盖轻量级RTSP服务模块、RTMP推流模块和GB28181设备接入模块)和RTSP|RTMP播放端,主要实现了如下功能 : [拉流]支持拉取RTSP流录像; [拉流]支持拉取RTMP流录像; [推流端录像]支持RTMP|RTSP推送端同步录像; [轻量级RTSP服务录像]支持轻量级RTSP服务SDK同步录像; [推流端录像实时暂停 /恢复]支持推送端录像过程中实时暂停录像、恢复录像; [逻辑分离]大牛直播录像SDK不同于普通录像接口,更智能,和推送、播放、转发、内置轻量级RTSP服务SDK功能完全分离,支持随时录像; [url切换 ; [音频转码]支持音频(PCMU/PCMA,Speex等)转AAC后再录像; [265支持]支持RTSP/RTMP H.265录制到MP4文件; [推送端265录像]推送端SDK支持H265录像; [
技术背景我们在对接Windows平台RTSP|RTMP直播播放模块的时候,有开发者提出来这样的技术需求,他们做驾考、全景摄像头、多路会议录制等场景的时候,希望把多路视频流数据,合并到一路保存或者对外推送到 技术实现多路RTSP|RTMP流合流,实际上我们2016年就有这块demo,当时合流的数据是本地采集的摄像头或屏幕数据,和外部RTSP、RTMP流,合成后输出(类似于传统意义的连麦操作)。 这里大概说下思路,外部的RTSP|RTMP流数据,解码后,把YUV或RGB数据回调上来,然后,按照图层的形式,分别贴摄像头、屏幕数据或解码后的流数据。 本次以四路RTSP摄像头数据合流为例:开始播放:/* * SmartPlayerDemo.cs * Author: daniusdk.com * QQ: 89030985 */private void (handle, 0);//RTSP timeout设置Int32 rtsp_timeout = 10;NTSmartPlayerSDK.NT_SP_SetRtspTimeout(handle, rtsp_timeout
EasyNVR安防视频云服务平台可支持设备通过RTSP/Onvif协议接入平台,能提供视频监控直播、录像、云存储、检索与回看、国标级联等视频能力,可支持分发RTSP、RTMP、HTTP-FLV、WS-FLV 海康录像机的RTSP地址规则和单个摄像头是一致的,常用RTSP地址如下: 1)rtsp://admin:admin@192.168.10.199:554/Streaming/Channels/101 2)rtsp://admin:admin@192.168.10.199:554/h264/ch1/main/av_stream 其中,第1种配置规则,在录像机包含路数较多时需要注意,示例如下: rtsp /Streaming/Channels/1102(通道11子码)。 进入录像机后台的配置,找到【网络】-【基本配置】-【端口】,确认该录像机的RTSP端口是2554,将RTSP地址中的端口改为2554后,用户的设备已经成功显示在线。
EasyNVR安防视频云服务平台可支持设备通过RTSP/Onvif协议接入平台,能提供视频监控直播、录像、云存储、检索与回看、国标级联等视频能力,可支持分发RTSP、RTMP、HTTP-FLV、WS-FLV 海康录像机的RTSP地址规则和单个摄像头是一致的,常用RTSP地址如下:1)rtsp://admin:admin@192.168.10.199:554/Streaming/Channels/101图片2 )rtsp://admin:admin@192.168.10.199:554/h264/ch1/main/av_stream其中,第1种配置规则,在录像机包含路数较多时需要注意,示例如下:rtsp:// Streaming/Channels/1102(通道11子码)。 进入录像机后台的配置,找到【网络】-【基本配置】-【端口】,确认该录像机的RTSP端口是2554,将RTSP地址中的端口改为2554后,用户的设备已经成功显示在线。
对于视频服务,直播和存储肯定是必不可少的环节,我们的视频流媒体服务器EasyNVR是用于安防行业的软件,主要是用于进行直播和录像存储。 我们的EasyNVR录像是由每个小时组成的(EasyNVR存储的录像为什么呈现每小时一段),更加方便用户对于录像的检索。 ? EasyNVR录像回看没有数据 最近有客户反应,进行查看录像回看发现录像没有数据,但是用户并没有进行删除录像的操作,而录像却查找不到,并显示空白。 ? 在上图输入命令pwd后,可以看到record目录是存在的,这个时候我们进入里面查看是否有录像。 ? 在进行权限更改之后我们在页面就可以正常查看录像了(但是权限没开启的那几天录像就没有被保存)。 ?
TSINGSEE青犀视频智能分析平台内一个功能是获取直播快照,比如EasyNVR视频直播中可以获取到直播快照的截图,但在实际使用中,也有用户需要获取云端录像快照。 ? EasyNVR的录像都是http服务发布的录像视频流,我们再通过ffmpeg来对云端录像的视频进行快照的获取。 Ffmpeg -ss “time” -hide_banner -i “input” -y -f image2 -vframes 1 snap.jpg 针对以上命令,我们只需要根据自身的需求添加需要获取录像的时间点和需要截取云端录像的视频源就可以 1、通过接口获取到需要截取录像的视频地址: ? 除了EasyNVR外,TSINGSEE青犀视频其他智能分析平台EasyCVR、EasyGBS等也可以获取录像的快照。如果大家有疑问,欢迎联系我们。
自从国标GB28181协议视频平台EasyGBS增加了录像计划模块之后,部分已经更新的用户都对此功能表示极为有用。鉴于EasyGBS的成功经验,我们对EasyNVR也开发了录像计划的功能。 ? EasyNVR视频平台的录像要单独配置一个页面,用来单独配置每一个通道每一天的录像,旧版的功能只能选择录制几天,无法精确到每天。 ? 要改变目前的录像功能,我们需要通过ui组件来实现。 首先,通过绘制录像计划ui组件来获取周一到周日的录像计划,然后选择录像保存的天数,最后选择需要设置的通道,将参数一起发送过去。 ? message: "保存成功", }); }); } }, } EasyNVR是TSINGSEE青犀视频云边端架构产品中支持RTSP
技术背景我们在对接Unity平台camera场景采集的时候,除了常规的RTMP推送、录像外,还有一些开发者,需要能实现轻量级RTSP服务,对外提供个拉流的RTSP URL。 服务;实时录像、暂停|恢复录像;实时预览。 _.interactable = true; btn_rtsp_service_.GetComponentInChildren<Text>().text = "停止RTSP服务"; _.interactable = true; btn_rtsp_publisher_.GetComponentInChildren<Text>().text = "发布RTSP"; 、轻量级RTSP服务,在虚拟仿真、医疗、教育等场景下,应用非常广泛。
之前的博文中我们和大家讲过EasyNVR的录像计划的实现方式,大家可以简单了解一下操作方式:EasyNVR边缘计算网关录像计划功能操作介绍。 关于EasyNVR录像计划的实现,TSINGSEE青犀视频的研发人员也耗费了不少心思,下面我们就讲一下是是如何实现的。 ? EasyNVR录像计划,其实就是在EasyNVR先为通道配置好录像计划,然后该通道就会以录像计划中的计划设置来录像。 例如:通道1只开启每天的下午1点到2点录像,那么通道1就只会在每天的下午1点到2点有录像,不会像现在一旦开启录像,就是直接录像一整天。 这样就可以达到节省磁盘空间的效果,录像也更灵活。 ,其他时间段不录像。
RTSP实时录像、轻量级RTSP服务四合一demo。 )(更新于2020/02/11) Windows平台多路RTMP/RTSP流媒体转RTMP官方定制版使用说明(更新于2019/11/07) 大牛直播SDK Demo使用说明 大牛直播Windows 对应Demo: 测试程序:SmartMixStreamDemo.exe; C++工程:WIN-MixStreamSDK-CPP-Demo; 11. Windows/Android/iOS录像SDK [拉流]支持拉取RTSP流录像; [拉流]支持拉取RTMP流录像; [推流端录像]支持RTMP|RTSP推送端同步录像; [轻量级RTSP服务录像 ]支持轻量级RTSP服务SDK同步录像; [推流端录像实时暂停/恢复]支持推送端录像过程中实时暂停录像、恢复录像; [逻辑分离]大牛直播录像SDK不同于普通录像接口,更智能,和推送、播放、转发、内置轻量级
EasyNVR安防视频云服务平台是基于RTSP/Onvif协议的视频接入、处理及分发平台,可以分发出RTSP、RTMP、WS-FLV、HTTP-FLV、HLS、WebRTC等格式的视频流,可实现在全终端 有用户反馈,在使用EasyNVR下载录像时,下载后的录像时间无法拖动时间轴,于是请求我们协助排查。根据用户反馈,我们立即进行了排查。 根据用户反馈,下载的时间段为10:50-11:30的录像,但是在播放时,显示总时长为23小时,实际应该为40分钟。排查中发现,10:50-11:30的录像存在于两个文件夹下,因为录像是按整点存储的。 经过测试发现,单独下载一个文件下的录像,出现异常的概率较小。测试多个时间段,发现不是每个时间段都存在,可能是某段时间录像的时间戳异常导致上述问题的发生。 EasyNVR在视频监控场景中可实现视频实时监控直播、云端录像、云存储、录像检索与回看、告警、级联等,极大满足行业的视频能力需求。
EasyNVR安防视频云服务平台是基于RTSP/Onvif协议的视频接入、处理及分发平台,可以分发出RTSP、RTMP、WS-FLV、HTTP-FLV、HLS、WebRTC等格式的视频流,可实现在全终端 有用户反馈,在使用EasyNVR下载录像时,下载后的录像时间无法拖动时间轴,于是请求我们协助排查。根据用户反馈,我们立即进行了排查。 根据用户反馈,下载的时间段为10:50-11:30的录像,但是在播放时,显示总时长为23小时,实际应该为40分钟。排查中发现,10:50-11:30的录像存在于两个文件夹下,因为录像是按整点存储的。 经过测试发现,单独下载一个文件下的录像,出现异常的概率较小。测试多个时间段,发现不是每个时间段都存在,可能是某段时间录像的时间戳异常导致上述问题的发生。 EasyNVR在视频监控场景中可实现视频实时监控直播、云端录像、云存储、录像检索与回看、告警、级联等,极大满足行业的视频能力需求。