FMUSER ¡Transmite video y audio sin cables más fácilmente!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikáans
sq.fmuser.org -> albanés
ar.fmuser.org -> árabe
hy.fmuser.org -> Armenio
az.fmuser.org -> azerbaiyano
eu.fmuser.org -> Vasco
be.fmuser.org -> bielorruso
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> catalán
zh-CN.fmuser.org -> chino (simplificado)
zh-TW.fmuser.org -> Chino (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> danés
nl.fmuser.org -> Holandés
et.fmuser.org -> estonio
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandés
fr.fmuser.org -> Francés
gl.fmuser.org -> gallego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemán
el.fmuser.org -> Griego
ht.fmuser.org -> criollo 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 -> japonés
ko.fmuser.org -> coreano
lv.fmuser.org -> letón
lt.fmuser.org -> Lituania
mk.fmuser.org -> macedonio
ms.fmuser.org -> malayo
mt.fmuser.org -> maltés
no.fmuser.org -> Noruega
fa.fmuser.org -> persa
pl.fmuser.org -> polaco
pt.fmuser.org -> portugués
ro.fmuser.org -> Rumano
ru.fmuser.org -> ruso
sr.fmuser.org -> serbio
sk.fmuser.org -> eslovaco
sl.fmuser.org -> Eslovenia
es.fmuser.org -> español
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandés
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> galés
yi.fmuser.org -> Yiddish
HLS y Http Live Streaming son protocolos para la transmisión en tiempo real definidos por Apple. HLS se implementa según el protocolo HTTP. El contenido de la transmisión incluye dos partes, una es el archivo de descripción M3U8 y la otra es el archivo multimedia TS.
1. Archivo M3U8
El archivo multimedia se describe en texto, que se compone de una serie de etiquetas.
#EXTM3U
# EXT-X-TARGETDURATION: 5
#EXTINF: 5,
./0.ts
#EXTINF: 5,
./1.ts
# EXTM3U: La primera línea de cada archivo M3U8 debe ser esta etiqueta.
# EXT-X-TARGETDURATION: especifique la duración máxima del segmento de medios (segundos). El tiempo especificado en #EXTINF debe ser menor o igual a este valor máximo. Este valor solo puede aparecer una vez.
#EXTINF: describe la longitud de un solo archivo multimedia. A continuación, se muestran los archivos multimedia, como ./0.ts
2. archivo ts
El archivo ts es un archivo de flujo de transporte, el formato de codificación de video principal es h264 / mpeg4 y el audio es acc / MP3.
El archivo ts se divide en tres capas: capa ts Transport Stream, capa pes Packet Elemental Stream, es layer Elementary Stream. La capa es son los datos de audio y video, y la capa pes es la información de descripción del marco de datos, como una marca de tiempo agregada a los datos de audio y video. La capa ts es para agregar la información necesaria para la identificación y transmisión del flujo de datos en la capa pes
Nota: los detalles son los siguientes
(1) capa ts El tamaño del paquete ts se fija en 188 bytes, y la capa ts se divide en tres partes: encabezado ts, campo de adaptación y carga útil. El encabezado ts se fija en 4 bytes; el campo de adaptación puede existir o no, y su función principal es completar datos de menos de 188 bytes; la carga útil son datos pes.
encabezado ts
sync_byte 8b byte de sincronización, fijo en 0x47
transport_error_indicator 1b Indicador de error de transporte, que indica que hay un byte inútil después del campo de adaptación del encabezado ts, generalmente 0, este byte se cuenta en la longitud del campo de adaptación
payload_unit_start_indicator 1b Indicador de inicio de la unidad de carga, que está marcado como 1 al comienzo de un paquete de datos completo
transport_priority 1b Prioridad de transporte, 0 es prioridad baja, 1 es prioridad alta, generalmente 0
pid 13b valor pid
transport_scrambling_control 2b Control de cifrado de transporte, 00 significa sin cifrar
adapt_field_control 2b Si se incluye el campo de adaptación, '00' está reservado; «01» significa que no hay campo de adaptación, solo la carga útil; '10' significa solo el campo de adaptación, sin carga útil; '11' significa que la adaptación también está incluida Dominio y carga útil.
continuity_counter 4b Contador creciente, de 0-f, el valor inicial no necesariamente toma 0, pero debe ser continuo
El contenido de la capa ts se identifica por el valor PID, y el contenido principal incluye: tabla PAT, tabla PMT, flujo de audio y flujo de video. Para analizar la secuencia ts, primero debe buscar la tabla PAT, siempre que encuentre la PAT, puede encontrar la PMT y luego puede encontrar las secuencias de audio y video. El valor PID de la tabla PAT se fija en 0. La tabla PAT y la tabla PMT deben insertarse en el flujo ts con regularidad, porque el usuario puede unirse al flujo ts en cualquier momento, este intervalo es relativamente pequeño, generalmente cada pocos fotogramas de video para agregar PAT y PMT. Las tablas PAT y PMT son necesarias, y también se pueden agregar otras tablas como SDT (tabla de descripción del servicio), pero la secuencia hls se puede reproducir siempre que haya PAT y PMT.
Tabla PAT: Su función principal es indicar el valor PID de la tabla PMT.
Tabla PMT: Su función principal es especificar el valor PID del flujo de audio y video.
Transmisión de audio / transmisión de video: lleve contenido de audio y video.
adaptación
adapt_field_length 1B longitud del campo de adaptación, el número de bytes detrás
el indicador 1B toma 0x50 para indicar PCR o 0x40 para no incluir PCR
Referencia de reloj de programa PCR 5B, referencia de reloj de programa, utilizada para recuperar el reloj de temporización del sistema STC (Reloj de tiempo del sistema) consistente con el codificador.
stuffing_bytes xB relleno de bytes, el valor es 0xff
La longitud del área de adaptación incluirá un byte identificado por el indicador de error de transmisión. pcr es la referencia del reloj del programa, pcr, dts, pts son todos los valores muestreados del mismo reloj del sistema, pcr es incremental, por lo que se puede establecer como valor dts, los datos de audio no necesitan pcr. Si no hay campo, ipad puede jugar, pero vlc no puede jugar. Al empaquetar el flujo ts, las tablas PAT y PMT no tienen un campo de adaptación. Si la longitud no es suficiente, simplemente complete 0xff. Tanto el flujo de video como el flujo de audio deben agregar un campo de adaptación, que generalmente se agrega al primer paquete ts y al último paquete ts de una trama, y no se agrega el paquete ts del medio.
Formato PAT
table_id 8b La tabla PAT está fijada a 0x00
section_syntax_indicator 1b se fija en 1
cero 1b se fija en 0
reservado 2b se fija en 11
section_length 12b La longitud de los siguientes datos
transport_stream_id 16b ID de flujo de transporte, fijo como 0x0001
reservado 2b se fija en 11
version_number 5b Número de versión, fijado en 00000, si PAT cambia, el número de versión aumentará en 1
current_next_indicator 1b se fija en 1, lo que indica que esta tabla PAT se puede usar, si es 0, espere a la siguiente tabla PAT
section_number 8b se fija en 0x00
last_section_number 8b se fija en 0x00
Iniciar bucle
program_number 16b Cuando el número de programa es 0x0000, significa que es NIT, cuando el número de programa es 0x0001, significa que es PMT
reservado 3b se fija en 111
PID 13b Valor PID correspondiente al contenido del número de programa
Ciclo final
CRC32 32b Código de verificación CRC32 de los datos anteriores
Formato PMT
table_id 8b La tabla PMT tiene cualquier valor, 0x02
section_syntax_indicator 1b se fija en 1
cero 1b se fija en 0
reservado 2b se fija en 11
section_length 12b La longitud de los siguientes datos
program_number 16b número de canal, que significa el canal asociado con el PMT actual, el valor es 0x0001
reservado 2b se fija en 11
version_number 5b Número de versión, fijado en 00000, si PAT cambia, el número de versión aumentará en 1
current_next_indicator 1b se fija en 1
section_number 8b se fija en 0x00
last_section_number 8b se fija en 0x00
reservado 3b se fija en 111
PCR_PID 13b El PID del paquete TS donde se encuentra PCR (reloj de referencia del programa), designado como el PID de video
reservado 4b se fija en 1111
program_info_length 12b Información de descripción del programa, designado como 0x000 significa que no
Iniciar bucle
stream_type 8b Tipo de flujo, la marca es Video o Audio u otros datos, la codificación h.264 corresponde a 0x1b, la codificación aac corresponde a 0x0f, la codificación mp3 corresponde a 0x03
reservado 3b se fija en 111
elementary_PID 13b PID correspondiente a stream_type
reservado 4b se fija en 1111
ES_info_length 12b La información de descripción, designada como 0x000 significa que no
Ciclo final
CRC32 32b Código de verificación CRC32 de los datos anteriores
(2) capa de pes
La capa pes agrega marca de tiempo y otra información a cada cuadro de video / audio. El paquete pes contiene mucho contenido, y solo dejamos los más utilizados.
código de inicio pes código de inicio 3B, fijo en 0x000001
stream id 1B valor de audio (0xc0-0xdf), generalmente 0xc0
Valor de video (0xe0-0xef), generalmente 0xe0
pes paquete longitud 2B La longitud de los datos pes detrás, 0 significa longitud ilimitada,
Solo la longitud de los datos del video excederá 0xffff
El indicador 1B generalmente toma el valor 0x80, lo que significa que los datos no están encriptados, no tienen prioridad y son datos respaldados
El valor de la bandera 1B 0x80 significa solo pts, el valor 0xc0 significa pts y dts
pes longitud de datos 1B La longitud de los siguientes datos, el valor es 5 o 10
pts 5B 33bit valor
valor de dts 5B 33bit
pts es la marca de tiempo de visualización y dts es la marca de tiempo de decodificación. Se requieren ambas marcas de tiempo para los datos de video. Los pts y dts de los datos de audio son los mismos, por lo que solo se necesitan pts. Hay dos marcas de tiempo, pts y dts, que son causadas por tramas B. Los pts de las tramas I y P son iguales a dts. Si un video no tiene cuadros B, los pts siempre serán los mismos que los dts. Lea los fotogramas de video secuencialmente desde el archivo, y la secuencia de los fotogramas extraídos es la misma que la secuencia dts. El algoritmo dts es relativamente simple, el valor inicial + incremento es suficiente, el cálculo de pts es más complicado y el desplazamiento debe agregarse al dts.
Solo hay pts en las pes de audio (igual que dts), los fotogramas I y P del video deben tener ambas marcas de tiempo, y el fotograma B del video solo necesita pts (lo mismo que dts). Para empaquetar pts y dts, necesita conocer el tipo de fotograma de video, pero no podemos juzgar el tipo de fotograma a través del formato contenedor. Debe analizar el contenido h.264 para obtener el tipo de marco.
por ejemplo:
IPBBBP
Orden de lectura: 1 2 3 4 5 6
orden dts: 1 2 3 4 5 6
orden de pts: 1 5 3 2 4 6
Algoritmo dts de video bajo demanda:
dts = valor inicial + 90000 / video_frame_rate, el valor inicial se puede especificar arbitrariamente, pero es mejor no tomar 0, video_frame_rate es la velocidad de fotogramas, como 23, 30.
pts y dts se basan en la escala de tiempo, 1s = 90000 escala de tiempo, un fotograma debe ser 90000 / video_frame_rate timecale.
La división de la escala de tiempo de un fotograma por la frecuencia de muestreo se puede convertir a la duración de reproducción de un fotograma.
Algoritmo dts de audio a pedido:
dts = valor inicial + (90000 * audio_samples_per_frame) / audio_sample_rate, el valor de audio_samples_per_frame está relacionado con el códec, el valor de aac es 1024, el valor de mp3 es 1158, audio_sample_rate es la frecuencia de muestreo, como 24000, 41000. AAC decodifica un fotograma de 1024 muestras por canal, lo que significa que la duración de un fotograma es 1024 / sample_rate segundos. Entonces, la marca de tiempo de cada fotograma es 0, 1024 / sample_rate, ..., 1024 * n / sample_rate segundos.
Los dts y pts del video en vivo deben usar directamente el tiempo en el flujo de datos en vivo y no deben calcularse mediante fórmulas.
(3) capa es
La capa es se refiere a datos de audio y video, solo introducimos video h.264 y audio aac.
video h.264:
Para empaquetar los datos h.264, debemos agregar un nalu (unidad de capa de abstracción de red) a los datos de video. El nalu incluye el encabezado nalu y el tipo nalu. El encabezado nalu se fija en 0x00000001 (inicio del marco) o 0x000001 (en el marco). Los datos de h.264 se componen de cortes y el contenido de los cortes incluye: video, sps, pps, etc. El tipo nalu determina el contenido de los datos h.264 subsiguientes.
F 1b forbidden_zero_bit, h.264 estipula que debe ser 0
NRI 2b nal_ref_idc, valor 0 ~ 3, indica la importancia de este nalu, I frame, sps, pps usualmente toman 3, P frame usualmente toma 2 y B frame usualmente toma 0
Tipo 5b consulte la tabla siguiente
nal_unit_type descripción
0 no utilizado
1 Imagen no IDR, IDR se refiere al fotograma clave
Partición A de 2 rebanadas
Partición B de 3 cortes
|
Ingrese el correo electrónico para recibir una sorpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikáans
sq.fmuser.org -> albanés
ar.fmuser.org -> árabe
hy.fmuser.org -> Armenio
az.fmuser.org -> azerbaiyano
eu.fmuser.org -> Vasco
be.fmuser.org -> bielorruso
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> catalán
zh-CN.fmuser.org -> chino (simplificado)
zh-TW.fmuser.org -> Chino (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> danés
nl.fmuser.org -> Holandés
et.fmuser.org -> estonio
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandés
fr.fmuser.org -> Francés
gl.fmuser.org -> gallego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemán
el.fmuser.org -> Griego
ht.fmuser.org -> criollo 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 -> japonés
ko.fmuser.org -> coreano
lv.fmuser.org -> letón
lt.fmuser.org -> Lituania
mk.fmuser.org -> macedonio
ms.fmuser.org -> malayo
mt.fmuser.org -> maltés
no.fmuser.org -> Noruega
fa.fmuser.org -> persa
pl.fmuser.org -> polaco
pt.fmuser.org -> portugués
ro.fmuser.org -> Rumano
ru.fmuser.org -> ruso
sr.fmuser.org -> serbio
sk.fmuser.org -> eslovaco
sl.fmuser.org -> Eslovenia
es.fmuser.org -> español
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandés
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> galés
yi.fmuser.org -> Yiddish
FMUSER ¡Transmite video y audio sin cables más fácilmente!
Contacto
Dirección:
Habitación No.305 Edificio HuiLan No.273 Huanpu Road Guangzhou China 510620
Categorías
NEWSLETTER