自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)

原创 live555流媒体服务器在解决客户端异常掉线后没有释放相应资源问题的解决方法后续

在上一篇《live555流媒体服务器在解决客户端异常掉线后没有释放相应资源问题的解决方法》的没有释放稍有区别,上一篇是某一个通道没有客户端访问了, 要释放相应资源,而今天要说的,是多个客户端访问同一路源, 其中某个客户端异常断电了(比如NVR断电), 上次的方法就不适用于这种情况了。例如,两台电脑上分别打开一个客户端,连接EasyRTSPServer中的同一个源,在播放过程中,将一台电脑的网卡直...

2019-10-14 10:00:30 207

原创 live555流媒体服务器在解决客户端异常掉线后没有释放相应资源问题的解决方法

我们在基于live555研发流媒体服务器EasyRTSPServer,经过一年多的商用,已经表现得非常稳定了,今天有个客户反馈,在客户端突然断电后,EasyRTSPServer中有部分资源没有释放。分析问题压力测试都已经做过了,包括7x24小时不间断的频繁断连,都没有问题。突然断电…. 这个嘛… 还没试过。其实这个肯定不是非得突然断电,复现起来也相对比较容易,直接拔网线或将在正常工作...

2019-10-14 09:56:42 284

原创 live555开源流媒体服务器实现直播秒开的构思

live555开源流媒体服务器实现的是视频和音频的数据传输,在客户端请求音视频后,由上层调用程序将音视频数据推进队列, 待和客户端的RTSP交互完成后,再通过RTP将音视频数据发给客户端; 在客户端往往要2-3秒后才出视频画面;需求分析:我们封装实现的EasyRTSPServer是基于live555改造而来,在上层调用程序将音视频推给EasyRTSPServer时,实际上是拷贝到了内存队列, ...

2019-10-14 09:54:17 349

原创 基于live555开源流媒体服务器开发的EasyRTSPServer实现主动关闭指定通道session的方法

我们在基于live555研发音视频流媒体服务器时,在某些特定场景下, 需要主动关闭某一通道对应的所有连接,即要立即close所有观看当前视频通道的所有session;解决方案1.主动关闭通道APIEasy_API Easy_I32 Easy_APICALL EasyRtspServer_ResetChannel(EASY_CHANNEL_HANDLE channelHandle);//在...

2019-10-14 09:49:49 172

原创 基于live555开源流媒体服务器开发的EasyRTSPServer实现自定义数据与音视频数据的同步实时传输解决方案

基于live555开源流媒体服务器开发的EasyRTSPServer实现的是视频和音频的数据传输,而随着智能分析的应用越来越多,如何将分析结果传给客户端也势在必行了。分析问题EasyRTSPServer基于live555改造而来,通过分析代码可以知道,其实它已经自带了metadata的传输. 我们要做的就是怎样将这个metadata用起来.解决方案内部实现:首先要在SDP中增加Meta...

2019-10-14 09:44:34 151

原创 基于live555研发的EasyRTSPServer嵌入式流媒体服务器解决对接海康NVR时G726音频不能正常播放的问题

我们在基于live555研发实现对接海康NVR时候,发现视频正常,但音频不能正常播放。基于live555研发的EasyRTSPServer在接入输出视频编码为H.264, 音频编码格式为G726,当接入视频源都来自海康的摄像机时,摄像机直接接入海康NVR是可以正常播放的,但接入live555研发的EasyRTSPServer是有问题的,接入的音频编码格式如下:这里可以排除摄像机源, 问题肯定出...

2019-10-14 09:39:38 172

原创 live555作为RTSP流媒体服务器RTSPServer时解决对接海康NVR时G711音频不能正常播放的问题

live555作为NVR内置的流媒体服务器RTSPServer在对接海康NVR,视频正常,音频不能正常播放, 但VLC可以正常播放。经过问题的分析,发现live555作为NVR流媒体服务器输出视频为H264, 音频格式为G711uLaw时,源都来自海康的摄像机,而该摄像机直接接入海康NVR是可以正常播放的,接入live555流媒体服务器不正常。通过抓包对比分析,发现海康相机直连NVR中, sd...

2019-10-14 09:30:46 365

原创 live555流媒体服务器解决客户端异常掉线后导致服务端通道阻塞的问题

live555在Linux环境下会因为客户端异常掉线后,偶现导致部分通道不能再被访问的问题,我们描述一下这个问题修复的过程。本来是分析服务端CLOSE_WAIT的问题,在调试的过程中, 却又发现了阻塞,认真分析了live555的事件调用流程后,发现只要从客户端收到数据,就会执行GenericMediaServer::ClientSession::noteLiveness(),在该函数中会删除上一...

2019-10-14 07:56:02 264

原创 基于live555开源流媒体服务器设计的EasyRTSPServer流媒体服务器接口

我们在live555开源流媒体服务器的基础上封装了一层,使得用户更能轻松地调用到live555,省去了复杂的RTSP/RTCP与RTP流程,只需要传入参数和编码后的数据就可以了。在API使用说明之前,先列一下功能点吧:支持256路音视频同步转发(具体受限于网络环境和CPU);支持视频编码: H264、H265、MPEG4、MJPEG;支持音频编码: G711、G726, AAC;支持网...

2019-10-14 07:50:32 188

原创 live555开发NVR/IPC RTSPServer时对视频录像回放控制的支持方法

我们在研发live555用于集成在NVR时,实时流可通过回调URL让上层应用去拉流再转发就可以了,是否可以让其也支持回放流呢? 答案是肯定的。我们发现,在live555官方代码中就已支持回放控制,只是控制部分需要改成我们自己实现的部分,将控制消息通过回调函数回调出来。解决方案参考代码如下:#include "LiveServerMediaSubsession.h"LiveServer...

2019-10-14 07:46:26 332

原创 live555最新版本修改对ipv6的支持

在live555官方代码中只支持IPv4, 现实环境中绝大多数项目也是IPv4, 但是用支持IPv6的EasyRTSPClient去连接海康的相机,人家早就支持IPv6了。并且现工程投标中也有部分明确需要IPv6, 所以在原IPv4基础上,动手改造支持IPv6。那么如何支持呢?方法如下:定义IPV4和IPV6live_ipv4_ipv6.htypedef enum LIVE_IPVER_E...

2019-10-12 19:05:35 178

原创 live555 RTSP流媒体服务器如何修改SDK中的sps/pps/vps为可选项

在使用live555做为转发服务器, 在处理客户端请求时, 有时前端的流还没过来,而又需要及时的回复客户端,在live555官方代码中,如果不填写vps(H265)&sps&pps的话,是直接返回失败的, 所以需要对该流程做修改, 以保证和客户端的正常交互;分析问题找到生成sdp信息的位置,修改其中的逻辑;解决问题详见以下灰色背景中的代码:char const* H264...

2019-10-12 19:01:10 321

原创 live555 RTSP流媒体服务器解决live555多线程版本运行效率问题的解决方案

在之前的博客中我们描述说过怎样将单线程改造为多线程, 现就多线程的效率问题再补充一点说明。在GenericMediaServer.h中声明MultiThread_CORE_T结构体,如下:#define MAX_BATCH_CLIENT_NUM 5typedef struct __LIVE_THREAD_TASK_T{ int id; TaskScheduler *pSu...

2019-10-12 18:59:21 448

原创 live555作为RTSP流媒体服务器时Server端多track而客户端仅请求一个track,当客户端关闭时没有关闭流的问题解决方案

当我们使用live555作为流媒体服务器时,某个通道对应的所有客户端断开后, 不能正常回调关闭。某一通道同时支持视频和音频输出, 即video和audio两个trackVLC和EasyPlayer播放库来中的RTSPClient则都会请求(所以不存在问题);而某些客户端则只请求了一个track, 比如video;此时再关闭,会有两种情况:在VLC或自有播放库来断开连接时,都会正常回调关闭...

2019-10-12 18:52:22 134

原创 live555做流媒体服务器时解决rtp over udp模式下, 客户端没有发送teardown时直接关闭导致RTSPServer端没有即时关闭流的问题解决方法

在我们使用live555作为RTSP服务器时,客户端在rtp over udp模式下, rtsp客户端没有发送teardown而直接断开连接时需要等待65秒才回调关闭的问题。分析问题在RTSPClientConnection中没有保存相应的session值, 所以在RTSPClientConnection断开时, 并没有删除相应的RTSPClientSession;解决问题在RTSPCli...

2019-10-12 18:48:46 171

原创 live555作为RTSP客户端对接大华的某款球机RTSP流时不能预览问题的解决方案

我们使用live555作为RTSP客户端拉取对接大华的球机RTSP直播流时,不能正常预览,球机在客户现场,型号未知。这种情况下,我们分析了,我们使用live555已接过N多种不同的摄像机, 包括大华的相机之前也接过,没有出现过这种问题. 而客户现场的电脑抓包软件也有问题,不能正常工作. 只能加日志打印了.分析问题具体地址是: rtsp://admin:12345@192.168.1.100...

2019-10-12 18:45:03 115

原创 live555做RTSPClient客户端如何兼容一帧中多NAL单元的摄像机

我们在使用live555作为RTSPClient接入一款三星的H.265摄像机时出错,回调的帧数据无法正常预览,通过打印,看到这个回调的帧类型分别是: IIIIIIIPPPPPPPPPPPPPPPPPPPPIIIIPPPPPPP分析问题分析帧数据 00 00 00 01 40 00 00 00 42 00 00 00 44 00 00 00 4E 00 00 00 01 21...

2019-10-12 18:41:20 92

原创 live555 RTSPClient客户端修正多网卡多ip情况下解码器不能解码显示问题

问题海康NVR接入正常,但接入海康解码器出不来图像;分析海康解码器是以rtp over udp的方式进行取流;如果运行streamingServer的PC, 网络设置为以下两种情况,则都可以正常上墙显示:本机仅设置一个IP, 且和解码器在同一网段;本机有两个IP, 如192.168.xx.xx 和 190.168.xx.xx, 解码器网段为190.168.xx.xx;当同一网卡设...

2019-10-11 23:30:23 238 1

原创 live555多线程实现方案概述

EasyRTSPServer流媒体服务器基于live555改造而来,live555天生是个单线程, 用在摄像机上效率没有问题,毕竟连接数不多,这已经在EasyIPCamera中得到验证. 如果用在NVR或流媒体服务器时,基于性能考量,则必须要改造为多线程。这是一个比较困难的过程, 多线程的处理主要集中在GenericMediaServer, 并且要将多线程中的UsageEnvironment传递...

2019-10-11 23:24:50 578 1

原创 优化扩展live555支持MP2T(mpeg2ts)RTSP拉流附源代码

live555直接请求IPTV RTSP的smil流时,IPTV服务器返回给客户端的sdp信息中的m=字段,这个媒体类型live555是无法识别的,也就是MP2T(mpeg2-ts)流,从抓包来看,电信IPTV也就是将ts流通过RTP进行打包分发的,而我们的转发服务器也不需要经过任何的RTP组包和封包流程,直接将获取到的RTP数据进行转发就行了,那么,我们第一步就是进行live555的改造,让li...

2019-10-11 23:20:27 121

原创 最新live555优化扩展ipv6功能支持苹果版本应用上架AppStore

live555的发展历史实在是非常悠久,保守估计已经发展了至少18年以上了,同时,这也导致了live555在很多架构和考虑上面不能满足现代化的多线程、ipv6方面的需求,虽然官方也开启了对ipv6功能支持的众筹,但是已经很久了,预计很长时间内是不会有这个计划支持了,因为要改动的地方还真是蛮多的:今天我们要来聊一下我们在live555扩展IPv6方面是怎么做到的!设计过程IPV4 地址...

2019-10-11 14:49:54 71

原创 live555中关于时间戳间隔与fDurationInMicroseconds的计算方法

流媒体开发相对比较久的同学,可能经常一抓包或者一看数据就会对fps25、Timestamp间隔40、RTP时间戳增长360非常熟悉,但是这个40、360是怎么得来的还不是非常清楚,尤其是这个时间戳的间隔,并不知道是怎么计算来的,今天我们就分别对音视频时间戳中的时间间隔来做一个了解:在live555中fDurationInMicroseconds表示单个视频或者音频帧所占用的时间间隔,也就是秒,也...

2019-10-11 14:42:07 248

原创 对EasyDarwin开源项目2018的思考与2019发展的规划:继续站在巨人的肩膀引入更多巨人

EasyDarwin@2018思考从2012年开始接触Darwin Streaming Server,到2018年从底层开始完全重新架构、研发、完成,EasyDarwin这个项目已经发展了6年了,时间飞逝,那时候咱们工作时间还不是很长,在对架构的理解上还是比较浅显,但是经过多年的发展,给我最大的一个理解是:顺势而为!以EasyDarwin 2018年的发展为例,我们经历了两次彻底的迭代,一次是...

2019-04-28 14:25:19 309 1

原创 同时RTSP_RTMP_HTTP_HLS_视频文件播放的Android安卓全功能播放器EasyPlayerPro

EasyPlayerProAndroid安卓版EasyPlayerPro全功能播放器,是一款支持RTSP、RTMP、HTTP、HLS、本地文件多种流媒体协议的播放器版本。Android上同时保留原来RTSP专用播放器,功能精炼,小而精,小而美!EasyPlayerPro在完美地继承了ffmpeg的优势,又在内核上做了深层次的优化,使得播放效果上做到了极大程度的可控,支持倍数播放、支持硬解码

2018-01-07 15:41:57 5068 2

空空如也

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除