UNPKG

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