UNPKG

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