BBASMLiveAdapterProtocol.h
7.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
//
// BBASMLiveAdapterProtocol.h
// SWAN
//
// Created by baidu on 2018/9/12.
// Copyright © 2018年 baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "BBASMAdapterBaseImplement.h"
extern NSString *const kBBASMLivePluginInfoVideoBitrate; // 当前视频编/码器输出的比特率,单位 kbps
extern NSString *const kBBASMLivePluginInfoAudioBitrate; // 当前音频编/码器输出的比特率,单位 kbps
extern NSString *const kBBASMLivePluginInfoVideoFPS; // 当前视频帧率
extern NSString *const kBBASMLivePluginInfoVideoGOP; // 当前视频 GOP,也就是每两个关键帧(I帧)间隔时长,单位 s
extern NSString *const kBBASMLivePluginInfoNetSpeed; // 当前的发送/接收速度
extern NSString *const kBBASMLivePluginInfoNetJitter; // 网络抖动情况,抖动越大,网络越不稳定
extern NSString *const kBBASMLivePluginInfoVideoWidth; // 视频画面的宽度
extern NSString *const kBBASMLivePluginInfoVideoHeight; // 视频画面的高度
extern NSString *const kBBASMLivePluginSchemeOptionStateChange; // 播放状态变化事件,detail = {code}
extern NSString *const kBBASMLivePluginSchemeOptionNetChange; // 网络状态通知,detail = {info}
/// 画面填充方式
typedef NS_ENUM(NSInteger, BBASMLivePlayerScalingMode){
///不缩放
BBASMLivePlayerScalingModeNone,
///在保持长宽比的前提下,缩放,使得在容器内完整显示出来(等比缩放,可能会产生黑边。)
BBASMLivePlayerScalingModeAspectFit,
///在保持长宽比的前提下,缩放,使充满容器。(等比填充,可能有部分画面被裁减。)
BBASMLivePlayerScalingModeAspectFill,
///缩放,使充满容器。未必保持长宽比例协调,有可能会拉伸至变形(等比填充,可能有部分画面被裁减。)
BBASMLivePlayerScalingModeFill
};
/**
播放器状态。
- BBASMLivePlayerPlaybackStateStopped: 停止。
- BBASMLivePlayerPlaybackStatePlaying: 播放。
- BBASMLivePlayerPlaybackStatePaused: 暂停。
- BBASMLivePlayerPlaybackStateInterrupted: 中断。
- BBASMLivePlayerPlaybackStateSeekingForward: 快进。
- BBASMLivePlayerPlaybackStateSeekingBackward: 快退。
*/
typedef NS_ENUM(NSInteger, BBASMLivePlayerPlaybackState) {
BBASMLivePlayerPlaybackStateStopped,
BBASMLivePlayerPlaybackStatePlaying,
BBASMLivePlayerPlaybackStatePaused,
BBASMLivePlayerPlaybackStateInterrupted,
BBASMLivePlayerPlaybackStateSeekingForward,
BBASMLivePlayerPlaybackStateSeekingBackward
};
typedef NS_ENUM(NSInteger, BBASMLivePlayerFullScreenDirection) {
BBASMLivePlayerFullScreenDirectionPortrait = 0, // 屏幕竖屏
BBASMLivePlayerFullScreenDirectionLeftLandscape = 90, // 屏幕逆时针90度
BBASMLivePlayerFullScreenDirectionRightLandscape = -90 // 屏幕顺时针90度
};
typedef void(^BBASMLivePlayerStatusCallback)(NSDictionary *response, NSString *liveId);
@protocol BBASMLiveAdapterProtocol <NSObject>
@property (nonatomic, strong) NSString *playURL; // 播放url
@property (nonatomic, strong) NSString *liveId; // liveid,用于上层保存id
@property (nonatomic, assign) BOOL isMuted; // 是否静音
@property (nonatomic, assign) BOOL backgroundMute; // 是否开启后台静音
@property (nonatomic, assign) BOOL needToggleFrameChasing; // 是否开启追帧
@property (nonatomic, assign) CGRect frame; // 布局
/*!
* @brief 播放状态回调
* {
* "sid" = code // 播放器状态码
* }
* code 说明
* 2001 已经连接服务器
* 2002 已经连接服务器,开始拉流
* 2003 网络接收到首个视频数据包(IDR)
* 2004 视频播放开始
* 2005 视频播放进度
* 2006 视频播放结束
* 2007 视频播放Loading
* 2008 解码器启动
* 2009 视频分辨率改变
* -2301 网络断连,且经多次重连抢救无效,更多重试请自行重启播放
* -2302 获取加速拉流地址失败
* 2101 当前视频帧解码失败
* 2102 当前音频帧解码失败
* 2103 网络断连, 已启动自动重连
* 2104 网络来包不稳:可能是下行带宽不足,或由于主播端出流不均匀
* 2105 当前视频播放出现卡顿
* 2106 硬解启动失败,采用软解
* 2107 当前视频帧不连续,可能丢帧
* 2108 当前流硬解第一个I帧失败,SDK自动切软解
* 3001 RTMP -DNS解析失败
* 3002 RTMP服务器连接失败
* 3003 RTMP服务器握手失败
* 3005 RTMP 读/写失败
*/
@property (nonatomic, copy) BBASMLivePlayerStatusCallback playerStatusCallback;
/*!
* @brief 网络状态回调
* {
* "videoBitrate" =当前视频编/码器输出的比特率,单位 kbps
* "audioBitrate" = 当前音频编/码器输出的比特率,单位 kbps
* "videoFPS" = 当前视频帧率
* "videoGOP" = 当前视频 GOP,也就是每两个关键帧(I帧)间隔时长,单位 s
* "netSpeed" = 当前的发送/接收速度
* "netStatus" = 网络状态:-1为未知;0为网络不可用;
* 1为无线广域网连接;2为WiFi连接
* "videoWidth" = 视频画面的宽度
* "videoHeight" = 视频画面的高度
* }
*/
@property (nonatomic, copy) BBASMLivePlayerStatusCallback networkStatusCallback;
@property (nonatomic, assign) BBASMLivePlayerScalingMode scalingMode; // 缩放方式
@property (nonatomic, strong) UIView *playerView; // 直播视图
@property (nonatomic, assign, readonly) BBASMLivePlayerPlaybackState playbackState; //播放器状态
/**
* 播放接口:会全新初始化playerVC
*
* @param playURL 播放地址
* @param shouldAutoplay 设置是否自动播放(必须提前设置,播放后不能设置)
* @param referer 请求referer
* @return 播放内核的view
*/
- (UIView *)playWithPlayURL:(NSString*)playURL shouldAutoplay:(BOOL)shouldAutoplay referer:(NSString *)referer;
/**
* 清除占位图中的播放器以外的视图 (主要是cover view)
*/
- (void)cleanOtherSubiews;
/**
* 停止播放
*/
- (void)stop;
/**
* 播放接口:开始上次player的播放
*/
- (void)play;
/**
* 暂停
*/
- (void)pause;
/**
* 设置静音:
*
* @param isMuted 是否静音
*/
- (void)setMuted:(BOOL)isMuted;
/**
* 设置缩放模式
*
* @param scalingMode 缩放方式
*/
- (void)setScalingMode:(BBASMLivePlayerScalingMode)scalingMode;
/**
* 设置最小缓存区
*
* @param minCache 最小缓存:单位s
*/
- (void)setMinCache:(NSTimeInterval)minCache;
/**
* 设置最大缓存区
*
* @param maxCache 最大缓存:单位s
*/
- (void)setMaxCache:(NSTimeInterval)maxCache;
/**
* 设置frame
*
* @param frame 布局
*/
- (void)setFrame:(CGRect)frame;
/**
* 设置是否开启追帧播放
*
* @param needToggleFrameChasing 是否开启追帧
*/
- (void)setNeedToggleFrameChasing:(BOOL)needToggleFrameChasing;
/**
* 设置是否隐藏
* @param hidden 是否隐藏
*/
- (void)setPlayerViewHidden:(BOOL)hidden;
@end