รูปแบบสื่อที่รองรับ

เอกสารนี้อธิบายการรองรับตัวแปลงรหัสสื่อ คอนเทนเนอร์ และโปรโตคอลเครือข่ายที่แพลตฟอร์ม Android มีให้

ตารางด้านล่างอธิบายการรองรับรูปแบบสื่อที่สร้างขึ้นในแพลตฟอร์ม Android "ใช่" หมายความว่ารูปแบบนี้พร้อมใช้งานบนอุปกรณ์พกพาและแท็บเล็ตที่ใช้ Android ทุกเวอร์ชัน หากมีการระบุแพลตฟอร์ม Android ที่เฉพาะเจาะจง รูปแบบนี้จะใช้ได้ในโทรศัพท์มือถือและแท็บเล็ตที่ใช้เวอร์ชันนั้นและเวอร์ชันที่ใหม่กว่าทั้งหมด นอกจากนี้ รูปแบบนี้อาจมีให้บริการในเวอร์ชันก่อนหน้าด้วย แต่ไม่รับประกัน ในรูปแบบของอุปกรณ์อื่นๆ นอกเหนือจากโทรศัพท์มือถือและแท็บเล็ต การรองรับรูปแบบสื่ออาจแตกต่างกันไป

โปรดทราบว่าอุปกรณ์เคลื่อนที่บางเครื่องอาจรองรับรูปแบบหรือประเภทไฟล์เพิ่มเติมที่ไม่ได้แสดงในตารางเหล่านี้ นอกจากนี้ หากคุณใช้ MediaCodec โดยตรง คุณจะเข้าถึงรูปแบบสื่อที่มีอยู่ได้โดยไม่คำนึงถึงประเภทไฟล์และรูปแบบคอนเทนเนอร์ที่รองรับ

การสนับสนุนด้านเสียง

รูปแบบ โปรแกรมเปลี่ยนไฟล์ เครื่องมือถอดรหัส ประเภทไฟล์ รูปแบบคอนเทนเนอร์ รายละเอียด
เครื่องมือแยกข้อมูล Muxer
AAC LC ใช่ ใช่ • 3GPP (.3gp)
• MPEG-4 (.mp4, .m4a)
• AAC ดิบ ADTS (.aac, ไม่รองรับ ADIF)
• MPEG-TS (.ts, ค้นหาไม่ได้, Android 3.0 ขึ้นไป)
• 3GPP (.3gp)
• MPEG-4 (.mp4, .m4a)
• AAC ดิบ ADTS (.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 ที่ 8 kHz
AMR-WB ใช่ ใช่ มี 9 อัตราตั้งแต่ 6.60 kbit/s ถึง 23.85 kbit/s ที่สุ่มตัวอย่าง @ 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 ไม่มีตัวกรองแบบผ่านต่ำ) แนะนำ 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)  

การรองรับวิดีโอ

รูปแบบวิดีโอ

รูปแบบ โปรแกรมเปลี่ยนไฟล์ เครื่องมือถอดรหัส ประเภทไฟล์ รูปแบบคอนเทนเนอร์ รายละเอียด
เครื่องมือแยกข้อมูล Muxer
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) สตรีมได้ใน 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 ที่แนะนำสำหรับการเล่นโดยใช้ตัวแปลงรหัสโปรไฟล์พื้นฐาน 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

คำแนะนำในการถอดรหัสวิดีโอ

การติดตั้งใช้งานอุปกรณ์ต้องรองรับการสลับความละเอียดวิดีโอและอัตราเฟรมแบบไดนามิกผ่าน Android API มาตรฐานภายในสตรีมเดียวกันสำหรับตัวแปลงรหัส 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 ใช่ ใช่ ฐาน + โปรเกรสซีฟ 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 10 ขึ้นไป
(ผ่าน MediaCodec หรือ HeifWriter; ไม่ได้อยู่ใน Bitmap.compress)
Android 9.0 ขึ้นไป ไม่จำเป็นต้องใช้อุปกรณ์ ดูการรองรับ 8 บิตได้ที่ ImageDecoder.isMimeTypeSupported("image/heif") การถอดรหัส 10 บิตต้องใช้โปรไฟล์ HEVC Main10 ที่ไม่บังคับ HEIF (.heic; .heif)
AVIF (โปรไฟล์พื้นฐาน) Android 14 ขึ้นไป
(ผ่าน MediaCodec; ไม่ได้อยู่ใน Bitmap.compress)
Android 12 ขึ้นไป ระบบรองรับการถอดรหัส 8 บิตตั้งแต่ Android 12 ขึ้นไป การถอดรหัส 10 บิตเป็นแบบไม่บังคับ โปรดตรวจสอบ ImageDecoder.isMimeTypeSupported("image/avif") เพื่อดูการรองรับ 10 บิต (แม้ว่าจะเป็นเท็จ 8 บิตก็ยังใช้งานได้) AVIF (.avif)

โปรโตคอลเครือข่าย

ระบบรองรับโปรโตคอลเครือข่ายต่อไปนี้สำหรับการเล่นเสียงและวิดีโอ

  • RTSP (RTP, SDP)
  • การสตรีมแบบก้าวหน้าผ่าน HTTP/HTTPS
  • ร่างโปรโตคอลการสตรีมแบบสดผ่าน HTTP/HTTPS:
    • ไฟล์สื่อ MPEG-2 TS เท่านั้น
    • โปรโตคอลเวอร์ชัน 3 Android 4.0 ขึ้นไป
    • โปรโตคอลเวอร์ชัน 2 Android 3.x
    • ไม่รองรับใน Android เวอร์ชันก่อน 3.0

หมายเหตุ: Android เวอร์ชันก่อน 3.1 ไม่รองรับ HTTPS

รูปแบบวิดีโอ HDR

OEM สามารถเปิดใช้รูปแบบ HDR ที่ต้องการได้ด้วยสถาปัตยกรรม HDR ของ Android ซึ่งมีข้อกำหนดหลักของรูปแบบ HDR ได้แก่ บัฟเฟอร์ 10 บิต ข้อมูลเมตา (คงที่ ไดนามิก และไม่มี) ฟังก์ชันการโอน และการจัดการพื้นที่สี

เรากำหนดให้ OEM รองรับรูปแบบพื้นฐาน 2-3 รูปแบบในอุปกรณ์ที่รองรับ HDR เพื่อให้มั่นใจว่านักพัฒนาแอปจะได้รับประสบการณ์การใช้งานที่สอดคล้องกันและเพื่อรองรับ Use Case หลักๆ ของ 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 (รองรับเฉพาะ PQ ไม่รองรับ HLG):

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: Backend ของแอปไม่รองรับ HDR

รูปแบบการจับภาพ รูปแบบที่อัปโหลด รูปแบบการนำส่ง
รูปแบบใดก็ได้ SDR

แมปโทนจาก HLG เป็น SDR ก่อนอัปโหลดโดยใช้ Transformer API

SDR