zoukankan      html  css  js  c++  java
  • 多线程RTSPServer组件EasyRTSPServer对接海康NVR视频正常音频不能播放问题解析

    背景分析

    众所周知,RTSP协议是一个流媒体协议,可以实现直播和点播形式的音频与视频流的播放。RTSP协议定义了多种服务器-客户端之间交互的接口,主要有OPTIONS,DESCRIBE,SETUP,PLAY,TEARDOWN,RECORD,ANNOUNCE。网络上已经有很多针对RTSP协议的文章,我这里不准备进行过多介绍。RTSP并不包括具体数据的传输,该功能一般由RTP与RTCP协议来实现,并可以通过TCP或UDP两种底层传输方式进行。

    下图是典型的RTSP直播过程中服务端-客户端主要交互过程:

    EasyRTSPServer架构.png

    EasyRTSPServer就是一套稳定、高效、可靠、多平台支持的RTSP-Server组件,今天为大家分享用户在使用EasyRTSPServer对接海康NVR时G726时,音频不能正常播放的问题

    提出问题

    近期我们遇到了EasyRTSPServer对接海康NVR,视频正常,但音频不能正常播放这样的问题。

    分析问题

    EasyRTSPServer输出视频为H264,音频格式为G726,源都来自海康的摄像机,而该摄像机直接接入NVR是可以正常播放的。

    36.png

    关于EasyRTSPServer

    我们可以排除摄像机源,问题就在EasyRTSPServer,通过抓包对比,发现海康每次发包大小是固定的,而EasyRTSPServer的音频发包则是很大的一帧,说明是将多个音频帧组成一个大的帧发出了。

    解决问题

    在创建SimpleRTPSink中,指定allowMultipleFramesPerPacket参数为false即可。

    37.png

    EasyRTSPServer是一套稳定、高效、可靠、多平台支持的RTSP-Server组件,接口调用非常简单成熟,无需关注RTSPServer中关于客户端监听接入、音视频多路复用、RTSP具体流程、RTP打包与发送等相关问题,支持多种音视频格式,再也不用去处理整个RTSP OPTIONS/DESCRIBE/SETUP/PLAY/RTP/RTCP的复杂流程和担心内存释放的问题了,非常适合于安防领域、教育领域、互联网直播领域等。

  • 相关阅读:
    Java基础00-模块36
    Java基础00-反射35
    Java基础00-Stream流34
    Java基础00-函数式接口33
    Java基础00-方法引用32
    运用龙格库塔法解大雷洛数平板绕流问题
    LB 学习日记
    Numba学习日记 —— 2019-12-5
    文件的操作及相关异常的处理
    time模块的两个函数time.clock()和time.time()的区别
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/12021235.html
Copyright © 2011-2022 走看看