UNPKG

6.71 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 * @supported weapp, qq
65 */
66 autoPauseIfOpenNative?: string
67 /** 格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本;
68 * @supported weapp
69 */
70 referrerPolicy?: 'origin' | 'no-referrer'
71 /** 设置署名水印
72 * @supported tt
73 */
74 signature?: string
75 /** 是否回调metadata
76 * @supported qq
77 */
78 enableMetadata?: string
79 /** live-player 属性的唯一标志符
80 * @supported swan
81 */
82 id?: string
83 /** 是否开启手机横屏时自动全屏,当系统设置开启自动旋转时生效
84 * @supported weapp
85 * @default false
86 */
87 enableAutoRotation?: boolean
88 /** 播放状态变化事件,detail = {code}
89 * @supported weapp, swan, tt, qq, jd
90 */
91 onStateChange?: CommonEventFunction<LivePlayerProps.onStateChangeEventDetail>
92 /** 全屏变化事件,detail = {direction, fullScreen}
93 * @supported weapp, swan, tt, qq, jd
94 */
95 onFullScreenChange?: CommonEventFunction<LivePlayerProps.onFullScreenChangeEventDetail>
96 /** 网络状态通知,detail = {info}
97 * @supported weapp, swan, qq
98 */
99 onNetStatus?: CommonEventFunction<LivePlayerProps.onNetStatusEventDetail>
100 /** 播放音量大小通知,detail = {}
101 * @supported weapp
102 */
103 onAudioVolumeNotify?: CommonEventFunction<{}>
104 /** 播放器进入小窗
105 * @supported weapp
106 */
107 onEnterPictureInPicture?: CommonEventFunction
108 /** 播放器退出小窗
109 * @supported weapp
110 */
111 onLeavePictureInPicture?: CommonEventFunction
112 /** 播放错误事件
113 * @supported tt
114 */
115 onError?: CommonEventFunction
116 /** metadata通知,detail = {info}
117 * @supported qq
118 */
119 onMetaDataChange?: CommonEventFunction
120}
121declare namespace LivePlayerProps {
122 /** mode 的合法值 */
123 interface Mode {
124 /** 直播 */
125 live
126 /** 实时通话,该模式时延更低 */
127 RTC
128 }
129 /** orientation 的合法值 */
130 interface Orientation {
131 /** 竖直 */
132 vertical
133 /** 水平 */
134 horizontal
135 }
136 /** objectFit 的合法值 */
137 interface objectFit {
138 /** 图像长边填满屏幕,短边区域会被填充⿊⾊ */
139 contain
140 /** 图像铺满屏幕,超出显示区域的部分将被截掉 */
141 fillCrop
142 }
143 /** soundMode 的合法值 */
144 interface soundMode {
145 /** 扬声器 */
146 speaker
147 /** 听筒 */
148 ear
149 }
150 interface onStateChangeEventDetail {
151 /** 状态码 */
152 code: number
153 }
154 interface onFullScreenChangeEventDetail {
155 /** 方向 */
156 direction: number
157 /** 全屏 */
158 fullScreen: number | boolean
159 }
160 interface onNetStatusEventDetail {
161 info: NetStatus
162 }
163 /** 状态码 */
164 interface Status {
165 /** 已经连接服务器 */
166 2001
167 /** 已经连接 RTMP 服务器,开始拉流 */
168 2002
169 /** 网络接收到首个视频数据包(IDR) */
170 2003
171 /** 视频播放开始 */
172 2004
173 /** 视频播放进度 */
174 2005
175 /** 视频播放结束 */
176 2006
177 /** 视频播放Loading */
178 2007
179 /** 解码器启动 */
180 2008
181 /** 视频分辨率改变 */
182 2009
183 /** 网络断连,且经多次重连抢救无效,更多重试请自行重启播放 */
184 '-2301'
185 /** 获取加速拉流地址失败 */
186 '-2302'
187 /** 当前视频帧解码失败 */
188 2101
189 /** 当前音频帧解码失败 */
190 2102
191 /** 网络断连, 已启动自动重连 */
192 2103
193 /** 网络来包不稳:可能是下行带宽不足,或由于主播端出流不均匀 */
194 2104
195 /** 当前视频播放出现卡顿 */
196 2105
197 /** 硬解启动失败,采用软解 */
198 2106
199 /** 当前视频帧不连续,可能丢帧 */
200 2107
201 /** 当前流硬解第一个I帧失败,SDK自动切软解 */
202 2108
203 /** RTMP -DNS解析失败 */
204 3001
205 /** RTMP服务器连接失败 */
206 3002
207 /** RTMP服务器握手失败 */
208 3003
209 /** RTMP 读/写失败 */
210 3005
211 }
212}
213/** 实时音视频播放。相关api:Taro.createLivePlayerContext
214 *
215 * 需要先通过类目审核,再在小程序管理后台,“设置”-“接口设置”中自助开通该组件权限。
216 * @classification media
217 * @supported weapp, swan, tt, qq, jd
218 * @example_react
219 * ```tsx
220 * class App extends Components {
221 * render () {
222 * return (
223 * <LivePlayer src='url' mode='live' autoplay />
224 * )
225 * }
226 * }
227 * ```
228 * @example_vue
229 * ```html
230 * <template>
231 * <live-player src="url" mode="live" :autoplay="true" />
232 * </template>
233 * ```
234 * @see https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html
235 */
236declare const LivePlayer: ComponentType<LivePlayerProps>
237export { LivePlayer, LivePlayerProps }