כשמגדירים את הפורמטים שנתמכים ב-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.