# Errors Reference
เมื่อเกิด Error ในการเล่นวิดีโอ Player จะส่ง Callback onError(errorCode: String, errorMessage: String) ผ่าน PlayerFragmentListener ส่วน Error ที่เกิดจากระบบโฆษณาจะใช้ onAdsError(errorMessage: String?)
# ตัวอย่างการรับ Error
private var mFragmentListener = object : PlayerFragmentListener {
override fun onError(errorCode: String, errorMessage: String) {
Log.e("Player", "Error $errorCode: $errorMessage")
// จัดการ error ตาม errorCode
}
override fun onAdsError(errorMessage: String?) {
Log.e("Player", "Ads error: $errorMessage")
// ปกติ Ads error จะไม่หยุดการเล่นวิดีโอหลัก
}
// ... callback อื่นๆ
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# ประเภทของ Error
Error ที่ส่งผ่าน onError ส่วนใหญ่มาจาก ExoPlayer ซึ่งสามารถจำแนกได้ดังนี้
| ประเภท | คำอธิบาย |
|---|---|
| Source error | ไม่สามารถโหลด/อ่าน Manifest ของวิดีโอได้ (เช่น URL ผิด, เซิร์ฟเวอร์ตอบกลับ 4xx/5xx) |
| Network error | ไม่สามารถเชื่อมต่อเครือข่ายได้ |
| Decoder error | อุปกรณ์ไม่สามารถถอดรหัสวิดีโอ/เสียงในรูปแบบที่ได้รับ |
| DRM error | ไม่สามารถขอ License ของ DRM ได้ (license server ตอบกลับ Error, certificate ไม่ถูกต้อง, ฯลฯ) |
| Renderer error | เกิดข้อผิดพลาดในการแสดงผลวิดีโอ |
| Unexpected error | Error ที่ไม่สามารถระบุประเภทได้ |
Note
สำหรับรายละเอียดของ Error code ของ ExoPlayer สามารถดูได้ที่ ExoPlayer Error Codes (opens new window)
# แนวทางการจัดการ Error
- Source / Network error: แนะนำให้แสดงข้อความ Error ที่ผู้ชมเข้าใจได้ และเปิดทางให้ลองเล่นใหม่
- Decoder error: ตรวจสอบ Codec ของวิดีโอ — บางอุปกรณ์อาจไม่รองรับ HEVC/H.265 หรือความละเอียดสูง
- DRM error: ตรวจสอบ
withDrmLicenseUrl(...)และwithDrmLicenseRequestHeaders(...)ของByteArkPlayerItemรวมถึง response ของ License server - Ads error: โดยปกติ Ads error จะไม่ทำให้วิดีโอหลักหยุด แนะนำให้ Log error ไว้สำหรับวิเคราะห์