RTSP播放器或RTMP播放器常用的Evnet事件回调设计
很多开发者在开发RTSP或RTMP播放器的时候,不晓得哪些event回调事件是有意义的,针对此,我们以大牛直播SDK(github)的Android平台RTSP/RTMP直播播放端为例,简单介绍下常用的event id,总的来说,有以下几个部分组成:
1. 常规网络状态显示:如开始播放、网络中断、重连、收不到媒体数据等;
2. 视频宽高信息回调:用于上层显示回调的分辨率信息;
3. 快速切换url:如播放过程中,切换其他url时,分辨率发生变化,给到回调事件;
4. 录像状态:如开始录像、录像完成;
5. 实时快照:返回快照状态和快照存放路径;
6. 数据缓冲状态:如开始buffering、buffering percent、停止buffering;
7. 流实时下载回调:显示播放rtsp或rtmp流时,实时流量,注意,这块最好是可设置回调时间间隔,防止不必要的资源消耗;
8. RTSP错误状态:如401鉴权不通过。
以下接口定义可供参考:
|
Android 播放端 SDK Event 回调说明 |
|
|
事件 ID |
事件描述 |
|
EVENT_DANIULIVE_ERC_PLAYER_STARTED |
开始播放 |
|
EVENT_DANIULIVE_ERC_PLAYER_CONNECTING |
播放端连接中 |
|
EVENT_DANIULIVE_ERC_PLAYER_CONNECTION_FAILED |
播放端连接失败 |
|
EVENT_DANIULIVE_ERC_PLAYER_CONNECTED |
播放端连接成功 |
|
EVENT_DANIULIVE_ERC_PLAYER_DISCONNECTED |
播放端连接断开 |
|
EVENT_DANIULIVE_ERC_PLAYER_STOP |
停止播放 |
|
EVENT_DANIULIVE_ERC_PLAYER_RESOLUTION_INFO |
返回视频宽、高信息 |
|
EVENT_DANIULIVE_ERC_PLAYER_NO_MEDIADATA_RECEIVED |
收不到媒体数据(可能 是 URL错误) |
|
EVENT_DANIULIVE_ERC_PLAYER_SWITCH_URL |
快速切换 URL |
|
EVENT_DANIULIVE_ERC_PLAYER_RECORDER_START_NEW_FILE |
开始一个新的录像文件 (param3 返回包含录像 路径在内的录像文件 名) |
|
EVENT_DANIULIVE_ERC_PLAYER_ONE_RECORDER_FILE_FINISHED |
已生成一个录像文件 (param3 返回包含录像 路径在内的录像文件 名) |
|
EVENT_DANIULIVE_ERC_PLAYER_CAPTURE_IMAGE |
播放端实时快照 |
|
EVENT_DANIULIVE_ERC_PLAYER_START_BUFFERING |
开始缓冲数据 |
|
EVENT_DANIULIVE_ERC_PLAYER_BUFFERING |
缓冲中(param1 参数 会返回缓冲百分比) |
|
EVENT_DANIULIVE_ERC_PLAYER_STOP_BUFFERING |
停止缓冲数据 |
|
EVENT_DANIULIVE_ERC_PLAYER_DOWNLOAD_SPEED |
返回当前 RTSP/RTMP 流 实时下载速度 |
|
EVENT_DANIULIVE_ERC_PLAYER_RTSP_STATUS_CODE |
RTSP 收到错误码,可能 是用户名、密码不对 |
RTSP播放器或RTMP播放器常用的Evnet事件回调设计的更多相关文章
- 如何实现Windows平台RTMP播放器/RTSP播放器播放窗口添加OSD文字叠加
好多开发者在做Windows平台特别是单屏多画面显示时,希望像监控摄像机一样,可以在播放画面添加OSD台标,以实现字符叠加效果,大多开发者可很轻松的实现以上效果,针对此,本文以大牛直播SDK (Git ...
- 开发个RTMP播放器居然这么难?RTMP播放器对标和考察指标
好多开发者提到,RTMP播放器,不知道有哪些对标和考察指标,以下大概聊聊我们的一点经验,感兴趣的,可以关注 github: 1. 低延迟:大多数RTMP的播放都面向直播场景,如果延迟过大,严重影响体验 ...
- Android第三方开源SeekBarCompat:音乐类播放器等APP进度条常用
Android第三方开源SeekBarCompat:音乐类播放器等APP进度条常用 Android平台原生的SeekBar设计简单,然而,比如现在流行的一些音乐播放器的播放进度控制条,如果直接使 ...
- RTMP播放器开发填坑之道
好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTMP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github: 1. 低延 ...
- 关于rtsp转码rtmp播放的两种方式,客户端直接转,远程服务器转
需求 一.场景 用户多家门店有监控探头,设备是海康的和大华的.用户总部和门店不在一个网络下,并且总部要能实时调用查看门店监控,和门店回放画面.我们知道监控摄像机获取的视频是 rtsp 流的格式. 只能 ...
- EasyPlayerPro windows播放器本地音频播放音量控制实现
背景描述 作为一个播放器, 除了能播放视频和声音外,音量控制是绝对不能缺少的功能; 本文在音视频播放的基础上,增加对音量的控制: 实现流程 调用mixerGetDevCaps获取音频输出设备列表; 打 ...
- 22_Android中的本地音乐播放器和网络音乐播放器的编写,本地视频播放器和网络视频播放器,照相机案例,偷拍案例实现
1 编写以下案例: 当点击了"播放"之后,在手机上的/mnt/sdcard2/natural.mp3就会播放. 2 编写布局文件activity_main.xml <Line ...
- H5播放器内置播放视频(兼容绝大多数安卓和ios)
关于H5播放器内置播放视频,这个问题一直困扰我很长一段时间,qq以前提供白名单已经关闭,后来提供了同层属性的控制,或多或少也有点差强人意. 后来一次偶然发现一个非常简单的方法可以实现. 只需要给vid ...
- (1)H5实现音乐播放器【正在播放-歌词篇】
近期闲来无事,就想着复习一下前端的东西,然后正好跟朋友搞了一个公共开放的音乐api接口,就想着写一个音乐播放器玩玩! 话不多说,直接上图,然后上代码 [播放器显示正在播放] 实现功能: 1:歌词随着歌 ...
随机推荐
- 不花钱~Python制作视频解析免费追剧神器
同学们在闲暇之余是否喜欢看电影或者电视剧呢? 今天带领大家使用python制作能免费追剧的桌面软件.还在等什么?发车了! 效果我就不再这里演示了https://jq.qq.com/?_wv=1027& ...
- Android Studio 的初次使用
记录我第一次使用Android Studio时遇到的问题以及一些简单的笔记. 我所使用的是Android Studio 2.2版本 遇到的问题 创建一个Hello World!项目无疑是相当简单的,我 ...
- 【FAQ】华为帐号服务报错 907135701的常见原因总结和解决方法
很多开发者在接入华为帐号服务时,经常会出现907135701的报错.根据官网文档说明,错误码907135701表示: 这个错误码在安卓和鸿蒙上都会出现,导致该报错的原因有很多,开发者可以按照下面几点进 ...
- 卸载office密钥
一.管理员身份运行命令提示行: 二.命令提示行上输入: cd C:\Program Files\Microsoft Office\Office16 弹出如下内容: C:\Program Files\M ...
- Java封装Get/Post类
封装的类: package pers.hmi.translate; import java.io.BufferedReader; import java.io.IOException; import ...
- NGINX屏蔽垃圾爬虫
if ($http_user_agent ~* (80legs.com|Abonti|AcoonBot|Acunetix|adbeat_bot|AddThis.com|adidxbot|ADmantX ...
- IDEA 开发工具-插件{[转载]
00 idea 开发工具使用技巧 01 idea插件推荐-- 02 IDEA插件 03 IDEA值得推荐的20款优秀的插件 04 IDEA插件精选」安利一个IDEA骚操作:一键生成方法的序列图
- 基于SqlSugar的开发框架循序渐进介绍(12)-- 拆分页面模块内容为组件,实现分而治之的处理
在早期的随笔就介绍过,把常规页面的内容拆分为几个不同的组件,如普通的页面,包括列表查询.详细资料查看.新增资料.编辑资料.导入资料等页面场景,这些内容相对比较独立,而有一定的代码量,本篇随笔介绍基于V ...
- ExpressionChangedAfterItHasBeenCheckedError详细解释
一个angular组件,他的生命周期是这样的 update bound properties for all child components/directives call ngOnInit, On ...
- YII事件EVENT示例
模型中/** * 在初始化时进行事件绑定 */ public function init() { $this->on(self::EVENT_HELLO,[$this,'sendMail']); ...