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 -> Ідыш
Некалькі дзён таму я правёў пэўны час, каб вывучыць тэхналогію жывой трансляцыі 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 дадатковая інфармацыя, інфармацыя аб падзеленых дадзеных, такіх як працягласць, прапускная здольнасць і г.д.
|
Увядзіце адрас электроннай пошты, каб атрымаць сюрпрыз
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
катэгорыі
бюлетэнь