FMUSER Wirless להעביר וידאו ושמע קל יותר!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> אפריקאית
sq.fmuser.org -> אלבנית
ar.fmuser.org -> ערבית
hy.fmuser.org -> ארמנית
az.fmuser.org -> אזרבייג'נית
eu.fmuser.org -> באסקית
be.fmuser.org -> בלארוסית
bg.fmuser.org -> בולגרית
ca.fmuser.org -> קטלאנית
zh-CN.fmuser.org -> סינית (פשוטה)
zh-TW.fmuser.org -> סינית (מסורתית)
hr.fmuser.org -> קרואטית
cs.fmuser.org -> צ'כית
da.fmuser.org -> דנית
nl.fmuser.org -> הולנדית
et.fmuser.org -> אסטונית
tl.fmuser.org -> פיליפינית
fi.fmuser.org -> פינית
fr.fmuser.org -> צרפתית
gl.fmuser.org -> גליציאנית
ka.fmuser.org -> גרוזינית
de.fmuser.org -> גרמנית
el.fmuser.org -> יוונית
ht.fmuser.org -> קריאולית האיטי
iw.fmuser.org -> עברית
hi.fmuser.org -> הינדית
hu.fmuser.org -> הונגרית
is.fmuser.org -> איסלנדית
id.fmuser.org -> אינדונזית
ga.fmuser.org -> אירית
it.fmuser.org -> איטלקית
ja.fmuser.org -> יפנית
ko.fmuser.org -> קוריאנית
lv.fmuser.org -> לטבית
lt.fmuser.org -> ליטאי
mk.fmuser.org -> מקדונית
ms.fmuser.org -> מלאית
mt.fmuser.org -> מלטזית
no.fmuser.org -> נורווגית
fa.fmuser.org -> פרסית
pl.fmuser.org -> פולני
pt.fmuser.org -> פורטוגזית
ro.fmuser.org -> רומנית
ru.fmuser.org -> רוסית
sr.fmuser.org -> סרבית
sk.fmuser.org -> סלובקית
sl.fmuser.org -> סלובנית
es.fmuser.org -> ספרדית
sw.fmuser.org -> סווהילי
sv.fmuser.org -> שוודית
th.fmuser.org -> תאילנדי
tr.fmuser.org -> טורקית
uk.fmuser.org -> אוקראינית
ur.fmuser.org -> אורדו
vi.fmuser.org -> וייטנאמי
cy.fmuser.org -> וולשית
yi.fmuser.org -> יידיש
לפני כמה ימים הקדשתי זמן ללימוד טכנולוגיית HTL סטרימינג בשידור חי (HLS) והטמעת מקודד HLS, hlsliveencoder, כתוב ב- C + +. תפקידו ללכוד את המצלמה והמיקרופון, קידוד וידאו בזמן אמת H.264 וקידוד שמע aac, ועל פי מפרט פרוטוקול HLS, ליצור קובץ TS סטנדרטי מקוטע וקובץ אינדקס m3u8. דרך hlsliveencoder שלי ושרת HTTP של צד שלישי (כגון nginx), הבנו בהצלחה את הזרמת ה- HTTP בשידור חי ועברנו את המבחן באייפון. אכתוב כאן כמה מהרווחים.
1. ניתוח טכנולוגיית HLS
HTTP סטרימינג בשידור חי (HLS) הוא פרוטוקול תחבורה של מדיה זורמת המבוסס על HTTP המיושם על ידי Apple Inc., שיכול לממש מדיה זרימה חיה ועל פי דרישה. הוא משמש בעיקר במערכת IOS כדי לספק פתרונות שמע ווידאו בשידור חי ולפי דרישה למכשירי IOS (כגון iPhone ו- iPad). HLS לפי דרישה הוא בעצם HTTP מקוטע נפוץ לפי דרישה. ההבדל הוא שהפלחים שלו קטנים מאוד. על מנת לממש את HLS לפי דרישה, המפתח הוא פילוח קבצי מדיה. נכון לעכשיו, ישנם כלי קוד פתוח רבים בהם ניתן להשתמש. לא אדון בזה כאן, רק אדבר על טכנולוגיית השידור החי של HLS.
בהשוואה לפרוטוקולים הנפוצים של סטרימינג בשידור חי, כגון פרוטוקול RTMP, פרוטוקול RTSP, פרוטוקול MMS וכן הלאה, ההבדל הגדול ביותר בשידור חי של HLS הוא שהלקוח החי אינו מקבל זרם נתונים מלא. פרוטוקול HLS מאחסן את זרם הנתונים החי כקבצי מדיה רציפים, קצרי טווח וארוכים (פורמט mpeg-ts) בצד השרת, ואילו צד הלקוח מוריד ומשמיע קבצים קטנים אלה ברציפות, מכיוון שצד השרת תמיד מייצר קבצים קטנים חדשים הנתונים החי האחרונים, כך שצד הלקוח רק צריך לנגן את הקבצים שהושגו מהשרת כדי לממש את השידור החי. ניתן לראות כי HLS בעצם מממש שידור חי באמצעות טכנולוגיית VOD. מכיוון שהנתונים מועברים באמצעות פרוטוקול HTTP, אין צורך לבחון את בעיית חומת האש או ה- proxy, וזמן פילוח הקבצים קצר מאוד. הלקוח יכול לבחור במהירות להחליף את קצב הקוד כדי להתאים אותו להפעלה בתנאי רוחב פס שונים. עם זאת, בשל המאפיינים הטכניים של HLS, העיכוב שלה תמיד גבוה מזה של פרוטוקול סטרימינג בשידור חי רגיל.
על פי ההבנה לעיל, כדי להשיג סטרימינג בשידור חי ב- HTTP, עלינו ללמוד ולהטמיע את הטכנולוגיות העיקריות הבאות.
(1) אסוף את הנתונים של מקור הווידאו ומקור השמע
(2) הנתונים המקוריים מקודדים על ידי H264 ו- AAC
(3) נתוני וידאו ושמע ארוזים כחבילות mpeg-ts
(4) אסטרטגיית ייצור פילוח HLS וקובץ אינדקס m3u8
2. פרוטוקול הובלה HTTP
ביניהן הוזכרו הנקודות הראשונות והשניות במאמר הקודם שלי, והנקודה האחרונה היא שנוכל להשתמש בשרת ה- HTTP הקיים, ולכן יישום הנקודות השלישית והרביעית הוא המפתח.
(1) מסגרת תכנית ויישום
באמצעות הניתוח הנ"ל, ההיגיון והתהליך של מקודד HLS חי הם בעצם ברורים: התחל את חוט קידוד השמע והווידאו בהתאמה, מימש את רכישת השמע והווידאו באמצעות טכנולוגיית DirectShow (או אחרת) ואז התקשר ל libx264 ו- libfaac בהתאמה לווידאו ול קידוד שמע. לאחר ששני האשכולות המקודדים מקודדים את נתוני האודיו והווידאו בזמן אמת, הם שומרים אותם בקובץ פלח בפורמט mpeg-ts בהתאם לאסטרטגיית המחיצה המותאמת אישית. כאשר מאוחסן קובץ פלח, קובץ האינדקס m3u8 מתעדכן. כפי שמוצג באיור למטה:
באיור לעיל, לאחר קבלת נתוני הווידאו והשמע, hlsliveencoder צריך לקבוע תחילה אם על המחיצה הנוכחית להסתיים, וליצור מחיצה חדשה להמשך הדור הרציף של מחיצת TS. יש לציין כי על הפיצול החדש להתחיל ממסגרת המפתח כדי למנוע מהכישלון לפענח את הנגן. קוד הליבה הוא כדלקמן:
ממשק ה- tsmuxer פשוט יחסית.
(2) אסטרטגיית ייצור קטעי HLS ו- m3u8
① אסטרטגיית פילוח
אסטרטגיית הפילוח של HLS מומלצת בעצם כל 10 שניות. כמובן שצריך לסמן את הזמן הספציפי לפי אורך הפיצול בפועל
באופן כללי, לצורך מטמון ומסיבות אחרות, שלוש כתובות השברים האחרונות נשמרות בקובץ האינדקס ומעודכנות בצורה של "חלון הזזה".
② הצגת קובץ m3u8
M3u8 הוא קובץ האינדקס של הזרמת HTTP בשידור חי. ניתן לראות M3u8 כ. קובץ בפורמט M3U בעצם, ההבדל הוא שקובץ m3u8 משתמש בקידוד תווים UTF-8.
העתק קוד
# כותרת קובץ Extm3u M3U, חייבת להיות ממוקמת בשורה הראשונה
# מספר סידורי של קטע ה- TS הראשון של רצף ext-x-media
# Ext-x-targetduration משך הזמן המקסימלי של כל קטע TS
# האם ext-x-allow-cache מאפשר מטמון
# סוף קובץ m3u8 של ext-x-endlist
#Extinf מידע נוסף, מידע על פיצול ts, כגון משך, רוחב פס וכו '
|
הזן דוא"ל כדי לקבל הפתעה
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> אפריקאית
sq.fmuser.org -> אלבנית
ar.fmuser.org -> ערבית
hy.fmuser.org -> ארמנית
az.fmuser.org -> אזרבייג'נית
eu.fmuser.org -> באסקית
be.fmuser.org -> בלארוסית
bg.fmuser.org -> בולגרית
ca.fmuser.org -> קטלאנית
zh-CN.fmuser.org -> סינית (פשוטה)
zh-TW.fmuser.org -> סינית (מסורתית)
hr.fmuser.org -> קרואטית
cs.fmuser.org -> צ'כית
da.fmuser.org -> דנית
nl.fmuser.org -> הולנדית
et.fmuser.org -> אסטונית
tl.fmuser.org -> פיליפינית
fi.fmuser.org -> פינית
fr.fmuser.org -> צרפתית
gl.fmuser.org -> גליציאנית
ka.fmuser.org -> גרוזינית
de.fmuser.org -> גרמנית
el.fmuser.org -> יוונית
ht.fmuser.org -> קריאולית האיטי
iw.fmuser.org -> עברית
hi.fmuser.org -> הינדית
hu.fmuser.org -> הונגרית
is.fmuser.org -> איסלנדית
id.fmuser.org -> אינדונזית
ga.fmuser.org -> אירית
it.fmuser.org -> איטלקית
ja.fmuser.org -> יפנית
ko.fmuser.org -> קוריאנית
lv.fmuser.org -> לטבית
lt.fmuser.org -> ליטאי
mk.fmuser.org -> מקדונית
ms.fmuser.org -> מלאית
mt.fmuser.org -> מלטזית
no.fmuser.org -> נורווגית
fa.fmuser.org -> פרסית
pl.fmuser.org -> פולני
pt.fmuser.org -> פורטוגזית
ro.fmuser.org -> רומנית
ru.fmuser.org -> רוסית
sr.fmuser.org -> סרבית
sk.fmuser.org -> סלובקית
sl.fmuser.org -> סלובנית
es.fmuser.org -> ספרדית
sw.fmuser.org -> סווהילי
sv.fmuser.org -> שוודית
th.fmuser.org -> תאילנדי
tr.fmuser.org -> טורקית
uk.fmuser.org -> אוקראינית
ur.fmuser.org -> אורדו
vi.fmuser.org -> וייטנאמי
cy.fmuser.org -> וולשית
yi.fmuser.org -> יידיש
FMUSER Wirless להעביר וידאו ושמע קל יותר!
צרו קשר
כתובת:
No.305 חדר HuiLan בניין No.273 Huanpu כביש גואנגזו סין 510620
כל הקטגוריות
ניוזלטר