FMUSER بی سیم ویدئو و صدا را راحت تر انتقال می دهد!
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 پروتکل هایی برای جریان در زمان واقعی هستند که توسط اپل تعریف شده اند. HLS بر اساس پروتکل HTTP پیاده سازی می شود. محتوای انتقال شامل دو قسمت است ، یکی پرونده توضیحات M3U8 و دیگری پرونده رسانه TS است.
1. فایل M3U8
پرونده رسانه به صورت متنی توصیف شده است که از مجموعه ای از برچسب ها تشکیل شده است.
#EXTM3U
# EXT-X-TARGETDURATION: 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 به سه لایه تقسیم می شود: لایه انتقال جریان ، لایه انتقال جریان مقدماتی بسته ، جریان ابتدایی لایه. لایه 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" به معنای سازگاری نیز شامل دامنه و محموله است.
Continity_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 طول زمینه سازگاری ، تعداد بایت پشت سر
flag 1B 0x50 طول می کشد تا PCR را نشان دهد یا 0x40 را شامل نمی کند PCR
PCR 5B Program Clock Reference ، مرجع ساعت برنامه ، برای بازیابی ساعت زمان بندی سیستم STC (System Time Clock) سازگار با رمزگذار استفاده می شود.
stuffing_bytes xB بایت چاشنی ، مقدار 0xff است
طول منطقه سازگاری باید شامل یک بایت باشد که توسط نشانگر خطای انتقال مشخص شده است. pcr مرجع ساعت برنامه است ، pcr ، dts ، pts همه مقادیر نمونه یک ساعت سیستم هستند ، pcr افزایشی است ، بنابراین می توان آن را به عنوان مقدار dts تنظیم کرد ، داده های صوتی نیازی به pcr ندارند. اگر زمینه ای نباشد ، ipad می تواند بازی کند ، اما vlc نمی تواند بازی کند. هنگام بسته بندی جریان ts ، جداول PAT و PMT زمینه سازگاری ندارند. اگر طول کافی نیست ، فقط 0xff را پر کنید. جریان ویدئو و جریان صوتی باید فیلد سازگاری را اضافه کنند ، که معمولاً به اولین بسته ts و آخرین بسته ts یک قاب اضافه می شود و بسته ts متوسط اضافه نمی شود.
قالب PAT
table_id 8b جدول PAT روی 0x00 ثابت است
section_syntax_indicator 1b در 1 ثابت شده است
صفر 1b در 0 ثابت می شود
2b رزرو شده به 11 ثابت می شود
section_length 12b طول داده های زیر
transport_stream_id 16b شناسه جریان حمل و نقل ، ثابت شده 0x0001
2b رزرو شده به 11 ثابت می شود
version_number 5b شماره نسخه ، ثابت در 00000 ، اگر PAT تغییر کند ، شماره نسخه 1 افزایش می یابد
current_next_indicator 1b به 1 ثابت شده است ، نشان می دهد که می توان از این جدول PAT استفاده کرد ، اگر 0 باشد ، منتظر جدول PAT بعدی باشید
section_number 8b به 0x00 ثابت شده است
last_section_number 8b تا 0x00 ثابت شده است
حلقه شروع
program_number 16b هنگامی که شماره برنامه 0x0000 باشد ، این بدان معنی است که این NIT است ، هنگامی که شماره برنامه 0x0001 باشد ، این بدان معنی است که PMT است
3b رزرو شده به 111 ثابت می شود
PID 13b مقدار PID مربوط به محتوای شماره برنامه است
حلقه پایان
CRC32 32b CRC32 کد داده های قبلی را بررسی کنید
قالب PMT
table_id جدول 8b PMT دارای هر مقدار ، 0x02 است
section_syntax_indicator 1b در 1 ثابت شده است
صفر 1b در 0 ثابت می شود
2b رزرو شده به 11 ثابت می شود
section_length 12b طول داده های زیر
تعداد کانال program_number 16b ، به معنی کانال مرتبط با PMT فعلی ، مقدار 0x0001 است
2b رزرو شده به 11 ثابت می شود
version_number 5b شماره نسخه ، ثابت در 00000 ، اگر PAT تغییر کند ، شماره نسخه 1 افزایش می یابد
current_next_indicator 1b در 1 ثابت شده است
section_number 8b به 0x00 ثابت شده است
last_section_number 8b تا 0x00 ثابت شده است
3b رزرو شده به 111 ثابت می شود
PCR_PID 13b PID بسته TS که در آن PCR (ساعت مرجع برنامه) واقع شده است ، به عنوان 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 start code 3B code start ، ثابت در 0x000001
مقدار جریان صوتی id 1B (0xc0-0xdf) ، معمولاً 0xc0
مقدار فیلم (0xe0-0xef) ، معمولاً 0xe0
طول بسته pes 2B طول داده pes پشت سر ، 0 به معنای طول نامحدود است ،
فقط طول داده های ویدیو از 0xffff بیشتر خواهد شد
پرچم 1B معمولاً مقدار 0x80 را می گیرد ، به این معنی که داده ها رمزگذاری نشده اند ، هیچ اولویتی ندارند و از اطلاعات پشتیبان تهیه می شوند
مقدار Flag 1B 0x80 به معنای فقط pts است ، مقدار 0xc0 به معنای pts و dts است
طول داده pes 1B طول داده های زیر ، مقدار 5 یا 10 است
pts 5B 33bit مقدار
مقدار dts 5B 33bit
pts مهر زمان نمایش و dts زمان رمز گشایی است. برای داده های ویدئویی هر دو مهر زمان لازم است. pts و dts داده های صوتی یکسان هستند ، بنابراین فقط pts مورد نیاز است. دو مهر زمان وجود دارد ، pts و dts ، که توسط فریم های B ایجاد می شوند. pts فریم های I و P برابر dts هستند. اگر ویدئویی فاقد فریم B باشد ، امتیازها همیشه با dts یکسان هستند. فریم های ویدئویی را به ترتیب از پرونده بخوانید و توالی فریم های استخراج شده همان توالی dts است. الگوریتم dts نسبتاً ساده است ، مقدار اولیه + افزایش کافی است ، محاسبه pts پیچیده تر است و نیاز به جبران به dts است.
در pes صوتی فقط pts وجود دارد (همان dts) ، فریم های I و P فیلم باید دارای هر دو مهر زمان باشند و فریم B فیلم فقط به pts (همان dts) نیاز دارد. برای بسته بندی pts و dts ، باید نوع قاب فیلم را بدانید ، اما ما نمی توانیم نوع فریم را از طریق قالب ظرف قضاوت کنیم. برای بدست آوردن نوع قاب باید محتوای h.264 را تجزیه کنید.
برای مثال:
IPBBBP
ترتیب خواندن: 1 2 3 4 5 6
ترتیب dts: 1 2 3 4 5 6
سفارش pts: 1 5 3 2 4 6
الگوریتم ویدیوی درخواستی الگوریتم:
dts = مقدار اولیه + 90000 / video_frame_rate ، مقدار اولیه را می توان خودسرانه تعیین کرد ، اما بهتر است 0 را نگیرید ، video_frame_rate نرخ فریم است ، مانند 23 ، 30.
pts و dts براساس مقیاس زمانی ، مقیاس زمانی 1s = 90000 ، یک فریم باید 90000 / video_frame_rate زمان بندی باشد.
تقسیم زمان بندی یک فریم بر اساس فرکانس نمونه برداری می تواند به مدت زمان پخش یک فریم تبدیل شود
الگوریتم dts صوتی درخواستی:
dts = مقدار اولیه + (90000 * نمونه های صوتی_برای فریم) / audio_sample_rate ، مقدار audio_samples_per_frame مربوط به کدک است ، مقدار aac 1024 ، mp3 mp1158 24000 ، audio_sample_rate نرخ نمونه برداری است ، مانند 41000 ، 1024. AAC رمز یک فریم از 1024 نمونه در هر کانال ، به این معنی که مدت زمان یک فریم 0 / نمونه_ میزان ثانیه است. بنابراین برچسب زمانی هر فریم 1024 ، 1024 / نمونه_سطح ، ... ، XNUMX * n / نمونه_سطح ثانیه است.
dts و pts ویدیوی زنده باید مستقیماً از زمان موجود در جریان داده های مستقیم استفاده کند و نباید با فرمول محاسبه شود.
(3) لایه es
لایه es به داده های صوتی و تصویری اشاره دارد ، ما فقط فیلم h.264 و aac audio را معرفی می کنیم.
فیلم h.264:
برای بسته بندی داده های h.264 ، باید یک nalu (واحد لایه انتزاع شبکه) به داده های ویدیو اضافه کنیم. nalu شامل سربرگ nalu و نوع nalu است. هدر nalu به 0x00000001 (شروع فریم) یا 0x000001 (در فریم) ثابت می شود. داده های h.264 از برش ها تشکیل شده است و محتوای برش ها شامل: فیلم ، sps ، pps و غیره است. نوع nalu محتوای داده های بعدی h.264 را تعیین می کند.
F 1b qedex_zero_bit ، h.264 شرط می کند که باید 0 باشد
NRI 2b nal_ref_idc ، مقدار 0 ~ 3 ، اهمیت این nalu را نشان می دهد ، فریم I ، sps ، pps معمولاً 3 می گیرد ، قاب P معمولاً 2 و فریم B معمولاً 0 می گیرد
نوع 5b به جدول زیر مراجعه کنید
توضیحات نوع_نال
0 استفاده نشده است
1 تصویر غیر IDR ، IDR به قاب اصلی اشاره دارد
پارتیشن 2 تکه A
پارتیشن 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 بی سیم ویدئو و صدا را راحت تر انتقال می دهد!
تماس با ما
نشانی:
شماره 305 اتاق HuiLan ساختمان شماره 273 Huanpu Road گوانگژو چین 510620
دسته بندی ها
عضویت در خبرنامه