背景分析
众所周知,RTSP协议是一个流媒体协议,可以实现直播和点播形式的音频与视频流的播放。RTSP协议定义了多种服务器-客户端之间交互的接口,主要有OPTIONS,DESCRIBE,SETUP,PLAY,TEARDOWN,RECORD,ANNOUNCE。网络上已经有很多针对RTSP协议的文章,我这里不准备进行过多介绍。RTSP并不包括具体数据的传输,该功能一般由RTP与RTCP协议来实现,并可以通过TCP或UDP两种底层传输方式进行。
下图是典型的RTSP直播过程中服务端-客户端主要交互过程:
EasyRTSPServer就是一套稳定、高效、可靠、多平台支持的RTSP-Server组件,今天为大家分享用户在使用EasyRTSPServer对接海康NVR时G726时,音频不能正常播放的问题
近期我们遇到了EasyRTSPServer对接海康NVR,视频正常,但音频不能正常播放这样的问题。
EasyRTSPServer输出视频为H264,音频格式为G726,源都来自海康的摄像机,而该摄像机直接接入NVR是可以正常播放的。
我们可以排除摄像机源,问题就在EasyRTSPServer,通过抓包对比,发现海康每次发包大小是固定的,而EasyRTSPServer的音频发包则是很大的一帧,说明是将多个音频帧组成一个大的帧发出了。
在创建SimpleRTPSink中,指定allowMultipleFramesPerPacket参数为false即可。
EasyRTSPServer是一套稳定、高效、可靠、多平台支持的RTSP-Server组件,接口调用非常简单成熟,无需关注RTSPServer中关于客户端监听接入、音视频多路复用、RTSP具体流程、RTP打包与发送等相关问题,支持多种音视频格式,再也不用去处理整个RTSP OPTIONS/DESCRIBE/SETUP/PLAY/RTP/RTCP的复杂流程和担心内存释放的问题了,非常适合于安防领域、教育领域、互联网直播领域等。