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 - гэта пратаколы для трансляцыі ў рэжыме рэальнага часу, вызначаныя Apple. HLS рэалізаваны на аснове пратакола HTTP. Змест перадачы ўключае дзве часткі, адна - файл апісання M3U8, а другая - медыя-файл TS.
1. Файл M3U8
Медыя-файл апісаны ў тэксце, які складаецца з шэрагу тэгаў.
#EXTM3U
# EXT-X-Мэтавая працягласць: 5
# EXTINF: 5,
./0.ц
# EXTINF: 5,
./1.ц
# EXTM3U: Першы радок кожнага файла M3U8 павінен быць гэтым тэгам.
# EXT-X-TARGETDURATION: Пакажыце максімальную працягласць сегмента носьбіта (у секундах). Працягласць часу, указаная ў #EXTINF, павінна быць меншай або роўнай гэтаму максімальнаму значэнню. Гэта значэнне можа з'явіцца толькі адзін раз.
#EXTINF: Апішыце даўжыню аднаго медыяфайла. Далей ідуць медыя-файлы, такія як ./0.ts
2. файл TS
Файл TS - гэта файл транспартнага патоку, асноўны фармат кадавання відэа - h264 / mpeg4, аўдыя - у адпаведнасці з MP3.
Файл ts падзелены на тры пласты: ts слой Transport Stream, pes слой Packet Elemental Stream, es слой Elementary Stream. Эс-пласт - гэта аўдыя- і відэаданыя, а пласт - інфармацыя пра апісанне кадра дадзеных, напрыклад, метка часу, дададзеная да аўдыя- і відэаданых. Узровень TS заключаецца ў даданні неабходнай інфармацыі для ідэнтыфікацыі і перадачы патоку дадзеных у пласце pes
Заўвага: Падрабязнасці наступныя
(1) пласт ts Памер пакета ts зафіксаваны ў 188 байт, а пласт ts падзелены на тры часткі: загаловак ts, поле адаптацыі і карысную нагрузку. Загаловак ts фіксуецца ў 4 байты; поле адаптацыі можа існаваць альбо не існаваць, і яго асноўная функцыя - запаўненне дадзеных меншым за 188 байт; карысная нагрузка - дадзеныя pes.
ц загаловак
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_scrambly_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 для пазначэння ПЦР альбо 0x40 для неўключэння ПЦР
Спасылка на праграмны гадзіннік PCR 5B, спасылка на праграмны гадзіннік, якая выкарыстоўваецца для аднаўлення сістэмнага гадзіннікавага гадзінніка STC (сістэмнага гадзінніка), які адпавядае энкодэру.
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
нумар версіі 5b Нумар версіі, зафіксаваны на 00000, пры змене PAT нумар версіі павялічыцца на 1
current_next_indicator 1b зафіксаваны на 1, што паказвае на тое, што можна выкарыстоўваць гэтую табліцу PAT, калі яна роўная 0, дачакайцеся наступнай табліцы PAT
нумар_раздзела 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 Даўжыня наступных дадзеных
нумар канала 16b нумар праграмы, што азначае, што канал, звязаны з бягучым PMT, мае значэнне 0x0001
зарэзерваваны 2b замацаваны на 11
нумар версіі 5b Нумар версіі, зафіксаваны на 00000, пры змене PAT нумар версіі павялічыцца на 1
current_next_indicator 1b фіксуецца ў 1
нумар_раздзела 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
basic_PID 13b PID, адпаведны stream_type
зарэзерваваны 4b замацаваны на 1111
ES_info_length 12b Інфармацыя пра апісанне, пазначаная як 0x000, азначае не
Канцавая пятля
CRC32 32b Код CRC32 праверкі папярэдніх дадзеных
(2) пласт пес
Пласт 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
ачкоў 5В, 33 біт
dts 5B 33bit значэнне
pts - метка часу адлюстравання, а dts - адзнака часу дэкадавання. Для відэаданых патрэбныя абедзве пазнакі часу. Pts і dts гукавых дадзеных аднолькавыя, таму патрэбныя толькі pts. Ёсць два часовыя пазнакі, pts і dts, якія выкліканы B-кадрамі. Ачкі I і P кадраў роўныя dts. Калі ў відэа няма B-кадраў, ачкі заўсёды будуць такімі ж, як dts. Чытаць відэакадры паслядоўна з файла, і паслядоўнасць вынятых кадраў такая ж, як і паслядоўнасць dts. Алгарытм dts параўнальна просты, дастаткова пачатковага значэння + прырост, разлік балаў больш складаны, і зрушэнне трэба дадаць у dts.
У аўдыяпесе ёсць толькі балы (тое ж самае, што і dts), кадры I і P відэа павінны мець абедзве пазнакі часу, а кадру відэа B патрэбны толькі балы (гэтак жа, як dts). Каб спакаваць pts і 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.
pts і dts заснаваны на часавым маштабе, 1s = 90000 часавы маштаб, адзін кадр павінен быць 90000 / video_frame_rate часовы маштаб.
Падзяліўшы часовы маштаб аднаго кадра на частату дыскрэтызацыі, можна пераўтварыць у працягласць прайгравання аднаго кадра
Алгарытм аўдыё 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 / сэмпл_секунд. Такім чынам, адзнака часу для кожнага кадра складае 0, 1024 / sample_rate, ..., 1024 * n / sample_rate секунд.
Dts і pts жывога відэа павінны непасрэдна выкарыстоўваць час у жывым патоку дадзеных і не павінны вылічвацца па формулах.
(3) пласт
Пласт ES адносіцца да аўдыя- і відэаданых, мы ўводзім толькі відэа H.264 і AAC-аўдыя.
h.264 відэа:
Каб спакаваць дадзеныя h.264, мы павінны дадаць у відэаданыя nalu (блок узроўню абстракцыі сеткі). Налу ўключае ў сябе загаловак і тып налу. Загаловак nalu замацаваны на 0x00000001 (пачатак кадра) або 0x000001 (у кадры). Дадзеныя h.264 складаюцца з зрэзаў, а змест зрэзаў ўключае: відэа, sps, pps і г. д. Тып nalu вызначае змест наступных дадзеных h.264.
F 1b забаронены_нулявы_біт, ч.264 прадугледжвае, што ён павінен быць 0
NRI 2b nal_ref_idc, значэнне 0 ~ 3, указвае на важнасць гэтага nalu, I кадр, sps, pps звычайна займае 3, P кадр звычайна займае 2, а кадр B звычайна займае 0
Тып 5b спасылайцеся на табліцу ніжэй
апісанне nal_unit_type
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 Бесправадная перадача відэа і аўдыё лягчэй!
Кантакт
Адрас:
No.305 Нумар HuiLan Будынак No.273 Huanpu Road Гуанчжоу Кітай 510620
катэгорыі
бюлетэнь