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 -> اليديشية
خلفية
MP4 هو تنسيق الفيديو الشائع لدينا ، وغالبًا عندما نقوم بتشغيل مقاطع فيديو الخادم ، يكون مصدر الفيديو MP4 المطلوب مباشرة. لكن في الحقيقة ، هذا ليس جيدًا. ملف الرأس MP4 [ftyp + moov] كبير ، والتشغيل الأولي يحتاج إلى تنزيل ملف الرأس الكامل وتحليله ، ثم تنزيل طول معين من مقطع الفيديو القابل للتشغيل. بالإضافة إلى ذلك ، كلما زاد حجم الفيديو ، سيستمر ملف الرأس في النمو ، وسيصبح وقت التشغيل الأولي أطول. في ضوء هذا الموقف ، هناك حاجة إلى طريقة يمكنها تسريع التحليل الأولي للفيديو. HLS هو الحل الذي اقترحته شركة Apple لحل هذه المشكلة.
HLS
HLS هو اختصار لـ HTTP Live Streaming. إنه بروتوكول نقل شبكة وسائط متدفقة يعتمد على HTTP تقترحه شركة Apple. يمكن أن يدعم البث المباشر وعند الطلب في نفس الوقت ، بالإضافة إلى المسار المزدوج متعدد الوضوح والصوت والفيديو والترجمة والوظائف الأخرى. مبدأها هو تقسيم مقطع فيديو كامل إلى عدة مقاطع فيديو صغيرة ، ويتم تشكيل التشغيل الكامل عن طريق تقسيم هذه المقاطع.
يستخدم HLS على نطاق واسع في المطاريف المتنقلة. يشمل العملاء الحاليون الذين يدعمون بروتوكول HLS:
iOS 3.0 وما فوق ، يدعم AVPlayer أصلاً HLS
الروبوت 3.0 وفوق
Adobe Flash Player 11.0 وما فوق
مبدأها العام هو:
1. جمع الصوت والفيديو
2. تشفير الصوت والفيديو على الخادم
3. بعد التشفير ، قم بتسليمه إلى Stream Segmenter في شكل تدفق نقل MPEG-2
4. تنشئ أداة التقطيع ملف فهرس وقائمة تشغيل ts ، ويستخدم ملف الفهرس للإشارة إلى موضع الصوت والفيديو ، و ts عبارة عن مقطع وسائط متعددة حقيقي
5. ضع موارد الخطوة السابقة على خادم HTTP
6. يطلب العميل ملف الفهرس للتشغيل ، ويمكن العثور على محتوى التشغيل من خلال ملف الفهرس
M3U8
الخطوة الرئيسية لتحقيق HLS هي الخطوة الرابعة أعلاه ، وهي تنظيم ملفات الفهرس وقوائم التشغيل ts. يتم استخدام تنسيق M3U8 هنا. M3U8 هو إصدار Unicode من M3U ، 8 يعني استخدام ترميز UTF-8 ، وكلاهما M3U و M3U8 هما تنسيقات ملفات لقوائم الوسائط المتعددة.
وصف تنسيق M3U8
في بعض الأحيان قد نحتاج إلى تعديل محتوى ملف M3U8 يدويًا للاختبار أو في بعض الحالات الخاصة ، لذلك نحتاج إلى فهم معين لتنسيقه. يتم كتابة تعريف هذا التنسيق في مستند RFC 8216. فيما يلي بعض الملاحظات:
يجب ترميز ملفات M3U8 بترتيب UTF-8 ، ولا يمكن استخدام ترتيب بايت حسب ترتيب البايت (BOM) ، ولا يمكن أن تحتوي على أحرف تحكم utf-8 (U + 0000 ~ U_001F و U + 007F ~ u + 009F)
كل سطر من محتوى ملف M3U8 هو إما سطر فارغ أو URI أو سلسلة تبدأ بـ # ولا يمكن أن تظهر أي أحرف فارغة.
العلامات المضمنة كلها سلاسل تبدأ بـ #EXT وهي حساسة لحالة الأحرف.
URI هو مسار المحتوى ، والذي يمكن أن يكون مسارًا نسبيًا أو مسارًا مطلقًا
ملف قائمة M3U8 الرئيسي
يتم استخدام ملف فهرس M3U8 الرئيسي بشكل عام لتحديد مصادر فهرس متعددة. لنحلل أولاً محتوى ملف m3u8 الرئيسي hls_vod_mvp.m3u8 ، رأسه هكذا
تنسيق الرأس
#EXTM3U
# EXT-X-VERSION: 7
# EXT-X-INDEPENDENT-SEGMENTS # كود نسخ
يشير # EXTM3U إلى أن الملف بتنسيق M3U ، ويجب أن تضع جميع ملفات تنسيق M3U المحتوى في السطر الأول.
# EXT-X-VERSIOn يشير إلى الإصدار المتوافق لقائمة التشغيل ، وهو حاليًا 7.
# EXT-X-INDEPENDENT-SEGMENTS تشير هذه العلامة إلى أنه يمكن فك تشفير جميع عينات الوسائط في مقطع وسائط بشكل مستقل دون الاعتماد على معلومات قطاع الوسائط الأخرى.
تنسيق الترجمة
المحتوى أدناه هو بعض التسميات التوضيحية ، ومحتوى التسميات التوضيحية ليست ضرورية.
# EXT-X-MEDIA: TYPE = SUBTITLES، GROUP-ID = "subs"، NAME = "English"، DEFAULT = YES، AUTOSELECT = YES، FORCED = NO، LANGUAGE = "eng"، URI = "subtitles / eng / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES، GROUP-ID = "subsC"، NAME = "English"، DEFAULT = YES، AUTOSELECT = YES، FORCED = NO، LANGUAGE = "eng"، URI = "subtitles / engc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES، GROUP-ID = "subs"، NAME = "Japanese"، DEFAULT = YES، AUTOSELECT = YES، FORCED = NO، LANGUAGE = "jpn"، URI = "ترجمات / jpn / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES، GROUP-ID = "subsC"، NAME = "Japanese"، DEFAULT = YES، AUTOSELECT = YES، FORCED = NO، LANGUAGE = "jpn"، URI = "subtitles / jpnc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES، GROUP-ID = "subs"، NAME = "Chinese"، DEFAULT = YES، AUTOSELECT = YES، FORCED = NO، LANGUAGE = "zho"، URI = "ترجمات / zho / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES، GROUP-ID = "subsC"، NAME = "Chinese"، DEFAULT = YES، AUTOSELECT = YES، FORCED = NO، LANGUAGE = "zho"، URI = "ترجمات / zhoc / prog_index.m3u8 "نسخ الكود
# يتم استخدام EXT-X-MEDIA لتحديد موارد قائمة الوسائط المتعددة اللغات لنفس المحتوى.
TYPE هو نوع المورد والمحتويات الاختيارية هي: AUDIO و VIDEO و SUBTITLES و CLOSED-CAPTIONS.
يحدد المحتوى أعلاه TYPE = SUBTITLES ، وهو نوع الترجمة.
GROUP-ID هي المجموعة التي تنتمي إليها الترجمة متعددة اللغات وهي معلمة مطلوبة
NAME هي معلومات الوصف المقروءة لتيار الترجمة ، وهذه القيمة تتوافق مع اسم العرض لـ AVMediaSelectionOption.
الافتراضي ، التحديد التلقائي ، الإجباري هي ثلاث قيم BOOL تقابل ما إذا كان تدفق الترجمة محددًا بشكل افتراضي إذا كانت المعلومات الضرورية مفقودة. يتم تشغيل دفق التشغيل عندما لا يعرض المستخدم الإعدادات. FORCED صالح فقط لنوع الترجمة ويستخدم لتمييز الاختيار التلقائي الحالي لتيار الترجمة. .
يتم استخدام LANGUAGE لتحديد نوع اللغة ، والذي تم تعيينه وفقًا لـ [رمز لغة ISO 639] (https://www.w3.org/WAI/ER/WD-AERT/iso639.htm معيار "رمز اللغة ISO 639"). عندما يقوم مشغل النظام الافتراضي بتحديد الترجمات ، يتم تعيين اسم قائمة الترجمة المعروضة وفقًا لهذه القيمة.
URI هو معلومات الموقع للمورد ، حيث يتوافق مع ملف M3U8 مترجم. العنوان الفرعي / eng / prog_index.m3u8 هو مسار نسبي ،
من خلال المعلومات الواردة أعلاه ، يمكننا تحليل معنى المحتوى أعلاه على النحو التالي: يدعم الفيديو الحالي ثلاثة ترجمات: الإنجليزية واليابانية والصينية. لكن لكل لغة رسالتان EXT-X-MEDIA. الفرق بينهما هو التجميع ، أحدهما مجمّع في مجموعة فرعية والآخر مجمّع في المجموعة الفرعية C. لماذا توجد مجموعتان؟ سأتحدث عن هذا لاحقًا.
شكل شريط فيديو
ابحث مرة أخرى عن فهرس محتوى الفيديو:
#EXT-X-STREAM-INF:BANDWIDTH=827299,AVERAGE-BANDWIDTH=747464,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970,AUDIO="program_audio",SUBTITLES=" subs"
0640 / 0640.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=360849,AVERAGE-BANDWIDTH=320932,CODECS="avc1.64001f",RESOLUTION=640x360,URI="0640/0640_I-Frame.m3u8"Copy code
EXT-X-STREAM-INF: تحدد هذه السمة مصدر النسخ الاحتياطي ، أي مسار تشغيل الفيديو وبعض معلومات الفيديو. ما يلي هو تكوين المحتوى المقابل: BANDWIDTH هو ذروة معدل البت ، 827299 هو 827299bit / s ، وهو أعلى وقت ذروة يستهلك 101KB من الحركة في الثانية.
AVERAGE-BANDWIDTH هو متوسط معدل البت ، 747464
ترميز CODECS هو معلومات ترميز ، avc1.64001f ، mp4a.40.2 ، يمثل avc تنسيق ترميز h264 ، 64001f التالي هو معامل الترميز الذي يمثله سداسي عشري ، 64 ، 00 ، 1f يمثل على التوالي ثلاث قيم معلمات مختلفة. mp4a هو تنسيق تشفير صوتي ، ويمثل 40.2 التالي معلمات تشفير الصوت.
الدقة هي دقة الفيديو. دقة مصدر الفيديو الحالية هي 640x360.
معدل الإطار هو الحد الأقصى لمعدل الإطارات ، 29.970 يمثل الحد الأقصى لمعدل الإطارات للتشغيل الحالي وهو 29.970 إطارًا في الثانية.
AUDIO هي مجموعة الصوت ، و program_audio هو اسم مجموعة الصوت المقابلة.
يشير SUBTITLES إلى مجموعة الترجمة المقابلة ، بينما يشير Subs إلى اسم مجموعة الترجمة المقابلة. معلومات الترجمة أعلاه لها معرّف المجموعة ، وهذه القيمة تتوافق معها.
URI هو مسار المحتوى ، 0640 / 0640.m3u8 يتوافق مع مسار ملف m3u8 لمصدر الفيديو. يمكن رؤية ذلك في معلومات التقاط الحزمة.
يوجد أدناه EXT-X-STREAM-INF هو EXT-XI-FRAME-STREAM-INF ، والذي يمثل الإطار I (الإطار الرئيسي) لمورد الوسائط المتعددة الموجود في ملف قائمة التشغيل. نظرًا لأن الإطار I هو مجرد صورة ، فهو لا يحتوي على محتوى صوتي ، وتتوافق المعلمات المتبقية مع تنسيق محتوى الفيديو.
بعد ذلك ، هناك مصادر فيديو تتوافق مع درجات دقة مختلفة ، 1920 × 1080 ، 1280 × 720 ، 960 × 540 ، 480 × 270. نظرًا لأن HLS سيقوم تلقائيًا بتبديل الدقة وفقًا لحالة الشبكة ، يتم إعداد قرارات متعددة بشكل عام للاختيار. وفقًا لتحليل البيانات الملتقطة ، فإن المقطع الأول الذي يتم تشغيله هو 640 دقة ، والثاني إلى 8 مقاطع بعد ذلك بدقة 480 ، ثم يتم تحويله إلى دقة 640.
شكل الصوت
النظر لأسفل هو فهرس الصوت المقابل
# EXT-X-MEDIA: TYPE = AUDIO، GROUP-ID = "program_audio"، LANGUAGE = "eng"، NAME = "Alternate Audio"، AUTOSELECT = YES، DEFAULT = YES، URI = "audio1 / audio1.m3u8" نسخ الشفرة
ظهرت # EXT-X-MEDIA أعلاه ، لكنها لم تذكر قائمة لغات متعددة.
TYPE = AUDIO ، هذه المرة النوع صوتي.
GROUP-ID هو معرف المجموعة ، المطابق لمحتوى الصوت في EXT-X-STREAM-INF.
URI = audio1 / audio1.m3u8 يتوافق مع مسار الصوت.
مصادر بديلة لتنسيقات ترميز مختلفة
في ملف M3U8 الرئيسي ، يمكننا أيضًا رؤية مصدر فيديو بدقة 640 ، والذي يختلف عن دقة 640 أعلاه. محتواه مثل هذا:
#EXT-X-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,VIDEO-RANGE=SDR,CODECS="hvc1.2.4.H150.B0,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970 ,AUDIO="program_audio_0",SUBTITLES="subsC"
0640c / prog_index.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,CODECS="hvc1.2.4.H150.B0",RESOLUTION=640x360,URI="0640c/iframe_index.m3u8"
# EXT-X-MEDIA: TYPE = AUDIO، GROUP-ID = "program_audio_0"، LANGUAGE = "eng"، NAME = "Alternate Audio"، AUTOSELECT = YES، DEFAULT = YES، URI = "audioc / prog_index.m3u8" نسخ الشفرة
تنسيق ترميز CODECS هو hvc1.2.4.H150.B0 ، mp4a.40.2 ، تنسيق ترميز الصوت لم يتغير ، لكن تنسيق ترميز الفيديو قد تغير. hvc1 هو أحد تنسيقات ترميز HEVC (H265). إنه تنسيق ترميز فيديو من الجيل الجديد أطلقته Apple. بسبب مشاكل التوافق ، لا يستطيع العديد من العملاء تحليل هذا التنسيق ، لذلك فهو غير شائع جدًا. تظهر مصادر الفيديو بهذا التنسيق. يجب أن يكون نسخة احتياطية هنا. بمقارنة اثنين من المحتويات بنفس الدقة ، يمكن العثور على أن معدل البت لتنسيق hvc1 أعلى من تنسيق avc1 ، مما يوضح أن محتوى hvc1 أكبر وأن نسبة ضغط avc1 أعلى تحت نفس الدقة.
بالتوافق مع مصدر الفيديو بتنسيق hvc1 ، تم أيضًا تغيير تجميع محتوى الترجمة وتجميع محتوى الصوت ، وهذا هو السبب في أن الترجمات المصاحبة أعلاه تحتوي على نسختين من نفس اللغة ، وتتوافق مع مصادر الفيديو بتنسيقات avc1 و hvc1.
هذه هي القائمة الرئيسية لـ M3U8. تتم معالجة الصوت والفيديو لهذا المحتوى بشكل منفصل ، ولكن يمكن أيضًا دمجهما.
ملف M3u8 يحتوي على معلومات وسائط
خذ الملف 0640.m3u8 كمثال
#EXTM3U
# EXT-X-VERSION: 4
# EXT-X-TARGETDURATION: 7
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-PLAYLIST-TYPE: VOD
#EXTINF: 6.006 ،
0640_00001.ts
#EXTINF: 6.006 ،
0640_00002.ts
#EXTINF: 6.006 ،
0640_00003.ts
....
# EXT-X-ENDLIST كود النسخ
# EXTM3U و # EXT-X-VERSION هما رأس ملف M3U ورقم الإصدار المتوافق على التوالي. هذا التنسيق هو إصدار قديم لذا فإن رقم الإصدار أقل من الملف الرئيسي.
تمثل EXT-X-TARGETDURATION أقصى مدة لكل مقطع تشغيل ، 7 تمثل 7 ثوانٍ ، ولا يمكن أن تتجاوز المقاطع في هذا الدليل 7 ثوانٍ.
يمثل EXT-X-MEDIA-SEQUENCE رقم التسلسل للمقطع الأول من قائمة التشغيل ، ويمثل 1 أن مقطع التشغيل يبدأ من 1.
#EXTINF يمثل مدة المقطع ، 6.006 تعني أن المقطع الحالي هو 6.006 ثانية. يتم الحصول على معلومات مدة الفيديو الإجمالية من خلال تجميع هذه القيمة.
0640_00001.ts هو المسار النسبي للقصاصة. يمثل ملف ts جزءًا من الفيديو أو الصوت ، ويمكن أن يكون بتنسيق ts و mp4 و aac وتنسيقات أخرى. لأنه تم تحديده لفتحه من 1
|
أدخل البريد الإلكتروني للحصول على مفاجأة
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 مبنى رقم 273 Huanpu Road قوانغتشو الصين 510620
الفئات
بريدك الإلكتروني