live555
文章平均质量分 56
live555技术:多线程、ipv6、EasyRTSPClient、EasyRTSPServer、EasyStreamServer
EasyDarwin
这个作者很懒,什么都没留下…
展开
-
live555流媒体服务器在解决客户端异常掉线后没有释放相应资源问题的解决方法后续
在上一篇《live555流媒体服务器在解决客户端异常掉线后没有释放相应资源问题的解决方法》的没有释放稍有区别,上一篇是某一个通道没有客户端访问了, 要释放相应资源,而今天要说的,是多个客户端访问同一路源, 其中某个客户端异常断电了(比如NVR断电), 上次的方法就不适用于这种情况了。例如,两台电脑上分别打开一个客户端,连接EasyRTSPServer中的同一个源,在播放过程中,将一台电脑的网卡直...原创 2019-10-14 10:00:30 · 1025 阅读 · 0 评论 -
live555流媒体服务器在解决客户端异常掉线后没有释放相应资源问题的解决方法
我们在基于live555研发流媒体服务器EasyRTSPServer,经过一年多的商用,已经表现得非常稳定了,今天有个客户反馈,在客户端突然断电后,EasyRTSPServer中有部分资源没有释放。分析问题压力测试都已经做过了,包括7x24小时不间断的频繁断连,都没有问题。突然断电…. 这个嘛… 还没试过。其实这个肯定不是非得突然断电,复现起来也相对比较容易,直接拔网线或将在正常工作...原创 2019-10-14 09:56:42 · 1108 阅读 · 0 评论 -
live555开源流媒体服务器实现直播秒开的构思
live555开源流媒体服务器实现的是视频和音频的数据传输,在客户端请求音视频后,由上层调用程序将音视频数据推进队列, 待和客户端的RTSP交互完成后,再通过RTP将音视频数据发给客户端; 在客户端往往要2-3秒后才出视频画面;需求分析:我们封装实现的EasyRTSPServer是基于live555改造而来,在上层调用程序将音视频推给EasyRTSPServer时,实际上是拷贝到了内存队列, ...原创 2019-10-14 09:54:17 · 723 阅读 · 0 评论 -
基于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 · 588 阅读 · 1 评论 -
基于live555开源流媒体服务器开发的EasyRTSPServer实现自定义数据与音视频数据的同步实时传输解决方案
基于live555开源流媒体服务器开发的EasyRTSPServer实现的是视频和音频的数据传输,而随着智能分析的应用越来越多,如何将分析结果传给客户端也势在必行了。分析问题EasyRTSPServer基于live555改造而来,通过分析代码可以知道,其实它已经自带了metadata的传输. 我们要做的就是怎样将这个metadata用起来.解决方案内部实现:首先要在SDP中增加Meta...原创 2019-10-14 09:44:34 · 721 阅读 · 0 评论 -
基于live555研发的EasyRTSPServer嵌入式流媒体服务器解决对接海康NVR时G726音频不能正常播放的问题
我们在基于live555研发实现对接海康NVR时候,发现视频正常,但音频不能正常播放。基于live555研发的EasyRTSPServer在接入输出视频编码为H.264, 音频编码格式为G726,当接入视频源都来自海康的摄像机时,摄像机直接接入海康NVR是可以正常播放的,但接入live555研发的EasyRTSPServer是有问题的,接入的音频编码格式如下:这里可以排除摄像机源, 问题肯定出...原创 2019-10-14 09:39:38 · 707 阅读 · 0 评论 -
live555作为RTSP流媒体服务器RTSPServer时解决对接海康NVR时G711音频不能正常播放的问题
live555作为NVR内置的流媒体服务器RTSPServer在对接海康NVR,视频正常,音频不能正常播放, 但VLC可以正常播放。经过问题的分析,发现live555作为NVR流媒体服务器输出视频为H264, 音频格式为G711uLaw时,源都来自海康的摄像机,而该摄像机直接接入海康NVR是可以正常播放的,接入live555流媒体服务器不正常。通过抓包对比分析,发现海康相机直连NVR中, sd...原创 2019-10-14 09:30:46 · 1976 阅读 · 0 评论 -
live555流媒体服务器解决客户端异常掉线后导致服务端通道阻塞的问题
live555在Linux环境下会因为客户端异常掉线后,偶现导致部分通道不能再被访问的问题,我们描述一下这个问题修复的过程。本来是分析服务端CLOSE_WAIT的问题,在调试的过程中, 却又发现了阻塞,认真分析了live555的事件调用流程后,发现只要从客户端收到数据,就会执行GenericMediaServer::ClientSession::noteLiveness(),在该函数中会删除上一...原创 2019-10-14 07:56:02 · 1332 阅读 · 0 评论 -
基于live555开源流媒体服务器设计的EasyRTSPServer流媒体服务器接口
我们在live555开源流媒体服务器的基础上封装了一层,使得用户更能轻松地调用到live555,省去了复杂的RTSP/RTCP与RTP流程,只需要传入参数和编码后的数据就可以了。在API使用说明之前,先列一下功能点吧:支持256路音视频同步转发(具体受限于网络环境和CPU);支持视频编码: H264、H265、MPEG4、MJPEG;支持音频编码: G711、G726, AAC;支持网...原创 2019-10-14 07:50:32 · 585 阅读 · 0 评论 -
live555开发NVR/IPC RTSPServer时对视频录像回放控制的支持方法
我们在研发live555用于集成在NVR时,实时流可通过回调URL让上层应用去拉流再转发就可以了,是否可以让其也支持回放流呢? 答案是肯定的。我们发现,在live555官方代码中就已支持回放控制,只是控制部分需要改成我们自己实现的部分,将控制消息通过回调函数回调出来。解决方案参考代码如下:#include "LiveServerMediaSubsession.h"LiveServer...原创 2019-10-14 07:46:26 · 1303 阅读 · 0 评论 -
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 · 622 阅读 · 0 评论 -
live555 RTSP流媒体服务器如何修改SDK中的sps/pps/vps为可选项
在使用live555做为转发服务器, 在处理客户端请求时, 有时前端的流还没过来,而又需要及时的回复客户端,在live555官方代码中,如果不填写vps(H265)&sps&pps的话,是直接返回失败的, 所以需要对该流程做修改, 以保证和客户端的正常交互;分析问题找到生成sdp信息的位置,修改其中的逻辑;解决问题详见以下灰色背景中的代码:char const* H264...原创 2019-10-12 19:01:10 · 1238 阅读 · 0 评论 -
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 · 1368 阅读 · 0 评论 -
live555作为RTSP流媒体服务器时Server端多track而客户端仅请求一个track,当客户端关闭时没有关闭流的问题解决方案
当我们使用live555作为流媒体服务器时,某个通道对应的所有客户端断开后, 不能正常回调关闭。某一通道同时支持视频和音频输出, 即video和audio两个trackVLC和EasyPlayer播放库来中的RTSPClient则都会请求(所以不存在问题);而某些客户端则只请求了一个track, 比如video;此时再关闭,会有两种情况:在VLC或自有播放库来断开连接时,都会正常回调关闭...原创 2019-10-12 18:52:22 · 812 阅读 · 0 评论 -
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 · 978 阅读 · 0 评论 -
live555作为RTSP客户端对接大华的某款球机RTSP流时不能预览问题的解决方案
我们使用live555作为RTSP客户端拉取对接大华的球机RTSP直播流时,不能正常预览,球机在客户现场,型号未知。这种情况下,我们分析了,我们使用live555已接过N多种不同的摄像机, 包括大华的相机之前也接过,没有出现过这种问题. 而客户现场的电脑抓包软件也有问题,不能正常工作. 只能加日志打印了.分析问题具体地址是: rtsp://admin:12345@192.168.1.100...原创 2019-10-12 18:45:03 · 871 阅读 · 0 评论 -
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 · 493 阅读 · 1 评论 -
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 · 1282 阅读 · 1 评论 -
live555多线程实现方案概述
EasyRTSPServer流媒体服务器基于live555改造而来,live555天生是个单线程, 用在摄像机上效率没有问题,毕竟连接数不多,这已经在EasyIPCamera中得到验证. 如果用在NVR或流媒体服务器时,基于性能考量,则必须要改造为多线程。这是一个比较困难的过程, 多线程的处理主要集中在GenericMediaServer, 并且要将多线程中的UsageEnvironment传递...原创 2019-10-11 23:24:50 · 2047 阅读 · 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 · 850 阅读 · 0 评论 -
最新live555优化扩展ipv6功能支持苹果版本应用上架AppStore
live555的发展历史实在是非常悠久,保守估计已经发展了至少18年以上了,同时,这也导致了live555在很多架构和考虑上面不能满足现代化的多线程、ipv6方面的需求,虽然官方也开启了对ipv6功能支持的众筹,但是已经很久了,预计很长时间内是不会有这个计划支持了,因为要改动的地方还真是蛮多的:今天我们要来聊一下我们在live555扩展IPv6方面是怎么做到的!设计过程IPV4 地址...原创 2019-10-11 14:49:54 · 238 阅读 · 0 评论 -
live555中关于时间戳间隔与fDurationInMicroseconds的计算方法
流媒体开发相对比较久的同学,可能经常一抓包或者一看数据就会对fps25、Timestamp间隔40、RTP时间戳增长360非常熟悉,但是这个40、360是怎么得来的还不是非常清楚,尤其是这个时间戳的间隔,并不知道是怎么计算来的,今天我们就分别对音视频时间戳中的时间间隔来做一个了解:在live555中fDurationInMicroseconds表示单个视频或者音频帧所占用的时间间隔,也就是秒,也...原创 2019-10-11 14:42:07 · 1369 阅读 · 0 评论