1 | import { ComponentType } from 'react'
|
2 | import { StandardProps, CommonEventFunction, NetStatus } from './common'
|
3 | interface 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 | }
|
145 | declare 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 | */
|
260 | declare const LivePlayer: ComponentType<LivePlayerProps>
|
261 | export { LivePlayer, LivePlayerProps }
|