פורמטים נתמכים

כשמגדירים את הפורמטים שנתמכים ב-ExoPlayer, חשוב לציין 'פורמטים של מדיה' מוגדרות במספר רמות. מהרמה הנמוכה ביותר ועד לרמה הנמוכה ביותר הגבוהה ביותר, אלה הן:

  • הפורמט של דוגמאות מדיה בודדות (כמו פריים או פריים של אודיו). אלה פורמטים לדוגמה. שימו לב שקובץ וידאו טיפוסי להכיל מדיה בשני פורמטים לדוגמה לפחות. אחד לווידאו (לדוגמה, H.264) אחד לאודיו (לדוגמה, AAC).
  • הפורמט של המאגר שבו נמצאים דגימות המדיה מטא-נתונים. אלה פורמטים של קונטיינרים. לקובץ מדיה יש מאגר יחיד אחד MP4 (לדוגמה, MP4), שמציין בדרך כלל באמצעות סיומת הקובץ. הערה לפורמטים מסוימים של אודיו בלבד (למשל MP3), פורמט הדגימה והמאגר. עשויים להיות זהים.
  • טכנולוגיות של סטרימינג דינמי כמו DASH, SmoothStreaming ו-HLS. האלה הן לא פורמטים של מדיה, אבל עדיין צריך להגדיר רמת התמיכה שמספקים ExoPlayer.

בקטעים הבאים מוגדרת התמיכה של ExoPlayer בכל רמה, מהגבוהה ביותר עד הנמוך ביותר. בשני הקטעים האחרונים מתוארת תמיכה בפורמטים עצמאיים של כתוביות והפעלת סרטוני HDR.

סטרימינג דינמי

DASH

ExoPlayer תומך ב-DASH עם מספר פורמטים של קונטיינרים. שידורי המדיה חייבים להיות demuxed, כלומר הווידאו, האודיו והטקסט חייבים להיות מוגדרים בנפרד רכיבי AdaptationSet במניפסט DASH (CEA-608 הוא חריג כמו שמתואר בטבלה שבהמשך). הפורמטים הכלולים של דגימות האודיו והווידאו גם נתמכות (ראו פורמטים לדוגמה לקבלת פרטים).

תכונה נתמך תגובות
קונטיינרים
FMP4 כן סטרימינג לדוגמה בלבד
WebM כן סטרימינג לדוגמה בלבד
מטרוסקה כן סטרימינג לדוגמה בלבד
MPEG-TS לא לא מתוכננת תמיכה
כתוביות
TTML כן גולמי או מוטמע ב-FMP4 בהתאם לתקני ISO/IEC 14496-30
WebVTT כן גולמי או מוטמע ב-FMP4 בהתאם לתקן ISO/IEC 14496-30
CEA-608 כן מוטמע ב-FMP4 כשהוא מזוהה באמצעות תיאורי נגישות של SCTE
CEA-708 כן מוטמע ב-FMP4 עם אותות באמצעות תיאורי נגישות של SCTE
מטא נתונים
מטא-נתונים של EGS כן מוטמע ב-FMP4
הגנה על תוכן
Widevine כן 'cenc' scheme: API 19+; 'cbcs' scheme: API 25+
PlayReady SL2000 כן Android TV , "cenc" סכמה בלבד
מקש ניקוי כן API 21+ , "cenc" סכמה בלבד
הפעלה בשידור חי
הפעלה רגילה של שידור חי כן
הפעלה בשידור חי של CMAF עם זמן אחזור נמוך במיוחד כן
נתוני לקוח מדיה נפוצים (CMCD) כן מדריך ההטמעה

סטרימינג חלקה

ב-exoPlayer יש תמיכה ב-SmoothStreaming בפורמט הקונטיינר FMP4. שידורי מדיה חייב להיות מוקפד, כלומר הווידאו, האודיו והטקסט חייבים להיות מוגדרים בנפרד רכיבי StreamIndex במניפסט של SmoothStreaming. את האודיו הכלולים חייבת להיות תמיכה גם בפורמטים של דגימות וידאו (עיינו ב פורמטים לדוגמה לקבלת פרטים).

תכונה נתמך תגובות
קונטיינרים
FMP4 כן סטרימינג לדוגמה בלבד
כתוביות
TTML כן מוטמע ב-FMP4
הגנה על תוכן
PlayReady SL2000 כן Android TV בלבד
הפעלה בשידור חי
הפעלה רגילה של שידור חי כן
נתוני לקוח מדיה נפוצים (CMCD) כן מדריך ההטמעה

HLS

ב-ExoPlayer יש תמיכה ב-HLS במגוון פורמטים של קונטיינרים. את האודיו הכלולים חייבת להיות תמיכה גם בפורמטים של דגימות וידאו (עיינו ב פורמטים לדוגמה לקבלת פרטים). רביעי לעודד מאוד מפיקי תוכן בפרוטוקול HLS ליצור שידורי HLS באיכות גבוהה, כפי שמתואר כאן.

תכונה נתמך תגובות
קונטיינרים
MPEG-TS כן
FMP4/CMAF כן
ADTS (AAC) כן
MP3 כן
כתוביות
CEA-608 כן
CEA-708 כן
WebVTT כן
מטא נתונים
ID3 כן
SCTE-35 לא
הגנה על תוכן
AES-128 כן
דוגמה AES-128 לא
Widevine כן API 19+ (סכימת cenc) וסכימת 25 + ('cbcs')
PlayReady SL2000 כן Android TV בלבד
שליטה דרך שרת
עדכוני Delta כן
חסימת הטעינה מחדש של פלייליסט כן
חסימת הטעינה של רמזים לטעינה מראש כן מלבד בייטים עם אורכים לא מוגדרים
הפעלה בשידור חי
הפעלה רגילה של שידור חי כן
HLS עם זמן אחזור קצר (Apple) כן
זמן אחזור קצר של HLS (קהילה) לא
נתוני לקוח מדיה נפוצים (CMCD) כן מדריך ההטמעה

פורמטים של קונטיינרים מסוג Progressive

ניתן להפעיל ישירות סטרימינג בפורמטים הבאים של קונטיינרים ב-ExpoPlayer. צריכה להיות תמיכה גם בפורמטים של דגימות האודיו והווידאו שנכללות (אפשר לעיין ב פורמטים לדוגמה. למידע על תמיכה בפורמט ובמאגר תמונות, אפשר לעיין במאמר תמונות.

פורמט מאגר נתמך תגובות
MP4 כן
M4A כן
FMP4 כן
WebM כן
מטרוסקה כן
MP3 כן חלק מהשידורים זמינים רק באמצעות דילוג על קצב העברת נתונים קבוע**
אוג כן מכילה Vorbis, Opus ו-FLAC
WAV כן
MPEG-TS כן
MPEG-PS כן
‎.FLV כן לא ניתן לחיפוש*
ADTS (AAC) כן ניתן לבצע חיפוש רק באמצעות דילוג בקצב העברת נתונים קבוע**
FLAC כן באמצעות ספריית FLAC או כלי חילוץ FLAC בספריית ExoPlayer***
AMR כן ניתן לבצע חיפוש רק באמצעות דילוג בקצב העברת נתונים קבוע**

* הדילוג לא נתמך כי הקונטיינר לא מספק מטא-נתונים (לדוגמה, אינדקס לדוגמה) כדי לאפשר לנגן מדיה לבצע חיפוש באופן יעיל. אם נדרש חיפוש, מומלץ להשתמש בפורמט מאגר תגים מתאים יותר.

** לכלי החילוץ האלה יש דגלי FLAG_ENABLE_CONSTANT_BITRATE_SEEKING בשביל הפעלת דילוג משוער באמצעות הנחה של קצב העברת נתונים קבוע. הזה הפונקציונליות לא מופעלת כברירת מחדל. הדרך הפשוטה ביותר להפעיל את האפשרות הזו לכל כלי החילוץ שתומכים באפשרות הזו. DefaultExtractorsFactory.setConstantBitrateSeekingEnabled, כפי שמתואר כאן.

*** כלי החילוץ של ספריית FLAC מפיק אודיו גולמי, ואפשר לטפל בו. לפי המסגרת בכל רמות ה-API. הפלט של קובץ ה-FLAC של ספריית ExoPlayer פריימים של אודיו בפורמט FLAC, ולכן המסתמכים על שימוש במפענח FLAC (לדוגמה, MediaCodec שמטפל ב-FLAC (נדרש מרמת API 27), או ספריית FFmpeg שמופעלת בה FLAC). השדה DefaultExtractorsFactory משתמש מחלץ תוספים אם האפליקציה נוצרה באמצעות ספריית FLAC. אחרת, הוא משתמש במחלץ ספריית ExoPlayer.

RTSP

ExoPlayer תומך ב-RTSP בשידור חי וגם על פי דרישה. פורמטים נתמכים לדוגמה ו סוגי הרשתות מפורטים למטה.

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

  • H264 (תיאור המדיה של SDP חייב לכלול נתוני SPS/PPS ב-FMtp לאתחול המפענח).
  • AAC (עם ADTS Bitstream).
  • AC3.

סוגי רשתות נתמכים

  • RTP בחיבור UDP unicast (אין תמיכה בריבוי שידורים).
  • RTSP משולב, RTP ב-RTSP באמצעות TCP.

פורמטים לדוגמה

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

בנוסף למפענחים לפלטפורמות של Android, ExoPlayer יכול גם להשתמש ותוספים של מפענח תוכנה. צריך ליצור אותם באופן ידני ולכלול אותם שרוצים להשתמש בהם. כרגע אנחנו מספקים מפענח תוכנה לפענוח ספריות עבור AV1, VP9, FLAC, Opus, וגם FFmpeg.

ספריית FFmpeg

הספרייה FFmpeg תומכת ומפענח מגוון פורמטים שונים של דגימות אודיו. יש לך אפשרות לבחור שיש לכלול במהלך בניית הספרייה, כפי שמתועד README.md של הספרייה. הטבלה הבאה מספקת מיפוי בין הפורמט של דגימת האודיו לפורמט המתאים השם של מפענח FFmpeg.

פורמט לדוגמה שמות המפענחים
וורביס וורביס
Opus אופוס
FLAC flac
ערוץ רשמי של אומן אלאק
חוק PPCM Pcm_mulaw
חוק PCM A pcm_alaw
MP1, MP2, MP3 mp3
AMR-NB amrnb
AMR-WB amrwb
קובץ AAC AAC
AC-3 ac3
E-AC-3 eac3
DTS, DTS-HD dca
TrueHD mlp truehd

תמונות

ExoPlayer תומך בפורמטים הבאים של תמונות: צפייה ספריות של טעינת תמונות לשילוב עם ספריות חיצוניות שעשויות לספק תמיכה קבוצה שונה של פורמטים.

פורמט תמונה נתמך הערות
BMP כן
GIF לא אין תמיכה במחלץ
JPEG כן
תמונה עם תנועה בפורמט JPEG כן תמיכה בווידאו ובתמונות סטילס
JPEG Ultra HDR כן חזרה למצב SDR לפני Android 14 או הפעלה מסכים שלא תומכים ב-HDR
PNG כן
WebP כן
HEIF/HEIC כן
תמונה עם תנועה מסוג HEIC באופן חלקי יש תמיכה בתמונות סטילס בלבד*
AVIF (ערך הבסיס) כן הקוד מפוענח רק ב-Android מגרסה 14 ואילך

* ניתן לקבל את חלק הווידאו בתמונות עם תנועה מסוג HEIC MetadataRetriever והופעל כקובץ נפרד.

פורמטים של כתוביות עצמאיות

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

פורמט מאגר נתמך סוג MIME
WebVTT כן MimeTypes.TEXT_VTT
TTML / SMPTE-TT כן MimeTypes.APPLICATION_TTML
SubRip כן MimeTypes.APPLICATION_SUBRIP
SubStationAlpha (SSA/ASS) כן MimeTypes.TEXT_SSA

הפעלת סרטון HDR

ExoPlayer מטפל בחילוץ סרטונים בטווח דינמי גבוה (HDR) במגוון רחב של סרטונים קונטיינרים, כולל Dolby Vision ב-MP4 ו-HDR10+ ב-Matroska/WebM. פענוח הקוד והצגת תוכן HDR תלויה בתמיכה של פלטפורמת Android במכשיר. צפייה הפעלת וידאו HDR כדי ללמוד איך לבדוק אם יש יכולות ומגבלות של פענוח קוד ב-HDR או תצוגה של HDR תמיכה ב-HDR בכל הגרסאות של Android.

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