פורמטים נתמכים של מדיה

במאמר הזה מתוארת התמיכה בפלטפורמת Android בפורמטים של קובצי מדיה, קונטיינרים ופרוטוקולי רשת.

בטבלאות הבאות מתואר פורמט המדיה הנתמך שמוטמע בפלטפורמת Android. ‫YES פירושו שהפורמט זמין בטלפונים ובטאבלטים עם כל גרסאות Android. אם מצוינת פלטפורמת Android ספציפית, הפורמט זמין בטלפונים ובטאבלטים עם הגרסה הזו וכל הגרסאות שבאות אחריה. יכול להיות שהפורמט יהיה זמין גם בגרסאות קודמות, אבל זה לא מובטח. בגורמי צורה אחרים מלבד טלפונים וטאבלטים, יכול להיות שיהיו הבדלים בתמיכה בפורמטים של מדיה.

חשוב לציין שמכשיר נייד מסוים עשוי לתמוך בפורמטים או בסוגי קבצים נוספים שלא מופיעים בטבלאות האלה. בנוסף, אם משתמשים ב-MediaCodec ישירות, אפשר לגשת לכל פורמט מדיה זמין בלי קשר לסוגי הקבצים ולפורמטים של קונטיינרים שנתמכים.

תמיכה באודיו

פורמט במקודד מפענח קוד סוגי קבצים ופורמטים של מאגרים פרטים
חולץ Muxer
AAC LC כן כן ‫• 3GPP ‏(‎.3gp)
• MPEG-4 ‏(‎.mp4, ‏‎.m4a)
• ADTS raw AAC ‏(‎.aac, לא נתמך ADIF)
• MPEG-TS ‏(‎.ts, לא ניתן לחיפוש, Android 3.0 ואילך)
‫• 3GPP ‏(‎.3gp)
‫• MPEG-4 ‏(‎.mp4, ‏‎.m4a)
‫• ADTS raw AAC ‏(‎.aac, לא נתמך ADIF)
‫• MPEG-TS (לא בטוח) ‏(‎.ts, לא ניתן לחיפוש, Android 3.0 ואילך)
תמיכה בתוכן מונו/סטריאו/5.0/5.1 עם תדירויות דגימה רגילות מ-8 עד 48 קילוהרץ.
HE-AACv1 (AAC+)‎ ‫Android 4.1 ומעלה כן
‫HE-AACv2 (משופר AAC+)   כן תמיכה בתוכן סטריאו/5.0/5.1 עם תדירויות דגימה רגילות מ-8 עד 48 קילוהרץ.
xHE-AAC   ‫Android 9 ואילך תמיכה בתוכן של עד 8 ערוצים עם תדירויות דגימה רגילות מ-8 עד 48 קילוהרץ
‫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)
מונו/סטריאו (ללא מספר ערוצים). תדירויות דגימה של עד 48kHz (אבל מומלץ להשתמש בתדירות של עד 44.1kHz במכשירים עם פלט של 44.1kHz, כי דגימת היתר מ-48kHz ל-44.1kHz לא כוללת מסנן מעביר נמוכים). מומלץ 16 ביט; לא מוחל דית'רינג ל-24 ביט.
MIDI   כן ‫• סוג 0 ו-1 (‎.mid,‏ ‎.xmf,‏ ‎.mxmf)
‫• RTTTL/RTX ‏(‎.rtttl,‏ ‎.rtx)
‫• OTA ‏(‎.ota)
‫• iMelody ‏(‎.imy)
‫MIDI Type 0 ו-1. גרסה 1 וגרסה 2 של DLS. XMF ו-Mobile XMF. תמיכה בפורמטים של צלצולים RTTTL/RTX,‏ OTA ו-iMelody
MP3   כן ‫• MP3 ‏(‎.mp3)
‫• MPEG-4 ‏(‎.mp4,‏ ‎.m4a, ‏ Android 10 ואילך)
‫• Matroska ‏(‎.mkv, ‏ Android 10 ואילך)
מונו/סטריאו 8-320Kbps קבוע (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 גולמיות ב-8,000, ב-16,000 וב-44,100 הרץ.
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
פרופיל Baseline (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 Media Framework שמומלצים להפעלה באמצעות קודק H.264 Baseline Profile. אותן המלצות חלות על קודק Main Profile, שזמין רק ב-Android 6.0 ואילך.

  ‫SD (איכות נמוכה) ‫SD (איכות גבוהה) ‫HD 720p (לא זמין בכל המכשירים)
רזולוציית הווידאו ‫176 x 144 פיקסלים ‫‎480 x 360 px ‫‎1280 x 720 פיקסלים
קצב הפריימים של הסרטון ‫12 פריימים לשנייה ‫30 פריימים לשנייה (fps) ‫30 פריימים לשנייה (fps)
קצב העברת נתונים של וידאו ‫56 Kbps ‫500 Kbps 2Mbps
קודק אודיו AAC-LC AAC-LC AAC-LC
ערוצי אודיו ‫1 (מונו) 2 (סטריאו) 2 (סטריאו)
קצב העברת נתוני אודיו ‎24 Kbps ‫128 Kbps ‫192 Kbps

בטבלה הבאה מפורטים הפרופילים והפרמטרים של קידוד הווידאו ב-Android Media Framework שמומלצים להפעלה באמצעות VP8 media codec.

  ‫SD (איכות נמוכה) ‫SD (איכות גבוהה) ‫HD 720p (לא זמין בכל המכשירים) ‫HD 1080p (לא זמין בכל המכשירים)
רזולוציית הווידאו ‫‎320 x 180 px ‫640 x 360 פיקסלים ‫‎1280 x 720 פיקסלים ‫‎1,920 x 1,080 פיקסלים
קצב הפריימים של הסרטון ‫30 פריימים לשנייה (fps) ‫30 פריימים לשנייה (fps) ‫30 פריימים לשנייה (fps) ‫30 פריימים לשנייה (fps)
קצב העברת נתונים של וידאו ‫800 Kbps 2Mbps 4Mbps 10Mbps

המלצות לפענוח סרטונים

הטמעות במכשירים חייבות לתמוך בשינוי דינמי של רזולוציית הווידאו וקצב הפריימים באמצעות ממשקי ה-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, ההפרש בין דגימות האודיו והווידאו שמתאימות לאותו הזמן שחלף לא יכול להיות גדול מ-500KB. כדי למזער את הסחף הזה של האודיו והווידאו, כדאי לשלב בין אודיו לווידאו בגודלי נתחים קטנים יותר.

תמיכה בתמונות

פורמט במקודד מפענח קוד פרטים סוגי קבצים
פורמטים של מאגרי נתונים
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 (פרופיל Baseline) ‫Android מגרסה 14 ואילך
(דרך MediaCodec; לא ב-Bitmap.compress)
‫Android 12 ואילך פענוח של 8 ביט נתמך מגרסה Android 12 ואילך. פענוח של 10 ביט הוא אופציונלי. כדי לבדוק אם יש תמיכה ב-10 ביט, צריך לבדוק את ImageDecoder.isMimeTypeSupported("image/avif") (גם אם התוצאה היא false, עדיין אפשר להשתמש ב-8 ביט). ‫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

יצרני ציוד מקורי יכולים להפעיל כל פורמט HDR שהם בוחרים באמצעות ארכיטקטורת ה-HDR של Android, שמספקת את הצרכים העיקריים של פורמטים של HDR: מאגרי נתונים זמניים של 10 ביט, מטא-נתונים (סטטיים, דינמיים וללא מטא-נתונים), פונקציית העברה וטיפול במרחב הצבעים.

כדי להבטיח עקביות למפתחים ולטפל בתרחישי שימוש מרכזיים ב-HDR, אנחנו דורשים מיצרני ציוד מקורי (OEM) לתמוך בכמה פורמטים בסיסיים במכשירים שתומכים ב-HDR:

  • להפעלת תוכן מקצועי, כמו סטרימינג של סרטים, נדרש HDR10.
  • כדי לספק חוויה עקבית במכשירי Android, אנחנו דורשים להשתמש ב-HLG10 לצילום ולהפעלה של תוכן שנוצר על ידי משתמשים.

יצרני ציוד מקורי שמוסיפים תמיכה ב-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 לפני ההעלאה באמצעות ממשקי API של טרנספורמציה

זהה לתרחיש השימוש של צילום מסך באפליקציה
DV8.4 HLG

‫(DV8.4 משתמש ב-HLG וזרם הביטים יתנהג כמו HLG, ולכן לא נדרש מיפוי טונים)

זהה לתרחיש השימוש של צילום מסך באפליקציה

תרחיש שימוש 3: קצה העורפי של האפליקציה לא תומך ב-HDR

פורמט הצילום פורמט העלאה פורמט הצגת המודעות
כל פורמט שהוא SDR

מיפוי טונים מ-HLG ל-SDR לפני ההעלאה באמצעות ממשקי API של טרנספורמציה

SDR