FMUSER Transmitir vídeo e áudio sem fio mais 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 -> armênio
az.fmuser.org -> Azerbaijão
eu.fmuser.org -> Basco
be.fmuser.org -> bielorrusso
bg.fmuser.org -> búlgaro
ca.fmuser.org -> catalão
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 -> dinamarquês
nl.fmuser.org -> holandês
et.fmuser.org -> estoniano
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandês
fr.fmuser.org -> francês
gl.fmuser.org -> galego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemão
el.fmuser.org -> grego
ht.fmuser.org -> crioulo haitiano
iw.fmuser.org -> hebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> húngaro
is.fmuser.org -> islandês
id.fmuser.org -> indonésio
ga.fmuser.org -> irlandês
it.fmuser.org -> italiano
ja.fmuser.org -> Japonês
ko.fmuser.org -> coreano
lv.fmuser.org -> letão
lt.fmuser.org -> Lituano
mk.fmuser.org -> macedônio
ms.fmuser.org -> malaio
mt.fmuser.org -> maltês
no.fmuser.org - norueguês
fa.fmuser.org -> persa
pl.fmuser.org -> polonês
pt.fmuser.org -> português
ro.fmuser.org -> romeno
ru.fmuser.org -> russo
sr.fmuser.org -> Sérvio
sk.fmuser.org -> Eslovaco
sl.fmuser.org -> esloveno
es.fmuser.org -> espanhol
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 -> iídiche
Alguns dias atrás, passei algum tempo estudando a tecnologia HTTP live streaming (HLS) e implementar um codificador HLS, hlsliveencoder, escrito em C ++. Sua função é capturar a câmera e o microfone, codificação de vídeo H.264 em tempo real e codificação de áudio aac e, de acordo com a especificação do protocolo HLS, gerar arquivo TS padrão segmentado e arquivo de índice m3u8. Por meio do meu hlsliveencoder e do servidor HTTP de terceiros (como nginx), realizamos com sucesso o streaming ao vivo de HTTP e passamos no teste do iPhone. Vou escrever alguns dos ganhos aqui.
1. Análise da Tecnologia HLS
O HTTP live streaming (HLS) é um protocolo de transporte de mídia de streaming baseado em HTTP implementado pela Apple Inc., que pode realizar streaming de mídia ao vivo e sob demanda. É usado principalmente no sistema IOS para fornecer soluções de áudio e vídeo ao vivo e sob demanda para dispositivos IOS (como iPhone e iPad). HLS on demand é basicamente um HTTP segmentado comum sob demanda. A diferença é que seus segmentos são muito pequenos. Para realizar o HLS sob demanda, a chave é segmentar os arquivos de mídia. No momento, existem muitas ferramentas de código aberto que podem ser usadas. Não vou discutir isso aqui, apenas falar sobre a tecnologia de transmissão ao vivo HLS.
Em comparação com os protocolos de streaming ao vivo comuns, como protocolo RTMP, protocolo RTSP, protocolo MMS e assim por diante, a maior diferença do streaming ao vivo HLS é que o cliente ao vivo não obtém um fluxo de dados completo. O protocolo HLS armazena o fluxo de dados ao vivo como arquivos de mídia contínuos, de curto e longo prazo (formato MPEG-ts) no lado do servidor, enquanto o lado do cliente baixa e reproduz continuamente esses pequenos arquivos, porque o lado do servidor sempre gera novos pequenos arquivos de os dados ao vivo mais recentes, de forma que o lado do cliente só precisa reproduzir os arquivos obtidos do servidor para realizar os dados ao vivo. Pode-se ver que o HLS basicamente realiza a transmissão ao vivo por meio da tecnologia VOD. Como os dados são transmitidos através do protocolo HTTP, não há necessidade de considerar o problema de firewall ou proxy, e o tempo de segmentação dos arquivos é muito curto. O cliente pode selecionar e mudar rapidamente a taxa de código para se adaptar à reprodução em diferentes condições de largura de banda. No entanto, devido às características técnicas do HLS, seu atraso é sempre maior do que o do protocolo de streaming ao vivo comum.
De acordo com o entendimento acima, para alcançar a transmissão ao vivo HTTP ao vivo, precisamos estudar e implementar as seguintes tecnologias-chave.
(1) Colete os dados da fonte de vídeo e fonte de áudio
(2) Os dados originais são codificados por H264 e AAC
(3) Os dados de vídeo e áudio são empacotados como pacotes MPEG-ts
(4) Estratégia de geração de segmentação HLS e arquivo de índice m3u8
2. Protocolo de transporte HTTP
Entre eles, o primeiro e o segundo pontos foram mencionados no meu artigo anterior, e o último ponto é que podemos usar o servidor HTTP existente, portanto, a implementação do terceiro e do quarto pontos é a chave.
(1) Estrutura e implementação do programa
Através da análise acima, a lógica e o processo do codificador HLS ao vivo são basicamente claros: inicie o thread de codificação de áudio e vídeo respectivamente, realize a aquisição de áudio e vídeo por meio da tecnologia DirectShow (ou outra) e chame libx264 e libfaac respectivamente para vídeo e codificação de áudio. Depois que os dois encadeamentos de codificação codificam os dados de áudio e vídeo em tempo real, eles os armazenam em um arquivo de segmento no formato MPEG-ts de acordo com a estratégia de partição personalizada. Quando um arquivo de segmento é armazenado, o arquivo de índice m3u8 é atualizado. Conforme mostrado na figura abaixo:
Na figura acima, depois de receber os dados de vídeo e áudio, o hlsliveencoder precisa primeiro determinar se a partição atual deve terminar e criar uma nova partição para continuar a geração contínua da partição TS. Deve-se notar que a nova fragmentação deve começar a partir do quadro-chave para evitar que o player falhe na decodificação. O código principal é o seguinte:
A interface do tsmuxer também é relativamente simples.
(2) Estratégia de geração de segmento HLS e m3u8
① Estratégia de segmentação
A estratégia de segmentação do HLS é basicamente recomendada para dividir a cada 10 segundos. Claro, o tempo específico deve ser marcado de acordo com a duração real da divisão
De modo geral, para fins de cache e outros motivos, os três últimos endereços de fragmento são mantidos no arquivo de índice e atualizados na forma de "janela deslizante".
② Introdução do arquivo m3u8
M3u8 é o arquivo de índice de streaming HTTP ao vivo. M3u8 pode ser considerado. Arquivo de formato M3U basicamente, a diferença é que o arquivo m3u8 usa codificação de caracteres UTF-8.
Copiar código
# Extm3u M3U cabeçalho do arquivo, deve ser colocado na primeira linha
# Número de série do primeiro segmento TS de ext-x-media-sequence
# Ext-x-targetduration a duração máxima de cada segmento TS
#O ext-x-allow-cache permite cache
#End of ext-x-endlist arquivo m3u8
#Extinf informações extras, as informações de divisão de ts, como duração, largura de banda, etc.
|
Digite o e-mail para obter uma surpresa
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 -> armênio
az.fmuser.org -> Azerbaijão
eu.fmuser.org -> Basco
be.fmuser.org -> bielorrusso
bg.fmuser.org -> búlgaro
ca.fmuser.org -> catalão
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 -> dinamarquês
nl.fmuser.org -> holandês
et.fmuser.org -> estoniano
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandês
fr.fmuser.org -> francês
gl.fmuser.org -> galego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemão
el.fmuser.org -> grego
ht.fmuser.org -> crioulo haitiano
iw.fmuser.org -> hebraico
hi.fmuser.org -> Hindi
hu.fmuser.org -> húngaro
is.fmuser.org -> islandês
id.fmuser.org -> indonésio
ga.fmuser.org -> irlandês
it.fmuser.org -> italiano
ja.fmuser.org -> Japonês
ko.fmuser.org -> coreano
lv.fmuser.org -> letão
lt.fmuser.org -> Lituano
mk.fmuser.org -> macedônio
ms.fmuser.org -> malaio
mt.fmuser.org -> maltês
no.fmuser.org - norueguês
fa.fmuser.org -> persa
pl.fmuser.org -> polonês
pt.fmuser.org -> português
ro.fmuser.org -> romeno
ru.fmuser.org -> russo
sr.fmuser.org -> Sérvio
sk.fmuser.org -> Eslovaco
sl.fmuser.org -> esloveno
es.fmuser.org -> espanhol
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 -> iídiche
FMUSER Transmitir vídeo e áudio sem fio mais fácil!
Contato
Endereço:
No.305 Sala HuiLan Edifício No.273 Huanpu Road Guangzhou China 510620
Categorias
Newsletter