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 -> Italian
ja.fmuser.org -> японски
ko.fmuser.org -> корейски
lv.fmuser.org -> латвийски
lt.fmuser.org -> Литовски
mk.fmuser.org -> македонски
ms.fmuser.org -> малайски
mt.fmuser.org -> Малтийски
no.fmuser.org -> Norwegian
fa.fmuser.org -> персийски
pl.fmuser.org -> полски
pt.fmuser.org -> португалски
ro.fmuser.org -> Romanian
ru.fmuser.org -> руски
sr.fmuser.org -> сръбски
sk.fmuser.org -> словашки
sl.fmuser.org -> Словенски
es.fmuser.org -> испански
sw.fmuser.org -> суахили
sv.fmuser.org -> шведски
th.fmuser.org -> Thai
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-TARGETDURATION: 5
#EXTINF: 5,
./0.ts
#EXTINF: 5,
./1.ts
# 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. Слоят 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_scrambly_control 2b Контрол за кодиране на транспорта, 00 означава некриптиран
adaptation_field_control 2b Дали да се включи полето за адаптация, '00' е запазено; „01“ означава липса на поле за адаптация, а само полезен товар; „10“ означава само полето за адаптация, без полезен товар; „11“ означава, че адаптацията също включва домейн и полезен товар.
kontinuity_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 дължина на полето за адаптация, броят на байтовете отзад
флаг 1В отнема 0x50, за да посочи PCR или 0x40, за да не включва PCR
PCR 5B Справочник за програмния часовник, справка за програмния часовник, използван за възстановяване на системния часовник 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 Дължината на следните данни
номер на програмата 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 Тип поток, марката е Video или Audio или други данни, 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 начален код 3B стартов код, фиксиран на 0x000001
поток id 1B аудио стойност (0xc0-0xdf), обикновено 0xc0
Стойност на видеото (0xe0-0xef), обикновено 0xe0
дължина на пакета pes 2B Дължината на данните pes зад, 0 означава неограничена дължина,
Само дължината на видеоданните ще надвишава 0xffff
Флаг 1B обикновено приема стойността 0x80, което означава, че данните не са криптирани, нямат приоритет и са архивирани данни
Флаг 1B стойност 0x80 означава само точки, стойност 0xc0 означава точки и точки
дължина на данните 1B Дължината на следните данни, стойността е 5 или 10
точки 5B 33-битова стойност
dts 5B 33bit стойност
pts е клеймото на дисплея, а dts е клеймото за декодиране. И двата времеви клейма са необходими за видео данни. Pts и dts на аудио данните са еднакви, така че са необходими само pts. Има две времеви марки, pts и dts, които са причинени от B кадри. Точките на I и P кадрите са равни на dts. Ако видеото няма B кадри, точките винаги ще бъдат същите като dts. Прочетете видео кадрите последователно от файла и последователността на извлечените кадри е същата като dts последователността. Алгоритъмът dts е сравнително прост, първоначалната стойност + увеличение е достатъчно, изчисляването на точки е по-сложно и трябва да се добави отместването към dts.
В аудио pes има само точки (същите като 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 / sample_rate секунди. Така че клеймото за всеки кадър е 0, 1024 / sample_rate, ..., 1024 * n / sample_rate секунди.
Dts и pts на видеото на живо трябва директно да използват времето в потока от данни на живо и не трябва да се изчисляват по формули.
(3) ES слой
Слоят es се отнася до аудио и видео данни, ние въвеждаме само h.264 видео и aac аудио.
h.264 видео:
За да опаковаме данните h.264, трябва да добавим nalu (Unit Abstraction Layer Unit) към видео данните. Nalu включва заглавката на nalu и типа nalu. Заглавката на nalu е фиксирана на 0x00000001 (начало на кадър) или 0x000001 (в кадър). Данните на h.264 се състоят от филийки, а съдържанието на резени включва: видео, sps, pps и др. Типът nalu определя съдържанието на следващите h.264 данни.
F 1b prohib_zero_bit, h.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 -> Italian
ja.fmuser.org -> японски
ko.fmuser.org -> корейски
lv.fmuser.org -> латвийски
lt.fmuser.org -> Литовски
mk.fmuser.org -> македонски
ms.fmuser.org -> малайски
mt.fmuser.org -> Малтийски
no.fmuser.org -> Norwegian
fa.fmuser.org -> персийски
pl.fmuser.org -> полски
pt.fmuser.org -> португалски
ro.fmuser.org -> Romanian
ru.fmuser.org -> руски
sr.fmuser.org -> сръбски
sk.fmuser.org -> словашки
sl.fmuser.org -> Словенски
es.fmuser.org -> испански
sw.fmuser.org -> суахили
sv.fmuser.org -> шведски
th.fmuser.org -> Thai
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
Категории
Бюлетин