เอกสารนี้อธิบายการรองรับตัวแปลงรหัสสื่อ คอนเทนเนอร์ และโปรโตคอลเครือข่ายที่แพลตฟอร์ม Android มีให้
ตารางด้านล่างอธิบายการรองรับรูปแบบสื่อที่ฝังอยู่ในแพลตฟอร์ม Android ใช่ หมายความว่ารูปแบบดังกล่าวพร้อมใช้งานบนอุปกรณ์พกพาและแท็บเล็ตที่ใช้ Android ทุกเวอร์ชัน เมื่อระบุแพลตฟอร์ม Android ที่เจาะจง รูปแบบดังกล่าวจะพร้อมใช้งานในโทรศัพท์มือถือและแท็บเล็ตที่ใช้เวอร์ชันนั้นและเวอร์ชันที่ใหม่กว่าทั้งหมด รูปแบบนี้อาจพร้อมใช้งานในเวอร์ชันก่อนหน้าด้วย แต่เราไม่รับประกัน รูปแบบของอุปกรณ์ที่ไม่ใช่โทรศัพท์มือถือและแท็บเล็ตอาจรองรับรูปแบบสื่อที่แตกต่างกัน
โปรดทราบว่าอุปกรณ์เคลื่อนที่บางรุ่นอาจรองรับรูปแบบหรือประเภทไฟล์เพิ่มเติมที่ไม่ได้แสดงในตารางเหล่านี้ นอกจากนี้ หากคุณใช้ MediaCodec โดยตรง คุณจะเข้าถึงรูปแบบสื่อใดก็ได้ที่มีให้ใช้งาน โดยไม่คำนึงถึงประเภทไฟล์และรูปแบบคอนเทนเนอร์ที่รองรับ
การรองรับเสียง
รูปแบบ | โปรแกรมเปลี่ยนไฟล์ | ตัวถอดรหัส | รูปแบบคอนเทนเนอร์ประเภทไฟล์ | รายละเอียด | |
---|---|---|---|---|---|
เครื่องมือแยกข้อมูล | ตัวรวม | ||||
AAC LC | ใช่ | ใช่ |
• 3GPP (.3gp) • ADTS raw AAC (.aac, ไม่รองรับ ADIF) • MPEG-TS (.ts, ไม่สามารถกรอได้, Android 3.0 ขึ้นไป) |
• 3GPP (.3gp) • ADTS raw AAC (.aac, ไม่รองรับ ADIF) • MPEG-TS (ไม่แน่ใจ) (.ts, ไม่สามารถกรอได้, Android 3.0+) |
รองรับเนื้อหาแบบโมโน/สเตอริโอ/5.0/5.1 ที่มีอัตราการสุ่มตัวอย่างมาตรฐานตั้งแต่ 8 ถึง 48 kHz |
HE-AACv1 (AAC+) | Android 4.1 ขึ้นไป | ใช่ | |||
HE-AACv2 (AAC+ ที่ปรับปรุงแล้ว) | ใช่ | รองรับเนื้อหาสเตอริโอ/5.0/5.1 ที่มีอัตราการสุ่มตัวอย่างมาตรฐานตั้งแต่ 8 ถึง 48 kHz | |||
xHE-AAC | Android 9 ขึ้นไป | รองรับเนื้อหาสูงสุด 8 แชนแนลที่มีอัตราการสุ่มตัวอย่างมาตรฐานตั้งแต่ 8 ถึง 48 kHz | |||
AAC ELD (AAC แบบลดเวลาในการตอบสนอง) | Android 4.1 ขึ้นไป | Android 4.1 ขึ้นไป | รองรับเนื้อหาโมโน/สเตอริโอที่มีอัตราการสุ่มตัวอย่างมาตรฐานตั้งแต่ 16 ถึง 48 kHz | ||
AMR-NB | ใช่ | ใช่ |
• 3GPP (.3gp) • AMR (.amr) |
• 3GPP (.3gp) • AMR (.amr) |
4.75 ถึง 12.2 kbps ที่อัตราตัวอย่าง 8kHz |
AMR-WB | ใช่ | ใช่ | 9 อัตราตั้งแต่ 6.60 Kbps ถึง 23.85 Kbps ที่อัตราตัวอย่าง 16kHz | ||
FLAC | Android 4.1 ขึ้นไป | Android 3.1 ขึ้นไป |
• FLAC (.flac) • MPEG-4 (.mp4, .m4a, Android 10+) • Matroska (.mkv) |
โมโน/สเตอริโอ (ไม่มีหลายช่อง) อัตราการสุ่มตัวอย่างสูงสุด 48 kHz (แต่แนะนำให้ใช้สูงสุด 44.1 kHz ในอุปกรณ์ที่มีเอาต์พุต 44.1 kHz เนื่องจากตัวแปลงสัญญาณ 48 เป็น 44.1 kHz จะไม่มีตัวกรอง Low Pass) แนะนำ 16 บิต ใช้การปรับอัตราส่วนสัญญาณรบกวนสำหรับ 24 บิตไม่ได้ | |
MIDI | ใช่ |
• ประเภท 0 และ 1 (.mid, .xmf, .mxmf) • RTTTL/RTX (.rtttl, .rtx) • OTA (.ota) • iMelody (.imy) |
MIDI ประเภท 0 และ 1 DLS เวอร์ชัน 1 และ 2 XMF และ Mobile XMF รองรับรูปแบบเสียงเรียกเข้า RTTTL/RTX, OTA และ iMelody | ||
MP3 | ใช่ |
• MP3 (.mp3) • MPEG-4 (.mp4, .m4a, Android 10+) • Matroska (.mkv, Android 10+) |
โมโน/สเตอริโอ 8-320 Kbps แบบคงที่ (CBR) หรืออัตราบิตแบบผันแปร (VBR) | ||
Opus | Android 10 ขึ้นไป | Android 5.0 ขึ้นไป |
• Ogg (.ogg) • MPEG-4 (.mp4) • Matroska (.mkv) |
• Ogg (.ogg) • WebM (.webm) |
|
PCM/WAVE | Android 4.1 ขึ้นไป | ใช่ | WAVE (.wav) | PCM แบบเชิงเส้น 8 และ 16 บิต (อัตราสูงสุดตามขีดจำกัดของฮาร์ดแวร์) อัตราการสุ่มตัวอย่างสำหรับการบันทึก PCM ดิบที่ 8000, 16000 และ 44100 Hz | |
Vorbis | ใช่ |
• Ogg (.ogg) • Matroska (.mkv, Android 4.0+) • MPEG-4 (.mp4, .m4a, Android 10+) |
• WebM (.webm) |
การรองรับวิดีโอ
รูปแบบวิดีโอ
รูปแบบ | โปรแกรมเปลี่ยนไฟล์ | ตัวถอดรหัส | รูปแบบคอนเทนเนอร์ประเภทไฟล์ | รายละเอียด | |
---|---|---|---|---|---|
เครื่องมือแยกข้อมูล | ตัวรวม | ||||
H.263 | ใช่ | ใช่ |
• 3GPP (.3gp) • MPEG-4 (.mp4) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
รองรับ H.263 ไม่บังคับใน Android 7.0 ขึ้นไป |
H.264 AVC โปรไฟล์พื้นฐาน (BP) |
Android 3.0+ | ใช่ |
• 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts, เสียง AAC เท่านั้น ไม่สามารถกรอได้, Android 3.0 ขึ้นไป) • Matroska (.mkv) |
• 3GPP (.3gp) • MPEG-4 (.mp4) |
|
H.264 AVC โปรไฟล์หลัก (MP) |
Android 6.0 ขึ้นไป | ใช่ | ต้องใช้โปรแกรมถอดรหัส และแนะนำให้ใช้โปรแกรมเข้ารหัส | ||
H.265 HEVC | Android 5.0 ขึ้นไป |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | โปรไฟล์หลักระดับ 3 สำหรับอุปกรณ์เคลื่อนที่และโปรไฟล์หลักระดับ 4.1 สำหรับ Android TV | |
MPEG-4 SP | ใช่ | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | ||
VP8 | Android 4.3 ขึ้นไป | Android 2.3.3 ขึ้นไป |
• WebM (.webm) • Matroska (.mkv, Android 4.0+) |
• WebM (.webm) | Streamable ใช้ได้ใน Android 4.0 ขึ้นไปเท่านั้น |
VP9 | Android 4.4 ขึ้นไป |
• WebM (.webm) • Matroska (.mkv) • MPEG-4 (.mp4) |
• WebM (.webm) | ||
AV1 | Android 14 ขึ้นไป | Android 10 ขึ้นไป |
• MPEG-4 (.mp4) • Matroska (.mkv) |
• MPEG-4 (.mp4) | ต้องใช้โปรแกรมเปลี่ยนไฟล์และโปรแกรมถอดรหัสตั้งแต่ Android 14 เป็นต้นไป |
APV | Android 16 ปีขึ้นไป | Android 16 ปีขึ้นไป | • MPEG-4 (.mp4) | • MPEG-4 (.mp4) | โปรแกรมเปลี่ยนไฟล์และโปรแกรมถอดรหัสเป็นสิ่งจําเป็นตั้งแต่ Android 16 เป็นต้นไป |
คําแนะนําเกี่ยวกับการเข้ารหัสวิดีโอ
ตารางด้านล่างแสดงโปรไฟล์และพารามิเตอร์การเข้ารหัสวิดีโอของเฟรมเวิร์กสื่อ Android ที่แนะนำสำหรับการเล่นโดยใช้ตัวแปลงรหัสโปรไฟล์ Baseline ของ H.264 คำแนะนำเดียวกันนี้ใช้กับตัวแปลงรหัสโปรไฟล์หลักได้ด้วย ซึ่งใช้ได้ใน Android 6.0 ขึ้นไปเท่านั้น
SD (คุณภาพต่ำ) | SD (คุณภาพสูง) | HD 720p (ไม่พร้อมให้บริการในอุปกรณ์ทุกรุ่น) | |
---|---|---|---|
ความละเอียดของวิดีโอ | 176 x 144 พิกเซล | 480 x 360 พิกเซล | 1280 x 720 พิกเซล |
อัตราเฟรมของวิดีโอ | 12 FPS | 30 fps | 30 fps |
อัตราบิตของวิดีโอ | 56 Kbps | 500 Kbps | 2 Mbps |
ตัวแปลงรหัสเสียง | AAC-LC | AAC-LC | AAC-LC |
ช่องเสียง | 1 (โมโน) | 2 (สเตอริโอ) | 2 (สเตอริโอ) |
อัตราบิตของเสียง | 24 Kbps | 128 Kbps | 192 Kbps |
ตารางด้านล่างแสดงโปรไฟล์และพารามิเตอร์การเข้ารหัสวิดีโอของเฟรมเวิร์กสื่อ Android ที่แนะนำสำหรับการเล่นโดยใช้ตัวแปลงรหัสสื่อ VP8
SD (คุณภาพต่ำ) | SD (คุณภาพสูง) | HD 720p (ไม่พร้อมให้บริการในอุปกรณ์ทุกรุ่น) | HD 1080p (ไม่พร้อมให้บริการในอุปกรณ์ทุกเครื่อง) | |
---|---|---|---|---|
ความละเอียดของวิดีโอ | 320 x 180 พิกเซล | 640 x 360 พิกเซล | 1280 x 720 พิกเซล | 1920 x 1080 พิกเซล |
อัตราเฟรมของวิดีโอ | 30 fps | 30 fps | 30 fps | 30 fps |
อัตราบิตของวิดีโอ | 800 Kbps | 2 Mbps | 4 Mbps | 10 Mbps |
คําแนะนําในการถอดรหัสวิดีโอ
การติดตั้งใช้งานอุปกรณ์ต้องรองรับความละเอียดวิดีโอแบบไดนามิกและการเปลี่ยนอัตราเฟรมผ่าน API มาตรฐานของ Android ภายในสตรีมเดียวกันสำหรับตัวแปลงรหัส VP8, VP9, H.264 และ H.265 ทั้งหมดแบบเรียลไทม์และสูงสุดถึงความละเอียดสูงสุดที่ตัวแปลงรหัสแต่ละรายการในอุปกรณ์รองรับ
การใช้งานที่รองรับโปรแกรมถอดรหัส Dolby Vision ต้องเป็นไปตามหลักเกณฑ์ต่อไปนี้
- ระบุโปรแกรมแยกที่สามารถแยกไฟล์ Dolby Vision
- แสดงเนื้อหา Dolby Vision บนหน้าจออุปกรณ์หรือพอร์ตเอาต์พุตวิดีโอมาตรฐานอย่างเหมาะสม (เช่น HDMI)
- ตั้งค่าดัชนีแทร็กของเเลเยอร์ฐานที่เข้ากันได้แบบย้อนหลัง (หากมี) ให้เหมือนกับดัชนีแทร็กของเเลเยอร์ Dolby Vision ที่รวม
ข้อกำหนดในการสตรีมวิดีโอ
เนื้อหาวิดีโอที่สตรีมผ่าน HTTP หรือ RTSP มีข้อกำหนดเพิ่มเติมดังนี้
- สำหรับคอนเทนเนอร์ 3GPP และ MPEG-4 อะตอม
moov
ต้องอยู่ก่อนอะตอมmdat
แต่ต้องอยู่หลังอะตอมftyp
- สำหรับคอนเทนเนอร์ 3GPP, MPEG-4 และ WebM แท็บเล็ตเสียงและวิดีโอที่สอดคล้องกับการเลื่อนเวลาเดียวกันต้องอยู่ห่างกันไม่เกิน 500 KB หากต้องการลดการเลื่อนเวลาของเสียง/วิดีโอนี้ ให้ลองสลับเสียงและวิดีโอเป็นกลุ่มเล็กๆ
การรองรับรูปภาพ
รูปแบบ | โปรแกรมเปลี่ยนไฟล์ | ตัวถอดรหัส | รายละเอียด | ประเภทไฟล์ รูปแบบคอนเทนเนอร์ |
---|---|---|---|---|
BMP | ใช่ | BMP (.bmp) | ||
GIF | ใช่ | GIF (.gif) | ||
JPEG | ใช่ | ใช่ | Base+progressive | JPEG (.jpg) |
PNG | ใช่ | ใช่ | PNG (.png) | |
WebP |
Android 4.0 ขึ้นไป ไม่มีการสูญเสีย: Android 10 ขึ้นไป โปร่งใส: Android 4.2.1 ขึ้นไป |
Android 4.0 ขึ้นไป เสียงแบบไม่สูญเสียคุณภาพ: Android 4.2.1 ขึ้นไป เสียงแบบโปร่งใส: Android 4.2.1 ขึ้นไป |
คุณสามารถเข้ารหัสแบบไม่สูญเสียข้อมูลใน Android 10 โดยใช้คุณภาพ 100 | WebP (.webp) |
HEIF | Android 8.0 ขึ้นไป | HEIF (.heic; .heif) | ||
AVIF (โปรไฟล์พื้นฐาน) | Android 14 ขึ้นไป | Android 14 ขึ้นไป | ต้องใช้โปรแกรมเปลี่ยนไฟล์และโปรแกรมถอดรหัสตั้งแต่ Android 14 เป็นต้นไป | AVIF (.avif) |
โปรโตคอลเครือข่าย
โปรโตคอลเครือข่ายต่อไปนี้รองรับการเล่นเสียงและวิดีโอ
- RTSP (RTP, SDP)
- การสตรีมแบบเป็นขั้นเป็นตอนของ HTTP/HTTPS
- โปรโตคอลฉบับร่างสตรีมมิงแบบสด HTTP/HTTPS:
- ไฟล์สื่อ MPEG-2 TS เท่านั้น
- โปรโตคอลเวอร์ชัน 3 Android 4.0 ขึ้นไป
- โปรโตคอลเวอร์ชัน 2 Android 3.x
- ไม่รองรับก่อน Android 3.0
หมายเหตุ: ระบบไม่รองรับ HTTPS ก่อน Android 3.1
รูปแบบวิดีโอ HDR
OEM สามารถเปิดใช้รูปแบบ HDR ใดก็ได้ที่ต้องการด้วยสถาปัตยกรรม HDR ของ Android ซึ่งตอบสนองความต้องการหลักของรูปแบบ HDR ได้แก่ บัฟเฟอร์ 10 บิต ข้อมูลเมตา (แบบคงที่ แบบไดนามิก และไม่มี) ฟังก์ชันการโอน และการจัดการพื้นที่สี
เรากำหนดให้ OEM ต้องรองรับรูปแบบพื้นฐาน 2-3 รูปแบบในอุปกรณ์ที่รองรับ HDR เพื่อให้นักพัฒนาแอปทำงานได้อย่างราบรื่นและรองรับกรณีการใช้งาน HDR ที่สำคัญ ดังนี้
- สำหรับการเล่นเนื้อหาระดับมืออาชีพ เช่น สตรีมมิงภาพยนตร์ เรากำหนดให้ใช้ HDR10
- สำหรับการบันทึกและเล่นเนื้อหาที่ผู้ใช้สร้างขึ้น เรากำหนดให้ใช้ HLG10 เพื่อให้อุปกรณ์ Android ทั้งหมดมอบประสบการณ์การใช้งานที่สอดคล้องกัน
OEM ที่เพิ่มการรองรับ HDR จะต้องรองรับรูปแบบเหล่านี้ แต่อาจรองรับรูปแบบเพิ่มเติมได้ด้วย เช่น HDR10+ หรือ Dolby Vision
รูปแบบ | ฟังก์ชันการโอน | ข้อมูลเมตา | ตัวแปลงรหัส | ความลึกของบิต |
---|---|---|---|---|
HLG10 | HLG | ไม่ | HEVC | 10 บิต |
HDR10 | PQ | คงที่ | HEVC | 10 บิต |
HDR10+ | PQ | คงที่ | HEVC | 10 บิต |
Dolby Vision 8.4 | HLG | แบบไดนามิก | HEVC | 10 บิต |
คําแนะนําในการจัดการรูปแบบ
รูปแบบการจับภาพ | รูปแบบการอัปโหลด | รูปแบบการนำส่ง |
HLG | แบ็กเอนด์ของแอปรองรับ HDR HLG | อุปกรณ์ที่รองรับ HDR (HLG)
HLG อุปกรณ์ที่รองรับ HDR (ไม่รองรับ HLG รองรับเฉพาะ PQ) SDR (แผนที่โทนสีจาก HLG เป็น SDR ในแบ็กเอนด์) อุปกรณ์ที่ไม่รองรับ HDR: SDR (การปรับโทนสีจาก HLG เป็น SDR ในแบ็กเอนด์) |
กรณีการใช้งาน 2: การจับภาพจากกล้องที่มาพร้อมเครื่องหรือนำเข้าจากแกลเลอรีของผู้ใช้ (แบ็กเอนด์ของแอปรองรับ HDR)
รูปแบบการจับภาพ | รูปแบบการอัปโหลด | รูปแบบการนำส่ง |
HLG | HLG | เหมือนกับกรณีการใช้งานการจับภาพในแอป |
HDR10+ | HLG
แมปโทนสีจาก HDR10+ (PQ) เป็น HLG ก่อนอัปโหลดโดยใช้ Transformer API |
เหมือนกับกรณีการใช้งานการจับภาพในแอป |
DV8.4 | HLG
(DV8.4 ใช้ HLG และบิตสตรีมจะทำงานแบบ HLG จึงไม่ต้องทําการปรับโทนสี) |
เหมือนกับกรณีการใช้งานการจับภาพในแอป |
กรณีการใช้งาน 3: แบ็กเอนด์ของแอปไม่รองรับ HDR
รูปแบบการจับภาพ | รูปแบบการอัปโหลด | รูปแบบการนำส่ง |
รูปแบบใดก็ได้ | SDR
แมปโทนสีจาก HLG เป็น SDR ก่อนอัปโหลดโดยใช้ Transformer API |
SDR |