export function createPlayer({ onError } = {}) { let nativePlayer = null try { // Available only after the native plugin is added in HBuilderX. nativePlayer = uni.requireNativePlugin && uni.requireNativePlugin('SyncTV-VLC') } catch (err) { nativePlayer = null } return { hasNative: !!nativePlayer, open(source, server) { const url = source.url && source.url.startsWith('/api/') ? server.replace(/\/$/, '') + source.url : source.url if (nativePlayer) { nativePlayer.open({ url, headers: source.headers || {}, username: source.username || '', password: source.password || '', isLive: !!source.isLive }) } return url }, play() { if (nativePlayer) { nativePlayer.play() return true } return false }, pause() { if (nativePlayer) { nativePlayer.pause() return true } return false }, seek(positionMs) { if (nativePlayer) { nativePlayer.seek({ positionMs }) return true } return false }, getPosition(callback) { if (nativePlayer) { nativePlayer.getPosition(callback) return } callback({ positionMs: 0 }) }, release() { if (nativePlayer) { nativePlayer.release() } }, error(message) { if (onError) onError(message) } } }