FMUSER Wirless Transmit Video and Audio Máis fácil!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> Albanés
ar.fmuser.org -> árabe
hy.fmuser.org -> Armenian
az.fmuser.org -> azerí
eu.fmuser.org -> éuscaro
be.fmuser.org -> bielorruso
bg.fmuser.org -> Búlgaro
ca.fmuser.org -> catalán
zh-CN.fmuser.org -> chinés (simplificado)
zh-TW.fmuser.org -> Chinés (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> Checo
da.fmuser.org -> danés
nl.fmuser.org -> Holandés
et.fmuser.org -> estoniano
tl.fmuser.org -> filipino
fi.fmuser.org -> finés
fr.fmuser.org -> Francés
gl.fmuser.org -> galego
ka.fmuser.org -> xeorxiano
de.fmuser.org -> alemán
el.fmuser.org -> Grego
ht.fmuser.org -> crioulo haitiano
iw.fmuser.org -> Hebreo
hi.fmuser.org -> hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandés
id.fmuser.org -> indonesio
ga.fmuser.org -> irlandés
it.fmuser.org -> Italiano
ja.fmuser.org -> xaponés
ko.fmuser.org -> coreano
lv.fmuser.org -> letón
lt.fmuser.org -> Lituano
mk.fmuser.org -> macedonio
ms.fmuser.org -> malaio
mt.fmuser.org -> maltés
no.fmuser.org -> Norwegian
fa.fmuser.org -> persa
pl.fmuser.org -> polaco
pt.fmuser.org -> Portugués
ro.fmuser.org -> Romanés
ru.fmuser.org -> ruso
sr.fmuser.org -> serbio
sk.fmuser.org -> Eslovaco
sl.fmuser.org -> Esloveno
es.fmuser.org -> castelán
sw.fmuser.org -> Suahili
sv.fmuser.org -> Sueco
th.fmuser.org -> Thai
tr.fmuser.org -> turco
uk.fmuser.org -> ucraíno
ur.fmuser.org -> urdú
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> galés
yi.fmuser.org -> Yiddish
HLS e Http Live Streaming son protocolos para transmisión en tempo real definidos por Apple. HLS está implementado baseado no protocolo HTTP. O contido da transmisión inclúe dúas partes, unha é o ficheiro de descrición M3U8 e a outra é o ficheiro multimedia TS.
1. Arquivo M3U8
O ficheiro multimedia descríbese nun texto, que está composto por unha serie de etiquetas.
#EXTM3U
# EXT-X-TURGETDURATION: 5
#EXTINF: 5,
./0.ts
#EXTINF: 5,
./1.ts
# EXTM3U: a primeira liña de cada ficheiro M3U8 debe ser esta etiqueta.
# EXT-X-TARGETDURATION: especifica a duración máxima do segmento de medios (segundos). A duración do tempo especificada en #EXTINF debe ser inferior ou igual a este valor máximo. Este valor só pode aparecer unha vez.
#EXTINF: Describe a lonxitude dun único ficheiro multimedia. Seguen ficheiros multimedia, como ./0.ts
2. ficheiro ts
O ficheiro ts é un ficheiro de fluxo de transporte, o formato de codificación de vídeo principal é h264 / mpeg4 e o audio é acc / MP3.
O ficheiro ts divídese en tres capas: capa de transporte de fluxo de capa, capa de paquete fluxo elemental, capa de fluxo elemental. A capa es son os datos de audio e vídeo e a capa pes é a información de descrición do marco de datos, como unha marca de tempo engadida aos datos de audio e vídeo. A capa ts é engadir a información necesaria para a identificación e transmisión do fluxo de datos na capa pes
Nota: Os detalles son os seguintes
(1) capa ts O tamaño do paquete ts está fixado en 188 bytes e a capa ts divídese en tres partes: cabeceira ts, campo de adaptación e carga útil. A cabeceira ts está fixada en 4 bytes; o campo de adaptación pode existir ou non e a súa función principal é encher datos de menos de 188 bytes; a carga útil é de datos pes.
cabeceira ts
sync_byte 8b byte de sincronización, fixado en 0x47
transport_error_indicator 1b Indicador de erro de transporte, que indica que hai un byte inútil despois do campo de adaptación da cabeceira ts, normalmente 0, este byte cóntase na lonxitude do campo de adaptación
payload_unit_start_indicator 1b Indicador de inicio da unidade de carga, que está marcado como 1 ao comezo dun paquete de datos completo
transport_priority 1b Prioridade de transporte, 0 é baixa prioridade, 1 é alta prioridade, normalmente 0
pid 13b valor pid
transport_scrambling_control 2b Control de codificación do transporte, 00 significa que non está cifrado
adaptation_field_control 2b Se se inclúe o campo de adaptación, "00" está reservado; "01" significa que non hai campo de adaptación, só a carga útil; "10" significa só o campo de adaptación, sen carga útil; "11" significa que tamén se inclúe a adaptación Dominio e carga útil.
continuity_counter 4b Contador crecente, de 0-f, o valor inicial non leva necesariamente 0, pero debe ser continuo
O contido da capa ts identifícase polo valor PID e o contido principal inclúe: táboa PAT, táboa PMT, fluxo de audio e fluxo de vídeo. Para analizar o fluxo ts, primeiro debes atopar a táboa PAT, sempre que atopes o PAT, podes atopar o PMT e despois podes atopar os fluxos de audio e vídeo. O valor PID da táboa PAT está fixado en 0. A táboa PAT e a táboa PMT deben inserirse no fluxo ts regularmente, porque o usuario pode unirse ao fluxo ts en calquera momento, este intervalo é relativamente pequeno, normalmente cada poucos fotogramas de vídeo para engadir PAT e PMT. Son necesarias as táboas PAT e PMT e tamén se poden engadir outras táboas como SDT (táboa de descrición do servizo), pero o fluxo hls pódese reproducir sempre que haxa PAT e PMT.
Táboa PAT: a súa función principal é indicar o valor PID da táboa PMT.
Táboa PMT: a súa función principal é especificar o valor PID do fluxo de audio e vídeo.
Transmisión de audio / transmisión de vídeo: leva contido de audio e vídeo.
adaptación
adaptation_field_length 1B lonxitude do campo de adaptación, o número de bytes detrás
a bandeira 1B leva 0x50 para indicar PCR ou 0x40 para non incluír PCR
PCR 5B Program Clock Reference, referencia do reloxo do programa, que se usa para recuperar o reloxo de sincronización do sistema STC (System Time Clock) consistente co codificador.
stuffing_bytes xB bytes de recheo, o valor é 0xff
A lonxitude da área de adaptación incluirá un byte identificado polo indicador de erro de transmisión. pcr é a referencia do reloxo do programa, pcr, dts, pts son valores muestreados do mesmo reloxo do sistema, pcr é incremental, polo que se pode establecer como valor dts, os datos de audio non precisan pcr. Se non hai campo, o iPad pode xogar, pero vlc non pode xogar. Ao empaquetar o fluxo ts, as táboas PAT e PMT non teñen un campo de adaptación. Se a lonxitude non é suficiente, só tes que encher 0xff. Tanto a transmisión de vídeo como a de audio necesitan engadir un campo de adaptación, que normalmente se engade ao primeiro paquete ts e ao último paquete ts dun marco, e o paquete ts medio non se engade.
Formato PAT
table_id 8b A táboa PAT está fixada en 0x00
section_syntax_indicator 1b está fixado en 1
cero 1b está fixado en 0
o reservado 2b está fixado en 11
section_length 12b A lonxitude dos seguintes datos
transport_stream_id 16b ID de fluxo de transporte, fixado como 0x0001
o reservado 2b está fixado en 11
número_versión 5b Número de versión, fixado en 00000, se PAT cambia, o número de versión aumentará en 1
current_next_indicator 1b está fixado en 1, o que indica que se pode usar esta táboa PAT, se é 0, agarde a seguinte táboa PAT
número_sección 8b está fixado en 0x00
last_section_number 8b está fixado en 0x00
Bucle de inicio
número_programa 16b Cando o número do programa é 0x0000, significa que é NIT, cando o número do programa é 0x0001, significa que é PMT
o reservado 3b está fixado en 111
PID 13b Valor PID correspondente ao contido do número do programa
Bucle final
CRC32 32b CRC32 comprobar o código dos datos anteriores
Formato PMT
table_id 8b A táboa PMT ten calquera valor, 0x02
section_syntax_indicator 1b está fixado en 1
cero 1b está fixado en 0
o reservado 2b está fixado en 11
section_length 12b A lonxitude dos seguintes datos
número_programa 16b número de canle, que significa a canle asociada ao PMT actual, o valor é 0x0001
o reservado 2b está fixado en 11
número_versión 5b Número de versión, fixado en 00000, se PAT cambia, o número de versión aumentará en 1
current_next_indicator 1b está fixado en 1
número_sección 8b está fixado en 0x00
last_section_number 8b está fixado en 0x00
o reservado 3b está fixado en 111
PCR_PID 13b O PID do paquete TS onde se atopa PCR (reloxo de referencia do programa), designado como o PID de vídeo
o reservado 4b está fixado en 1111
program_info_length 12b Información da descrición do programa, designada como 0x000 significa non
Bucle de inicio
stream_type 8b Tipo de stream, a marca é vídeo ou audio ou outros datos, a codificación h.264 corresponde a 0x1b, a codificación aac corresponde a 0x0f, a codificación mp3 corresponde a 0x03
o reservado 3b está fixado en 111
PID elemental 13b PID correspondente a stream_type
o reservado 4b está fixado en 1111
ES_info_length 12b Información de descrición, designada como 0x000 significa non
Bucle final
CRC32 32b CRC32 comprobar o código dos datos anteriores
(2) capa de pes
A capa pes engade selo de tempo e outra información a cada cadro de vídeo / audio. O paquete pes contén moito contido e só deixamos os máis usados.
código inicial 3B código inicial, fixado en 0x000001
ID de transmisión 1B valor de audio (0xc0-0xdf), normalmente 0xc0
Valor do vídeo (0xe0-0xef), normalmente 0xe0
lonxitude de paquete de pes 2B A lonxitude dos datos de pes detrás, 0 significa lonxitude ilimitada,
Só a lonxitude dos datos do vídeo superará 0xffff
A bandeira 1B normalmente toma o valor 0x80, o que significa que os datos non están cifrados, non teñen prioridade e fan unha copia de seguridade dos datos
O valor de marca 1B 0x80 significa só pts, o valor 0xc0 significa pts e dts
pes longo dos datos 1B A lonxitude dos seguintes datos, o valor é 5 ou 10
ptos 5B valor de 33 bits
dts 5B valor de 33 bits
pts é a marca de tempo de visualización e dts é a marca de tempo de descodificación. As dúas marcas de tempo son necesarias para os datos de vídeo. As pts e dts dos datos de audio son os mesmos, polo que só se precisan pts. Hai dúas marcas de tempo, pts e dts, que son causadas por fotogramas B. As pts de fotogramas I e P son iguais a dts. Se un vídeo non ten fotogramas B, os pts sempre serán os mesmos que os dts. Lea os fotogramas de vídeo secuencialmente desde o ficheiro e a secuencia dos fotogramas extraídos é a mesma que a secuencia dts. O algoritmo dts é relativamente sinxelo, o valor inicial + incremento é suficiente, o cálculo de pts é máis complicado e hai que engadir a compensación aos dts.
Só hai pts no peso de audio (o mesmo que os dts), os fotogramas I e P do vídeo deben ter as dúas marcas de tempo e o fotograma do vídeo B só precisa pts (o mesmo que os dts). Para empaquetar pts e dts, cómpre coñecer o tipo de marco de vídeo, pero non podemos xulgar o tipo de marco a través do formato contedor. Debe analizar o contido h.264 para obter o tipo de marco.
por exemplo:
IPBBBP
Orde de lectura: 1 2 3 4 5 6
orde dts: 1 2 3 4 5 6
orde de ptos: 1 5 3 2 4 6
Algoritmo dts de vídeo baixo demanda:
dts = valor inicial + 90000 / video_frame_rate, o valor inicial pódese especificar arbitrariamente, pero o mellor é non tomar 0, video_frame_rate é a taxa de fotogramas, como 23, 30.
pts e dts baséanse en escala de tempo, 1s = 90000 escala de tempo, un cadro debería ser 90000 / video_frame_rate escala de tempo.
Dividir a escala de tempo dun fotograma pola frecuencia de mostraxe pódese converter á duración de reprodución dun fotograma
Algoritmo dts de audio baixo demanda:
dts = valor inicial + (90000 * audio_samples_per_frame) / audio_sample_rate, o valor de audio_samples_per_frame está relacionado co codec, o valor AAC é 1024, o valor mp3 é 1158, o audio_sample_rate é a taxa de mostraxe, como 24000, 41000. AAC decodifica un marco de 1024 mostras por canle, o que significa que a duración dun fotograma é de 1024 / sample_rate segundos. Así, a marca de tempo de cada fotograma é 0, 1024 / sample_rate, ..., 1024 * n / sample_rate seconds.
As dts e pts do vídeo en directo deben usar directamente o tempo no fluxo de datos en directo e non deben calcularse mediante fórmulas.
(3) é capa
A capa es refírese a datos de audio e vídeo, só introducimos o vídeo h.264 e audio aac.
vídeo h.264:
Para empaquetar os datos h.264, debemos engadir un nalu (unidade de capa de abstracción de rede) aos datos do vídeo. O nalu inclúe o encabezado nalu e o tipo nalu. A cabeceira nalu está fixada en 0x00000001 (inicio do marco) ou 0x000001 (no marco). Os datos de h.264 están compostos por porcións, e o contido das porcións inclúe: vídeo, sps, pps, etc. O tipo nalu determina o contido dos datos posteriores de h.264.
F 1b forbidden_zero_bit, h.264 estipula que debe ser 0
NRI 2b nal_ref_idc, valor 0 ~ 3, indica a importancia deste nalu, I frame, sps, pps normalmente levan 3, P frame normalmente leva 2 e B frame normalmente leva 0
O tipo 5b refírese á táboa seguinte
descrición nal_unit_type
0 non usado
1 Imaxe non IDR, IDR refírese ao marco clave
Partición A 2 cortes
Partición de 3 cortes B
|
Introduce o correo electrónico para obter unha sorpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> Albanés
ar.fmuser.org -> árabe
hy.fmuser.org -> Armenian
az.fmuser.org -> azerí
eu.fmuser.org -> éuscaro
be.fmuser.org -> bielorruso
bg.fmuser.org -> Búlgaro
ca.fmuser.org -> catalán
zh-CN.fmuser.org -> chinés (simplificado)
zh-TW.fmuser.org -> Chinés (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> Checo
da.fmuser.org -> danés
nl.fmuser.org -> Holandés
et.fmuser.org -> estoniano
tl.fmuser.org -> filipino
fi.fmuser.org -> finés
fr.fmuser.org -> Francés
gl.fmuser.org -> galego
ka.fmuser.org -> xeorxiano
de.fmuser.org -> alemán
el.fmuser.org -> Grego
ht.fmuser.org -> crioulo haitiano
iw.fmuser.org -> Hebreo
hi.fmuser.org -> hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandés
id.fmuser.org -> indonesio
ga.fmuser.org -> irlandés
it.fmuser.org -> Italiano
ja.fmuser.org -> xaponés
ko.fmuser.org -> coreano
lv.fmuser.org -> letón
lt.fmuser.org -> Lituano
mk.fmuser.org -> macedonio
ms.fmuser.org -> malaio
mt.fmuser.org -> maltés
no.fmuser.org -> Norwegian
fa.fmuser.org -> persa
pl.fmuser.org -> polaco
pt.fmuser.org -> Portugués
ro.fmuser.org -> Romanés
ru.fmuser.org -> ruso
sr.fmuser.org -> serbio
sk.fmuser.org -> Eslovaco
sl.fmuser.org -> Esloveno
es.fmuser.org -> castelán
sw.fmuser.org -> Suahili
sv.fmuser.org -> Sueco
th.fmuser.org -> Thai
tr.fmuser.org -> turco
uk.fmuser.org -> ucraíno
ur.fmuser.org -> urdú
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> galés
yi.fmuser.org -> Yiddish
FMUSER Wirless Transmit Video and Audio Máis fácil!
contacto
dirección:
No.305 Sala HuiLan Building No.273 Huanpu Road Guangzhou China 510620
categorías
boletín informativo