# API Reference

เมื่อสร้าง ByteArkPlayerViewController แล้ว คุณสามารถเรียกใช้งาน API ของ Player ผ่าน player instance ของ ViewController ได้

# Configuration methods

Method Description
func configure(with config: ByteArkPlayerConfig) ตั้งค่า Player ด้วย ByteArkPlayerConfig (สร้างจาก ByteArkPlayerConfigBuilder)
func destroy() ปลดปล่อยทรัพยากรของ Player
func getPlugin(with name: String) -> ByteArkPlayerPlugin? ดึง Plugin instance ตามชื่อ
func addPlaybackEngineObserve(...) -> any NSObjectProtocol เพิ่ม Observer สำหรับรับ Notification จาก Playback engine

# Playback controller

Method Description
func play() เริ่มเล่นวิดีโอ
func pause() หยุดเล่นวิดีโอชั่วคราว
func seek(to time: TimeInterval, completionHandler:) กระโดดไปที่ตำแหน่งเวลา (วินาที)
func muted(_ muted: Bool) เปิด/ปิดเสียง
func setVolume(_ volume: Float) ตั้งค่าระดับเสียง (0.0 - 1.0)
func setPlaybackSpeed(_ speed: Float) ตั้งค่าความเร็วในการเล่น

# UI controller

Method Description
func toggleFullscreen() สลับโหมด Fullscreen
func togglePictureInPictureMode() สลับโหมด Picture-in-Picture
func enablePictureInPicture() เปิดใช้ Picture-in-Picture
func disablePictureInPicture() ปิดใช้ Picture-in-Picture
func showControls() แสดงแถบควบคุม
func hideControls() ซ่อนแถบควบคุม

# Background & remote control

Method Description
func enableBackgroundAudio() เปิดใช้การเล่นเสียงเมื่อแอปอยู่ใน Background
func disableBackgroundAudio() ปิดการเล่นเสียงเมื่ออยู่ใน Background
func enableRemoteControlCenter() เปิดใช้การควบคุม Player จาก iOS Control Center
func disableRemoteControlCenter() ปิดใช้การควบคุมจาก Control Center

# Tracks & quality

Method Description
func setAudioTrack(_ audioTrack: ByteArkPlayerMediaTrack) เลือก Audio track
func setSubtitleTrack(_ subtitleTrack: ByteArkPlayerMediaTrack?) เลือกซับไตเติ้ล (ส่ง nil เพื่อปิด)
func setResolution(_ resolution: ByteArkPlayerMediaResolution) เลือกความละเอียดวิดีโอ

# Playlist

Method Description
func next() ข้ามไปวิดีโอถัดไปใน Playlist
func previous() กลับไปวิดีโอก่อนหน้าใน Playlist
func setPlaylistItem(_ playbackItem: ByteArkPlayerItem) throws ตั้งค่าวิดีโอใน Playlist

# Variables

# View hierarchy

Variable Description
var playerContainerView: ByteArkPlayerContainerView { get } View ที่บรรจุ Rendering view, Controls ฯลฯ
var playerViewController: ByteArkPlayerViewController? { get } ViewController ของ Player
var fullscreenViewController: ByteArkPlayerFullscreenViewController? { get } ViewController สำหรับโหมด Fullscreen
var controlsView: UIView? { get } View ของแถบควบคุม

# Configuration & state

Variable Description
var config: ByteArkPlayerConfig? { get } Configuration object ที่ใช้สร้าง Player
var delegate: ByteArkPlayerPlaybackDelegate? { get, set } Playback delegate
var playbackItem: ByteArkPlayerItem? { get } วิดีโอที่กำลังเล่นอยู่
var playlist: ByteArkPlayerPlaylist? { get } Playlist ปัจจุบัน

# Playback info

Variable Description
var currentTime: TimeInterval { get } เวลาปัจจุบัน (วินาที)
var duration: TimeInterval { get } ความยาววิดีโอ (วินาที)
var playbackSpeed: Float { get } ความเร็วในการเล่นปัจจุบัน
var volume: Float { get } ระดับเสียงปัจจุบัน

# Tracks

Variable Description
var audioTrack: ByteArkPlayerMediaTrack? { get } Audio track ที่ใช้งานอยู่
var audioTracks: [ByteArkPlayerMediaTrack] { get } Audio track ทั้งหมดของวิดีโอปัจจุบัน
var subtitleTrack: ByteArkPlayerMediaTrack? { get } ซับไตเติ้ลที่ใช้งานอยู่
var subtitleTracks: [ByteArkPlayerMediaTrack] { get } ซับไตเติ้ลทั้งหมดของวิดีโอปัจจุบัน
var resolution: ByteArkPlayerMediaResolution? { get } ความละเอียดที่ใช้งานอยู่
var resolutions: [ByteArkPlayerMediaResolution] { get } ความละเอียดทั้งหมดของวิดีโอปัจจุบัน

# State flags

Variable Description
var isReady: Bool { get } Player พร้อมเล่นหรือไม่
var isPlaying: Bool { get } กำลังเล่นอยู่หรือไม่
var isSeeking: Bool { get } กำลัง Seek อยู่หรือไม่
var isBuffering: Bool { get } กำลัง Buffer อยู่หรือไม่
var isEnded: Bool { get } เล่นจบหรือยัง
var isMuted: Bool { get } ปิดเสียงอยู่หรือไม่
var isFullscreen: Bool { get } อยู่ในโหมด Fullscreen หรือไม่
var isInPictureInPicture: Bool { get } อยู่ในโหมด Picture-in-Picture หรือไม่