UNPKG

6.77 kBTypeScriptView Raw
1import { ComponentType } from 'react'
2import { StandardProps, CommonEventFunction, NetStatus } from './common'
3interface LivePlayerProps extends StandardProps {
4 /** 音视频地址。目前仅支持 flv, rtmp 格式
5 * @supported weapp, swan, tt, qq, jd
6 */
7 src?: string
8
9 /** 模式
10 * @default "live"
11 * @supported weapp, qq, jd
12 */
13 mode?: keyof LivePlayerProps.Mode
14
15 /** 自动播放
16 * @default false
17 * @supported weapp, swan, tt, qq, jd
18 */
19 autoplay?: boolean
20
21 /** 是否静音
22 * @default false
23 * @supported weapp, swan, tt, qq, jd
24 */
25 muted?: boolean
26
27 /** 画面方向
28 * @default "vertical"
29 * @supported weapp, swan, tt, qq, jd
30 */
31 orientation?: keyof LivePlayerProps.Orientation
32
33 /** 填充模式
34 * @default "contain"
35 * @supported weapp, swan, tt, qq, jd
36 */
37 objectFit?: keyof LivePlayerProps.objectFit
38
39 /** 进入后台时是否静音(已废弃,默认退台静音)
40 * @default false
41 * @supported weapp, swan
42 * @deprecated
43 */
44 backgroundMute?: boolean
45
46 /** 最小缓冲区,单位s
47 * @default 1
48 * @supported weapp, swan, qq
49 */
50 minCache?: number
51
52 /** 最大缓冲区,单位s
53 * @default 3
54 * @supported weapp, swan, qq
55 */
56 maxCache?: number
57
58 /** 声音输出方式
59 * @default "speaker"
60 * @supported weapp, qq, jd
61 */
62 soundMode?: keyof LivePlayerProps.soundMode
63
64 /** 当跳转到本小程序的其他页面时,是否自动暂停本页面的实时音视频播放
65 * @default true
66 * @supported weapp, qq
67 */
68 autoPauseIfNavigate?: boolean
69
70 /** 设置小窗模式: push, pop,空字符串或通过数组形式设置多种模式(如: ["push", "pop"])
71 * @supported weapp
72 */
73 pictureInPictureMode?: ('push' | 'pop')[] | 'push' | 'pop' | ''
74
75 /** 当跳转到其它微信原生页面时,是否自动暂停本页面的实时音视频播放
76 * @supported weapp, qq
77 */
78 autoPauseIfOpenNative?: string
79
80 /** 格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本;
81 * @supported weapp
82 */
83 referrerPolicy?: 'origin' | 'no-referrer'
84
85 /** 设置署名水印
86 * @supported tt
87 */
88 signature?: string
89
90 /** 是否回调metadata
91 * @supported qq
92 */
93 enableMetadata?: string
94
95 /** live-player 属性的唯一标志符
96 * @supported swan
97 */
98 id?: string
99
100 /** 是否开启手机横屏时自动全屏,当系统设置开启自动旋转时生效
101 * @supported weapp
102 * @default false
103 */
104 enableAutoRotation?: string
105
106 /** 播放状态变化事件,detail = {code}
107 * @supported weapp, swan, tt, qq, jd
108 */
109 onStateChange?: CommonEventFunction<LivePlayerProps.onStateChangeEventDetail>
110
111 /** 全屏变化事件,detail = {direction, fullScreen}
112 * @supported weapp, swan, tt, qq, jd
113 */
114 onFullScreenChange?: CommonEventFunction<LivePlayerProps.onFullScreenChangeEventDetail>
115
116 /** 网络状态通知,detail = {info}
117 * @supported weapp, swan, qq
118 */
119 onNetStatus?: CommonEventFunction<LivePlayerProps.onNetStatusEventDetail>
120
121 /** 播放音量大小通知,detail = {}
122 * @supported weapp
123 */
124 onAudioVolumeNotify?: CommonEventFunction<{}>
125
126 /** 播放器进入小窗
127 * @supported weapp
128 */
129 onEnterPictureInPicture?: CommonEventFunction
130
131 /** 播放器退出小窗
132 * @supported weapp
133 */
134 onLeavePictureInPicture?: CommonEventFunction
135
136 /** 播放错误事件
137 * @supported tt
138 */
139 onError?: CommonEventFunction
140
141 /** metadata通知,detail = {info}
142 * @supported qq
143 */
144 onMetaDataChange?: CommonEventFunction
145}
146declare namespace LivePlayerProps {
147 /** mode 的合法值 */
148 interface Mode {
149 /** 直播 */
150 live
151
152 /** 实时通话,该模式时延更低 */
153 RTC
154 }
155
156 /** orientation 的合法值 */
157 interface Orientation {
158 /** 竖直 */
159 vertical
160
161 /** 水平 */
162 horizontal
163 }
164
165 /** objectFit 的合法值 */
166 interface objectFit {
167 /** 图像长边填满屏幕,短边区域会被填充⿊⾊ */
168 contain
169
170 /** 图像铺满屏幕,超出显示区域的部分将被截掉 */
171 fillCrop
172 }
173
174 /** soundMode 的合法值 */
175 interface soundMode {
176 /** 扬声器 */
177 speaker
178
179 /** 听筒 */
180 ear
181 }
182 interface onStateChangeEventDetail {
183 /** 状态码 */
184 code: number
185 }
186 interface onFullScreenChangeEventDetail {
187 /** 方向 */
188 direction: number
189
190 /** 全屏 */
191 fullScreen: number | boolean
192 }
193 interface onNetStatusEventDetail {
194 info: NetStatus
195 }
196
197 /** 状态码 */
198 interface Status {
199 /** 已经连接服务器 */
200 2001
201
202 /** 已经连接 RTMP 服务器,开始拉流 */
203 2002
204
205 /** 网络接收到首个视频数据包(IDR) */
206 2003
207
208 /** 视频播放开始 */
209 2004
210
211 /** 视频播放进度 */
212 2005
213
214 /** 视频播放结束 */
215 2006
216
217 /** 视频播放Loading */
218 2007
219
220 /** 解码器启动 */
221 2008
222
223 /** 视频分辨率改变 */
224 2009
225
226 /** 网络断连,且经多次重连抢救无效,更多重试请自行重启播放 */
227 '-2301'
228
229 /** 获取加速拉流地址失败 */
230 '-2302'
231
232 /** 当前视频帧解码失败 */
233 2101
234
235 /** 当前音频帧解码失败 */
236 2102
237
238 /** 网络断连, 已启动自动重连 */
239 2103
240
241 /** 网络来包不稳:可能是下行带宽不足,或由于主播端出流不均匀 */
242 2104
243
244 /** 当前视频播放出现卡顿 */
245 2105
246
247 /** 硬解启动失败,采用软解 */
248 2106
249
250 /** 当前视频帧不连续,可能丢帧 */
251 2107
252
253 /** 当前流硬解第一个I帧失败,SDK自动切软解 */
254 2108
255
256 /** RTMP -DNS解析失败 */
257 3001
258
259 /** RTMP服务器连接失败 */
260 3002
261
262 /** RTMP服务器握手失败 */
263 3003
264
265 /** RTMP 读/写失败 */
266 3005
267 }
268}
269
270/** 实时音视频播放。相关api:Taro.createLivePlayerContext
271 *
272 * 需要先通过类目审核,再在小程序管理后台,“设置”-“接口设置”中自助开通该组件权限。
273 * @classification media
274 * @supported weapp, swan, tt, qq, jd
275 * @example_react
276 * ```tsx
277 * class App extends Components {
278 * render () {
279 * return (
280 * <LivePlayer src='url' mode='live' autoplay />
281 * )
282 * }
283 * }
284 * ```
285 * @example_vue
286 * ```html
287 * <template>
288 * <live-player src="url" mode="live" :autoplay="true" />
289 * </template>
290 * ```
291 * @see https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html
292 */
293declare const LivePlayer: ComponentType<LivePlayerProps>
294export { LivePlayer, LivePlayerProps }