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 -> Идиш
Преди няколко дни прекарах известно време, за да проуча HTTP технология на живо (HLS) и да внедря HLS кодер, hlsliveencoder, написан на C + +. Неговата функция е да заснеме камерата и микрофона, видео кодиране в реално време H.264 и аудио кодиране aac, и според спецификацията на протокола HLS, генерира сегментиран стандартен TS файл и индексен файл m3u8. Чрез моя hlsliveencoder и HTTP сървъра на трета страна (като nginx) успешно реализирахме поточно предаване на HTTP на живо и преминахме теста на iPhone. Ще напиша някои от печалбите тук.
1. Анализ на HLS технологията
HTTP поточно предаване на живо (HLS) е протокол за транспортиране на медийни потоци, базиран на HTTP, внедрен от Apple Inc., който може да реализира поточна медия на живо и при поискване. Той се използва главно в IOS система за осигуряване на аудио и видео решения на живо и при поискване за IOS устройства (като iPhone и iPad). HLS при поискване е основно общ сегментиран HTTP при поискване. Разликата е, че сегментите му са много малки. За да се реализира HLS при поискване, ключът е да сегментирате медийни файлове. В момента има много инструменти с отворен код, които могат да се използват. Няма да го обсъждам тук, просто ще говоря за технологията на HLS на живо.
В сравнение с обичайните протоколи за поточно предаване на живо, като RTMP протокол, RTSP протокол, MMS протокол и т.н., най-голямата разлика в HLS поточното предаване на живо е, че клиентът на живо не получава пълен поток от данни. Протоколът HLS съхранява потока от данни на живо като непрекъснати, краткосрочни и дълги мултимедийни файлове (mpeg-ts формат) от страна на сървъра, докато клиентската страна непрекъснато изтегля и възпроизвежда тези малки файлове, защото сървърната страна винаги генерира нови малки файлове от най-новите данни на живо, така че клиентската страна трябва само да възпроизвежда файловете, получени от сървъра, за да реализира на живо. Вижда се, че HLS основно реализира излъчване на живо чрез технологията VOD. Тъй като данните се предават чрез HTTP протокол, не е необходимо да се разглежда проблемът със защитната стена или прокси, а времето за сегментиране на файлове е много кратко. Клиентът може бързо да избере и превключи скоростта на кода, за да се адаптира към възпроизвеждането при различни условия на честотна лента. Поради техническите характеристики на HLS обаче, закъснението му винаги е по-високо от това на обикновения протокол за поточно предаване на живо.
Според горното разбиране, за да постигнем HTTP пряко предаване на живо, трябва да проучим и внедрим следните ключови технологии.
(1) Съберете данните от видео източника и аудио източника
(2) Оригиналните данни са кодирани от H264 и AAC
(3) Видео и аудио данни са опаковани като mpeg-ts пакети
(4) Стратегия за генериране на сегментация HLS и файл с индекс m3u8
2. HTTP протокол за транспорт
Сред тях първата и втората точка са споменати в предишната ми статия, а последната точка е, че можем да използваме съществуващия HTTP сървър, така че изпълнението на третата и четвъртата точка е от ключово значение.
(1) Програмна рамка и изпълнение
Чрез горния анализ логиката и процесът на кодера на живо HLS са ясни основно: стартирайте съответно нишката за кодиране на аудио и видео, реализирайте придобиването на аудио и видео чрез DirectShow (или друга) технология и след това извикайте libx264 и libfaac съответно за видео и аудио кодиране. След като двете кодиращи нишки кодират аудио и видео данните в реално време, те ги съхраняват в сегментен файл във формат mpeg-ts според персонализираната стратегия за разделяне. Когато се съхранява сегментен файл, индексният файл m3u8 се актуализира. Както е показано на фигурата по-долу:
На фигурата по-горе, след получаване на видео и аудио данните, hlsliveencoder трябва първо да определи дали текущият дял трябва да приключи и да създаде нов дял, за да продължи непрекъснатото генериране на TS дял. Трябва да се отбележи, че новата фрагментация трябва да започне от ключовия кадър, за да се предотврати неуспешно декодиране на плейъра. Основният код е както следва:
Интерфейсът на tsmuxer също е относително прост.
(2) HLS стратегия за генериране на сегменти и m3u8
Strategy Стратегия за сегментиране
По принцип се препоръчва стратегията за сегментиране на HLS да се разделя на всеки 10 секунди. Разбира се, конкретното време трябва да бъде отбелязано според действителната продължителност на разделянето
Най-общо казано, заради кеша и други причини, последните три адреса на фрагменти се съхраняват в индексния файл и се актуализират под формата на "плъзгащ се прозорец".
Въвеждане на файл m3u8
M3u8 е индексният файл на HTTP предаване на живо. M3u8 може да се разглежда като. Основно файлът с формат M3U, разликата е, че файлът m3u8 използва кодиране на символи UTF-8.
Копирайте код
# Заглавката на файла Extm3u M3U, трябва да се постави на първия ред
# Сериен номер на първия TS сегмент на ext-x-media-последователност
# Ext-x-targetduration максималната продължителност на всеки TS сегмент
# Дали ext-x-allow-cache позволява кеширане
# Край на файла ext-x-endlist m3u8
#Extinf допълнителна информация, информация за разделени ts, като продължителност, честотна лента и т.н.
|
Въведете имейл, за да получите изненада
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
Категории
Бюлетин