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 -> יידיש
HLS ו- Http Live Streaming הם פרוטוקולים לשידור בזמן אמת שהוגדרו על ידי Apple. HLS מיושם על בסיס פרוטוקול HTTP. תוכן השידור כולל שני חלקים, האחד הוא קובץ התיאור M3U8, והשני הוא קובץ המדיה TS.
1. קובץ M3U8
קובץ המדיה מתואר בטקסט המורכב מסדרת תגים.
#EXTM3U
# EXT-X- יעד: 5
# EXTINF: 5,
./0.ts
# EXTINF: 5,
./1.ts
# EXTM3U: השורה הראשונה של כל קובץ M3U8 חייבת להיות תג זה.
# EXT-X-TARGETDURATION: ציין את אורך הזמן המקסימלי של קטע המדיה (שניות). אורך הזמן שצוין ב- # EXTINF חייב להיות קטן או שווה לערך מקסימלי זה. ערך זה יכול להופיע רק פעם אחת.
# EXTINF: תאר את אורכו של קובץ מדיה יחיד. קבצי מדיה עוקבים אחריהם, כגון ./0.ts
2. קובץ ts
קובץ ts הוא קובץ זרם תחבורה, פורמט קידוד הוידאו הראשי הוא h264 / mpeg4 והשמע הוא acc / MP3.
קובץ ts מחולק לשלוש שכבות: שכבת ts זרם תחבורה, שכבת pes Packet Elemental Stream, es layer Elementary Stream. שכבת es היא נתוני השמע והווידאו, ושכבת ה- pes היא מידע על תיאור מסגרת הנתונים כגון חותמת זמן שנוספה לנתוני השמע והווידאו. שכבת ts היא להוסיף את המידע הדרוש לזיהוי והעברת זרם הנתונים בשכבת pes
הערה: הפרטים הם כדלקמן
(1) שכבת ts גודל החבילה ts נקבע על 188 בתים, ושכבת ts מחולקת לשלושה חלקים: כותרת ts, שדה הסתגלות ומטען. כותרת ts קבועה ל -4 בתים; ייתכן ששדה ההתאמה קיים או לא, ותפקידו העיקרי הוא למלא נתונים פחות מ 188 בתים; המטען הוא נתוני pes.
כותרת ts
sync_byte 8b סנכרון בתים, קבוע 0x47
transport_error_indicator 1b מחוון שגיאת תחבורה, המציין כי קיים בתים חסרי תועלת לאחר שדה ההסתגלות של כותרת ts, בדרך כלל 0, בית זה נספר לאורך שדה ההסתגלות
payload_unit_start_indicator 1b מחוון התחלת טעינת יחידת, המסומן כ- 1 בתחילת חבילת נתונים מלאה
transport_priority 1b עדיפות תחבורה, 0 עדיפות נמוכה, 1 עדיפות גבוהה, בדרך כלל 0
ערך pid 13b pid
transport_scrambling_control 2b בקרת הטרפה של התחבורה, 00 פירושה לא מוצפן
adaptation_field_control 2b אם לכלול את שדה ההסתגלות, '00' שמור; '01' פירושו שאין שדה הסתגלות, אלא רק המטען; '10' פירושו רק שדה ההסתגלות, ללא מטען; '11' פירושו שההתאמה כלולה גם דומיין ומטען.
continuity_counter 4b הגדלת המונה, מ- 0-f, ערך ההתחלה לא בהכרח לוקח 0, אך עליו להיות רציף
התוכן של שכבת ts מזוהה על ידי ערך ה- PID, והתוכן העיקרי כולל: טבלת PAT, טבלת PMT, זרם שמע וזרם וידאו. כדי לנתח את זרם ts, תחילה עליך למצוא את טבלת ה- PAT, כל עוד אתה מוצא את ה- PAT, אתה יכול למצוא את ה- PMT ואז תוכל למצוא את זרמי האודיו והווידאו. ערך ה- PID של טבלת ה- PAT נקבע על 0. יש להכניס את טבלת ה- PAT ואת טבלת ה- PMT לזרם ts באופן קבוע, מכיוון שהמשתמש עשוי להצטרף לזרם ts בכל עת, מרווח זה הוא קטן יחסית, בדרך כלל כל כמה מסגרות וידאו להוספת PAT ו- PMT. יש צורך בטבלאות PAT ו- PMT וניתן להוסיף טבלאות אחרות כמו SDT (טבלת תיאור השירות), אך ניתן להפעיל את הזרם hls כל עוד יש PAT ו- PMT.
טבלת PAT: תפקידה העיקרי הוא ציון ערך ה- PID של טבלת ה- PMT.
טבלת PMT: תפקידה העיקרי הוא לציין את ערך ה- PID של זרם האודיו והווידאו.
זרם שמע / זרם וידאו: נשא תוכן שמע ווידאו.
הסתגלות
adaptation_field_length אורך שדה הסתגלות 1B, מספר הבתים מאחור
דגל 1B לוקח 0x50 כדי לציין PCR או 0x40 כדי לא לכלול PCR
PCR 5B הפניה לשעון התוכנית, הפניה לשעון התוכנית, המשמשת לשחזור שעון תזמון המערכת STC (שעון זמן המערכת) התואם את המקודד.
stuffing_bytes xB stuffing bytes, הערך הוא 0xff
אורכו של אזור ההסתגלות יכלול בתים אחד שזוהה על ידי מחוון שגיאת השידור. pcr הוא הפניה לשעון התוכנית, pcr, dts, pts הם כל הערכים המדוגמים של אותו שעון מערכת, pcr הוא מצטבר, כך שניתן להגדיר אותו כערך dts, נתוני שמע אינם זקוקים ל- pcr. אם אין שדה, ipad יכול לשחק, אך vlc לא יכול לשחק. בעת אריזת זרם ts, לטבלאות PAT ו- PMT אין שדה הסתגלות. אם האורך אינו מספיק, פשוט מלא 0xff. גם זרם הווידיאו וגם זרם השמע צריכים להוסיף שדה הסתגלות, שבדרך כלל מתווסף לחבילה הראשונה של ts והחבילה האחרונה של המסגרת, וחבילת ts האמצעית לא מתווספת.
פורמט PAT
table_id טבלת PAT 8b קבועה ל- 0x00
מדד_סינסטקס_אינדיקטור 1b נקבע על 1
אפס 1b קבוע ל- 0
שמור 2b קבוע ל 11
section_length 12b אורך הנתונים הבאים
transport_stream_id 16b מזהה זרם תחבורה, קבוע כ- 0x0001
שמור 2b קבוע ל 11
version_number 5b מספר גרסה, קבוע 00000, אם PAT ישתנה, מספר הגרסה יגדל ב -1
אינדיקטור 1_ הנוכחי_קבוע קבוע ל- 1, המציין שניתן להשתמש בטבלת PAT זו, אם היא 0, המתן לטבלת PAT הבאה
קטע_מספר 8b קבוע ל- 0x00
האחרון_סעיף_מספר 8b קבוע ל- 0x00
התחל לולאה
program_number 16b כאשר מספר התוכנית הוא 0x0000, זה אומר שזה NIT, כאשר מספר התוכנית הוא 0x0001, זה אומר שזה PMT
שמור 3b קבוע ל 111
ערך PID 13b PID המתאים לתוכן מספר התוכנית
לולאת סיום
CRC32 32b קוד בדיקת CRC32 של הנתונים הקודמים
פורמט PMT
לשולחן table_id 8b PMT יש ערך כלשהו, 0x02
מדד_סינסטקס_אינדיקטור 1b נקבע על 1
אפס 1b קבוע ל- 0
שמור 2b קבוע ל 11
section_length 12b אורך הנתונים הבאים
תוכנית_מספר 16b ערוץ, כלומר הערוץ המשויך ל- PMT הנוכחי, הערך הוא 0x0001
שמור 2b קבוע ל 11
version_number 5b מספר גרסה, קבוע 00000, אם PAT ישתנה, מספר הגרסה יגדל ב -1
אינדיקטור הנוכחי_קוד 1b קבוע ל- 1
קטע_מספר 8b קבוע ל- 0x00
האחרון_סעיף_מספר 8b קבוע ל- 0x00
שמור 3b קבוע ל 111
PCR_PID 13b ה- PID של חבילת TS בה נמצא ה- PCR (שעון התייחסות לתכנית), המוגדר כ- Video PID
שמור 4b קבוע ל 1111
program_info_length 12b מידע על תיאור התוכנית, שמוגדר כ- 0x000 פירושו לא
התחל לולאה
stream_type 8b סוג הזרם, סימן הוא וידאו או שמע או נתונים אחרים, קידוד h.264 תואם 0x1b, קידוד aac תואם 0x0f, קידוד mp3 תואם 0x03
שמור 3b קבוע ל 111
elementary_PID 13b PID המתאים ל stream_type
שמור 4b קבוע ל 1111
ES_info_length 12b מידע על תיאור, שמוגדר כ- 0x000 פירושו לא
לולאת סיום
CRC32 32b קוד בדיקת CRC32 של הנתונים הקודמים
(2) שכבת pes
שכבת ה- pes מוסיפה חותמת זמן ומידע אחר לכל מסגרת וידאו / שמע. חבילת pes מכילה הרבה תוכן, ואנחנו משאירים רק את הנפוצים ביותר.
קוד התחלה של pes קוד התחלה 3B, קבוע ב- 0x000001
ערך מזהה זרם 1B שמע (0xc0-0xdf), בדרך כלל 0xc0
ערך וידאו (0xe0-0xef), בדרך כלל 0xe0
אורך מנות pes 2B אורך נתוני ה- pes מאחור, 0 פירושו אורך בלתי מוגבל,
אורך נתוני הווידאו בלבד יעלה על 0xffff
דגל 1B בדרך כלל לוקח את הערך 0x80, כלומר הנתונים אינם מוצפנים, אין להם עדיפות ומגובים נתונים
סימון 1B ערך 0x80 פירושו רק נק ', ערך 0xc0 פירושו נק' ו נק '
אורך הנתונים pes 1B אורך הנתונים הבאים, הערך הוא 5 או 10
נק '5B ערך 33bit
ערך dts 5B 33bit
pts הוא חותמת הזמן לתצוגה ו- dts הוא חותמת הזמן לפענוח. שני חותמות הזמן נדרשות לנתוני וידאו. הנקודות והנקודות של נתוני שמע זהות, ולכן יש צורך רק בנקודות. ישנם שני חותמות זמן, נקודות ונקודות, אשר נגרמות על ידי מסגרות B. הנקודות של מסגרות I ו- P שוות ל- DTS. אם לסרטון אין מסגרות B, הנקודות תמיד יהיו זהות ל- dts. קרא את מסגרות הווידיאו ברצף מהקובץ, ורצף המסגרות שחולצו זהה לרצף ה- dts. אלגוריתם ה- dts פשוט יחסית, הערך ההתחלתי + התוספת מספיקים, חישוב ה- pts מסובך יותר ויש להוסיף את ה- offset ל- dts.
יש רק נקודות ב pes האודיו (זהה ל- dts), למסגרות ה- I ו- P של הווידאו חייבות להיות שני חותמות הזמן, ומסגרת הווידאו B צריכה רק נקודות (זהה ל- dts). כדי לארוז נקודות ונקודות, עליך לדעת את סוג מסגרת הווידאו, אך איננו יכולים לשפוט את סוג המסגרת לפי פורמט המיכל. עליך לנתח את תוכן h.264 כדי לקבל את סוג המסגרת.
לדוגמה:
IPBBBP
סדר קריאה: 1 2 3 4 5 6
סדר dts: 1 2 3 4 5 6
הזמנת נק ': 1 5 3 2 4 6
אלגוריתם וידאו dts לפי דרישה:
dts = ערך התחלתי + 90000 / video_frame_rate, ניתן לציין את הערך ההתחלתי באופן שרירותי, אך עדיף לא לקחת 0, video_frame_rate הוא קצב הפריימים, כגון 23, 30.
נקודות ו- dts מבוססות על סולם זמנים, 1 s = 90000 סולם זמן, מסגרת אחת צריכה להיות 90000 / video_frame_rate timescale.
ניתן להמיר את חלוקת לוח הזמנים של פריים אחד בתדירות הדגימה למשך ההפעלה של פריים אחד
אלגוריתם dts שמע לפי דרישה:
dts = ערך התחלתי + (90000 * audio_samples_per_frame) / audio_sample_rate, הערך של audio_samples_per_frame קשור לקודק, ערך aac הוא 1024, ערך mp3 הוא 1158, audio_sample_rate הוא קצב הדגימה, כגון 24000, 41000. AAC מפענח מסגרת של 1024 דוגמאות לערוץ, כלומר משך המסגרת הוא 1024 / sample_rate שניות. אז חותמת הזמן של כל פריים היא 0, 1024 / sample_rate, ..., 1024 * n / sample_rate seconds.
ה- dts ו- pts של הסרטון החי צריכים להשתמש ישירות בזמן בזרם הנתונים החי, ואינם צריכים להיות מחושבים על ידי נוסחאות.
(3) שכבת es
שכבת es מתייחסת לנתוני שמע ווידאו, אנו מציגים רק h.264 וידאו ושמע aac.
וידאו h.264:
כדי לארוז את נתוני h.264, עלינו להוסיף nalu (יחידת שכבת הפשטה ברשת) לנתוני הווידאו. ה- nalu כולל את כותרת ה- nalu ואת סוג ה- nalu. כותרת ה- nalu קבועה ל- 0x00000001 (תחילת המסגרת) או ל- 0x000001 (במסגרת). הנתונים של h.264 מורכבים מפרוסות, ותוכן הפרוסות כולל: וידאו, sps, pps וכו '. סוג nalu קובע את התוכן של נתוני h.264 הבאים.
F 1b אסור_אפס_ביט, h.264 קובע שהוא חייב להיות 0
NRI 2b nal_ref_idc, ערך 0 ~ 3, מציין את החשיבות של nalu זה, I frame, sps, pps בדרך כלל לוקח 3, P פריים לוקח בדרך כלל 2, ו- B פריים בדרך כלל לוקח 0
סוג 5b עיין בטבלה למטה
תיאור nal_unit_type
0 לא בשימוש
1 תמונה שאינה IDR, IDR מתייחס למסגרת המפתח
מחיצת 2 פרוסות א
מחיצת 3 פרוסות B
|
הזן דוא"ל כדי לקבל הפתעה
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
כל הקטגוריות
ניוזלטר