各种RTMP直播流播放权限_音视频_数据花屏_问题检测与分析工具EasyRTMPClient

之前的一篇博客《网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient》,我们介绍了RTSP流的检测和分析工具EasyRTSPClient,可以说已经是深入了我的平时运维工作中了,当我们发现有任何RTSP源或者摄像机无法播放的时候,我用EasyRTSPClient工具运行检测一下,就立即能够知道问题原因,真是非常非常方便;

EasyRTSPClient方案Github:https://github.com/EasyDSS/EasyRTSPClient

有librtmp,为什么还要做EasyRTMPClient?

毋庸置疑,librtmp是RTMP领域的巨人之一,无论是RTMP-Client,还是RTMP-Push,无数的项目都在引用librtmp实现播放器、手机直播、编码器等功能,实际上我们做RTMPClient也无需再实现一套,直接使用librtmp就可以了,但是,librtmp距离我们商用的RTMPClient的需求总是差这么或者那么几个功能:

  • 自动重连:

    实际自动重连功能在librtmp外围调用也是可以实现的,但是由于开发者的水平参差不齐,要非常好地实现重连回收,做稳定重连这个功能点,是非常困难的,尤其是各种内存和对象以及重连时机的选择,我们选择在底层进行RTMPClient重连,为上层开发者减少由于协议带来的学习成本和开发成本,这样,哪怕上层开发者不懂RTMP技术,也可以非常好地实现一个稳定、高效的RTMP播放器客户端;

  • 裸数据回调:

    librtmp回调出来的flv数据,就好比RTSP客户端回调出来的有时候是RTP数据,这些数据比较难被H.264工具做gop和关键帧的分析,只有都统一在底层将flv封装成H.264数据类型,上层无论是做解码显示,还是录像存储,还是数据分析,都非常简单了,不用再在上次做sps、pps解析,做flv合并;

EasyRTMPClient

  • 错误码及错误信息回调:

    遇到无法播放的RTMP流是,librtmp没有很好地统一将对应的错误码,比如:无法访问错误、socket错误、401错误等等,我们需要这些回调以一个统一的出口回调到上层,再由上层进行对应的处理方案;

EasyRTMPClient

  • 小而美:

    实际上述锁描述的功能点ffmpeg都是能做到的,但是ffmpeg只做一个RTMPClient功能的话,过于庞大,导致整个App的包会比较大,我们需要的是一个小而美的工具组件,被集成在用户的App中,开发者和用户能以极低的学习成本,就能轻松掌握需要开发的功能点;

EasyRTMPClient

EasyRTMPClient是一套非常稳定、易用、支持重连接的RTMPClient工具,以SDK形式提供,接口调用非常简单。该EasyRTMPClient库未使用或参考现有的任何RTMP库,完全自主实现,因此,EasyRTMPClient更易于维护,稳定性、可扩展性得以提升,同时,本RTMP库全平台支持(包括windows/linux 32&64,ARM各平台,android, ios)!

Github:https://github.com/EasyDSS/EasyRTMPClient

调用流程

RTMPSourceCallBack数据回调说明

EasyRTMPClient可以回调出多种类型的数据:

#define EASY_SDK_VIDEO_FRAME_FLAG  /*视频帧数据*/
#define EASY_SDK_AUDIO_FRAME_FLAG  /*音频帧数据*/
#define EASY_SDK_EVENT_FRAME_FLAG  /*事件帧/日志数据*/

EASY_SDK_VIDEO_FRAME_FALG 数据可支持的视频格式:

#define EASY_SDK_VIDEO_CODEC_H264

视频帧标识支持

#define EASY_SDK_VIDEO_FRAME_I  /* I帧 */
#define EASY_SDK_VIDEO_FRAME_P  /* P帧 */
#define EASY_SDK_VIDEO_FRAME_B  /* B帧 */

当回调出RTSP_FRAME_INFO-codec为EASY_SDK_VIDEO_CODEC_H264数据,RTSP_FRAME_INFO->type为EASY_SDK_VIDEO_FRAME_I关键帧时,我们输出的数据结构为SPS+PPS+I的组合:

|-----sps-----|-----sps-----|-------I Frame-------|
|             |             |                     |
|---------reserved1-----reserved2-------------length

EASY_SDK_AUDIO_FRAME_FLAG数据可支持多种音频格式:

#define EASY_SDK_AUDIO_CODEC_AAC  /* AAC */
#define EASY_SDK_AUDIO_CODEC_MP3  /* MP3 */

如果以上格式无法满足您的需求,可联系我们进行定制开发。

获取更多信息

邮件:support@easydarwin.org

QQ交流群:587254841

EasyDarwin开源流媒体服务器:www.EasyDarwin.org

EasyDSS商用流媒体解决方案:www.EasyDSS.com

EasyNVR无插件直播方案:www.EasyNVR.com

Copyright © EasyDarwin Team 2012-2017

EasyDarwin

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1619466.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

PPStream、PPlive等播放器花屏之解决办法

PPStream、PPlive等播放器花屏之解决办法 解决方法1:打开“Windows Meida Player”播放器,找到“工具”->“选项”->“性能”->“视频加速”,把“完全”滑块放到中间(如果仍不行可调整到无),然后按…

传奇花屏Win10登陆游戏时花屏的解决方法

随着win10的流行,原来很多传奇版本不能适应,必竟传奇是一款比较老的游戏,很多电脑现在初装都已经是Win10了,win10系统,玩单机时点开始游戏就出现花屏,换分辩率800X600没有用。 Win10系统花屏是因为登陆器不…

用户观看视频业务出现花屏故障

组网情况 如图所示,Switch的一端和组播服务器相连,并且将GE1/0/0加入Eth-Trunk 0,另一端下挂用户终端,并且将GE1/0/2加入Eth-Trunk 1。在Switch上部署了组播业务,下挂用户终端可以进行视频点播。 现象描述 用户终端…

ffmpeg解码花屏

问题: 解码为YUV420转为Bitmap后显示在屏幕上时,有三分之二为花屏:如图: 首先用h264Visa分析帧: 已经读出了sps等信息,这些信在解码第一帧时被写入环境变量中,所以下边的帧不需要sps了 而且在…

《Zookeeper》源码分析(二十三)之 客户端的命令处理过程

目录 客户端的命令处理过程1. ZooKeeper.create()2. ClientCnxn.submitRequest()3. SendThread.run()4. ClientCnxnSocket.doTransport()5. SendThread.readResponse() 客户端的命令处理过程 以创建节点命令为例,整个过程流程如下: CliCommand命令在抽…

自己动手完成数据恢复

简易数据恢复 数据恢复数据恢复原理FAT文件系统 NTFS文件系统在NTFS文件系统中的原理分析对于文件删除有一段时间时: 基于软件的文件恢复总结 数据恢复 数据恢复是一个很大的概念,包括文件恢复,分区恢复,分区格式化恢复&#xff0…

深入探讨C存储类和存储期——Storage Duration

🔗 《C语言趣味教程》👈 猛戳订阅!!! ​—— 热门专栏《维生素C语言》的重制版 —— 💭 写在前面:这是一套 C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅&#…

巨人网络305亿并购海外棋牌类游戏公司审核遭暂停

雷帝网 乐天 8月10日报道 巨人网络今日发布公告,宣布2018年8月10日收到中国证监会通知,决定对公司本次发行股份及支付现金购买资产并募集配套资金暨关联交易事项(简称“本次重组”)暂停审核。 据《上市公司重大资产重组管理办法》…

家乡的一种棋牌游戏

进来无事,想起了家乡的一种棋牌游戏,只记得小时候玩觉得蛮有趣,呵呵,现在想起就有一种用程序实现它的冲动, 呵呵,有想法就行动了,鉴于此款游戏由多人组合才能进行,所以还是选择C/S结…

C#棋牌游戏(如斗地主)

C#棋牌游戏 需求代码块定义枚举定义Card类定义CardLibrary类*定义Player类Main函数中实现结果展示 需求 需要定义Card类,该类包含特征: 每张牌的名字; 花色:红心、方块、梅花、黑桃; 牌号:1- 10、J、Q、K、小王、大王定义牌库CardLibrary类,…

自助棋牌室

1项目模块:商家模块(店铺展示、包厢展示、订单、订单搜索、店铺搜索) 用户模块(登录、注册、预约、充值、更换头像、续单、退单) 2项目技术:前端:js、jquery、vue2、vue3、后端:jdbc、java、servlet、mybatis 3功能实现: I 登录功能实现: 主要通过前后端交互实现,前后端实现流…

算法通过村第四关-栈白银笔记|手写栈操作

文章目录 前言1. 栈的基础概要1.1 栈的特征1.2 栈的操作1.3 Java中的栈 2. 栈的实现(手写栈)2.1 基于数组实现2.2 基于链表实现2.3 基于LinkedList实现 总结 前言 提示:我自己一个人的感觉很好 我并不想要拥有你 除非你比我的独处更加宜人 --…

【问题解决】无法加载文件 C:\Users\PJW\AppData\Roaming\npm\hpm.ps1,因为在此系统上禁止运行脚本

问题: PS Y:\BearPi-HM_Nano> hpm dist hpm : 无法加载文件 C:\Users\PJW\AppData\Roaming\npm\hpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policie…

intellj 无法运行程序

RT 在写作业的时候,导入老师项目,但是无法执行文件。 在这里插入图片描述 在项目模块中,添加内容根。添加目标源文件夹,解决问题。

【报错】nrm : 无法加载文件 …路径… ,因为在此系统上禁止运行脚本。

原因:核心是power shell的安全策略,将 nrm 命令视为了不安全脚本,不允许执行。只需要放开权限就行。 解决:通过管理员权限运行power shell,然后输入命令 set-ExecutionPolicy RemoteSigned 示例: 选择“是”…

com.android.phone已停止运行怎么解决方法,com.android.phone进程意外停止/已停止运行的原因及解决方法...

com.android.phone已停止怎么解决?小编带来了com.android.phone进程意外停止解决方法,有机友表示当手机刷机或root后就会出现“进程com.android.phone已停止”提示,不妨试一试下文的解决方法哦~ --原因 出现这种情况表明你的手机运行环境出现了比较大的…

在运行Android程序出现“×××已停止运行”

在运行Android程序时出现“已停止运行”的情况,点击“重新打开应用”后又提示“屡次停止运行”, 发现在Logcat中有这么一行提示:“Caused by: java.lang.NullPointerException: Attempt to invoke virtual method android.view.View android.…

无法加载文件 ,因为在此系统上禁止运行脚本

1 问题 在打开cmd命令行文件或者某个shell时,运行某个文件失败,并且显示无法加载文件 ,因为在此系统上禁止运行脚本。可能是因为你当前的shell窗口权限不够导致,可以先打开管理员权限的shell之后,修改脚本运行的策略即…

因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies

项目场景: 提示:这里简述项目相关背景: npm安装包后无法使用, 例如:npm install -g json-server 安装成功后 使用json-server命令 报错,如果没有安装过此包,一般会提示不是内部或者外部命令 问…

windows 已停止這個裝置,因為它發生了問題。

您的電腦在接入外接式裝置時出現" Windows 已停止這個裝置,因為它發生了問題。 (代碼 43)",如何解決? 一般情況下,是由於裝置非正常接入所引起的裝置驅動程式出現故障的錯誤,此時多插拔幾次即可解決。但如果…