# Errors Reference

เมื่อเกิด Error ในการเล่นวิดีโอ Player จะส่ง Callback onPlaybackError(error) ผ่าน ByteArkPlayerListener ส่วน Error ที่เกิดจากระบบโฆษณาจะใช้ onAdsError(error)

# การรับ Error

final listener = ByteArkPlayerListener(
  onPlaybackError: (ByteArkPlayerPlaybackErrorData error) {
    debugPrint("Playback error: code=${error.code}, message=${error.message}");
    // จัดการ Error เช่น แสดง Dialog หรือ Snackbar
  },
  onAdsError: (ByteArkPlayerAdsErrorData error) {
    debugPrint("Ads error: ${error.message}");
    // โดยปกติ Ads error จะไม่หยุดวิดีโอหลัก
  },
);
1
2
3
4
5
6
7
8
9
10

# ประเภทของ Error

Error ของ Player ใน Flutter SDK ส่วนใหญ่ถูกส่งต่อมาจาก Native SDK (ExoPlayer บน Android, AVPlayer บน iOS) ซึ่งมีประเภทดังนี้

ประเภท คำอธิบาย
Source error ไม่สามารถโหลด/อ่าน Manifest ของวิดีโอ (URL ผิด, เซิร์ฟเวอร์ตอบกลับ 4xx/5xx)
Network error ไม่สามารถเชื่อมต่อเครือข่ายได้
Decoder error อุปกรณ์ไม่สามารถถอดรหัสวิดีโอ/เสียงในรูปแบบที่ได้รับ
DRM error ไม่สามารถขอ License ของ Widevine/FairPlay ได้
Renderer error เกิดข้อผิดพลาดในการแสดงผลวิดีโอ

# แนวทางการจัดการ Error

  • Source / Network error: แสดงข้อความ Error ที่ผู้ชมเข้าใจได้ และเปิดทางให้กดเล่นใหม่
  • DRM error: ตรวจสอบ ByteArkDrm configuration ของ ByteArkPlayerItem รวมถึง License URL และ Custom headers
  • Ads error: โดยปกติจะไม่ทำให้วิดีโอหลักหยุด แนะนำให้ Log error ไว้สำหรับวิเคราะห์