Real Time Messaging Protocol(RTMP)即实时消息传输协议,是 Adobe 公司开发的一个基于 TCP 的应用层协议,目前国内的视频云服务都是以 RTMP 为主要推流协议。
EasyRTMP推流组件
EasyRTMP是一套调用简单、功能完善、运行高效稳定的RTMP推流功能组件,经过多年客户实战和线上运行打造,支持RTMP推送断线重连、环形缓冲、智能丢帧、网络事件回调,支持Windows、Linux、ARM、Android、iOS平台,支持市面上绝大部分的RTMP流媒体服务器,能够完美应用于各种行业的直播需求,手机直播、桌面直播、摄像机直播、课堂直播等方面。结合EasyDSS流媒体服务器,为开发者提供专业、稳定的直播推流、转码、分发服务,全面满足低超低延迟、超高画质、超大并发访问量的要求。
今天主要跟大家分享用安卓RTMP直播推流进行音频侦听时,出现播放几秒后就无法播放问题的解决方法。
最近在跟进一个公安侦听的技术项目时,遇到一个问题,用户采用EasyRTMP进行直播推流,但是与传统的音视频直播推流不一样的是,这里只需要做音频侦听,只需要推送音频流。
用户采用EasyRTMP进行单音频推流时,出现在EasyDSS网页管理后台播放一段时间后,就停止了播放,但数据流还一直存在;
我们通过对比EasyDSS后台的网页播放、EasyPlayer原生播放、ffplay播放发现,原生播放都是OK的,只有网页播放会有问题,因为网页播放是严格遵循播放时间戳来进行播放的,所以,我们有理由怀疑是因为时间戳的原因造成的在H5端无法播放,而原生播放器是按照缓冲区来进行播放的;
(3)解决问题
于是我们对EasyRTMP的代码进行了分析,发现在没有视频数据(也就是只推送音频)做同步的情况下,原来的时间轴标准没有了,导致音频的时间戳错误;
我们在RTMP推流中加入了判断,当判断到只有音频推流时,我们独立将音频数据作为时间戳时间轴,不以视频时间戳时间轴为标准,就解决了问题。
EasyRTMP功能特点
无论是个人开发者还是企业级应用,只需要简单的几个接口调用就可以完成一套完整的互联网直播应用的上架
配套完整的直播、录像、旋转功能示例,用户直接复用即可选择嫁接自定义功能
高效缓冲和发送设计模式,能非常灵活地让用户自定义延时和缓冲区的大小
长期的在线运行检验,众多客户的项目成功经验