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
HLS e Http Live Streaming são protocolos para streaming em tempo real definidos pela Apple. O HLS é implementado com base no protocolo HTTP. O conteúdo da transmissão inclui duas partes, uma é o arquivo de descrição M3U8 e a outra é o arquivo de mídia TS.
1. Arquivo M3U8
O arquivo de mídia é descrito em texto, que é composto por uma série de tags.
#EXTM3U
# EXT-X-TARGETDURATION: 5
#EXTINF: 5,
./0.ts
#EXTINF: 5,
./1.ts
# EXTM3U: A primeira linha de cada arquivo M3U8 deve ser esta tag.
# EXT-X-TARGETDURATION: Especifique a duração máxima do segmento de mídia (segundos). O tempo especificado em #EXTINF deve ser menor ou igual a este valor máximo. Este valor só pode aparecer uma vez.
#EXTINF: Descreva o comprimento de um único arquivo de mídia. Seguem arquivos de mídia, como ./0.ts
Ele pode ser distribuído por HTTP no dispositivo iOS e mac. O padrão da lista de reprodução é o arquivo m3u8 estendido por m3u, e o arquivo de mídia é MPEG2-TS ou arquivo AAC (somente áudio).
Existem dois cenários de aplicação para arquivos m3u8:
Fluxo de adaptação multi-taxa,
#EXTM3U
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 1280000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 2560000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 7680000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 65000, CODECS = "mp4a.40.5"
http://example.com/audio-only.m3u8
Fluxo de adaptação de taxa única
#EXTM3U
# EXT-X-TARGETDURATION: 5220
#EXTINF: 5220,
http://media.example.com/entire.ts
# EXT-X-ENDLIST
A International Standards Organization define este documento rfc:
http://tools.ietf.org/html/draft-pantos-http-live-streaming-06
O arquivo m3u8 é uma extensão do arquivo m3u. As palavras-chave estendidas são definidas no rfc:
entre eles:
# EXT-X-TARGETDURATION
Defina a duração máxima de cada TS.
# EXT-X-MEDIA-SEQUENCE
Defina o número de série do primeiro arquivo no arquivo m3u8 atual. Cada arquivo ts possui um número de série fixo e exclusivo no arquivo m3u8. O número de série é usado para alternar a taxa de código para alinhamento durante MBR.
# EXT-X-KEY
Defina o método de criptografia e o url do arquivo de chave, usado para obter o arquivo de chave de 16 bytes para decodificar o arquivo ts.
Atributos:
MÉTODO
URL
# EXT-X-PROGRAM-DATE-TIME
Tempo absoluto do primeiro arquivo
# EXT-X-ALLOW-CACHE
Permitir ou não o cache.
# EXT-X-ENDLIST
Indica o fim do arquivo m3u8. Live m3u8 não tem essa tag.
# EXT-X-STREAM-INF
Atributos:
BANDWIDTH especifica a taxa de bits
ID exclusivo do PROGRAM-ID
CODECS especifica o tipo de codificação do fluxo
# EXT-X-DISCONTINUITY
Quando a tag é encontrada, os seguintes atributos foram alterados:
formato de arquivo
número e tipo de faixas
parâmetros de codificação
sequência de codificação
sequência de carimbo de data / hora
# EXT-X-VERSION Este atributo pode ser usado ou não, você não pode ter nenhum
M3U8 é dividido em M3U8 de nível superior e M3U8 de segundo nível. O M3U8 de nível superior é usado principalmente para adaptação multi-taxa. O M3U8 de segundo nível é o arquivo de fatia real.
Por padrão, o cliente primeiro selecionará a solicitação com a maior taxa de bits. Se ele descobrir que a taxa de bits não pode ser alcançada, ele solicitará um stream com uma taxa de bits baixa
Um arquivo M3U8 de nível superior em uso real é o seguinte:
#EXTM3U
# EXT-X-STREAM-INF: PROGRAM-ID = 201273221265, BANDWIDTH = 358400
11.m3u8
# EXT-X-STREAM-INF: PROGRAM-ID = 201273221265, BANDWIDTH = 972800
22.m3u8
O arquivo M3U8 de nível superior acima define dois arquivos de segundo nível, 11.m3u8 e 22.m3u8, e o cliente selecionará um deles para obter seu conteúdo.
O conteúdo do arquivo M3U8 secundário é o seguinte:
#EXTM3U
# EXT-X-VERSION: 1
# EXT-X-TARGETDURATION: 10
# EXT-X-MEDIA-SEQUENCE: 0
#EXTINF: 3,
1-4.ts
#EXTINF: 8,
1-6.ts
#EXTINF: 8,
1-8.ts
#EXTINF: 8,
1-10.ts
#EXTINF: 8,
1-12.ts
#EXTINF: 8,
1-14.ts
#EXTINF: 8,
1-16.ts
#EXTINF: 9,
1-18.ts
#EXTINF: 6,
1-20.ts
#EXTINF: 8,
1-22.ts
#EXTINF: 9,
1-24.ts
#EXTINF: 3,
1-26.ts
# EXT-X-ENDLIST
Depois que o cliente obtém o arquivo M3U8 secundário acima, ele continuará solicitando o arquivo dentro dele e, em seguida, poderá ser reproduzido.
O texto acima é sobre a situação sob demanda e a situação de transmissão ao vivo, haverá atributos no arquivo M3U8 para informar que está ao vivo, e o cliente solicitará periodicamente novos arquivos M3U8.
// Quando o HLS realiza transmissão on-demand e ao vivo, a diferença do arquivo M3U8
1. Descrição do problema
Recentemente fiz um teste de playback de slice transcodificado, usando HLS (HTTP Live Streaming) para fazer a transmissão ao vivo. Cada tempo de segmentação TS é 10s, e os seguintes arquivos m3u8 ao vivo são gerados de acordo com os arquivos de segmentação TS
Copiar código
#EXTM3U
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-TARGETDURATION: 10
#EXTINF: 10
hls / 1.ts
#EXTINF: 10
hls / 2.ts
#EXTINF: 10
hls / 3.ts
#EXTINF: 10
hls / 4.ts
#EXTINF: 10
hls / 5.ts
#EXTINF: 10
hls / 6.ts
#EXTINF: 10
hls / 7.ts
#EXTINF: 10
hls / 8.ts
#EXTINF: 10
hls / 9.ts
#EXTINF: 10
hls / 10.ts
Copiar código
Salve o arquivo m3u8 acima como live.m3u8, coloque-o no diretório de documentos do Apache e reproduza a seguinte URL com VLC:
http://localhost/live.m3u8
O teste descobriu que o primeiro arquivo a ser reproduzido não era 1.ts. Após vários testes, verificou-se que:
Contanto que haja mais de três arquivos na lista, os últimos três arquivos da lista são sempre reproduzidos
2. Solução de problemas
É muito triste que, após pesquisar na Internet, não tenha encontrado nenhuma informação eficaz. Um amigo encontrou a mesma situação, ele compartilhou sua experiência depois de resolvê-la?
Após consultar um colega, o colega disse que é possível porque a lista de arquivos m3u8 ao vivo precisa ser atualizada em tempo real. Se fizermos um teste, podemos adicionar # EXT-X-ENDLIST no final primeiro. Este método foi testado. Funciona, mas não é mais o modo m3u8 ao vivo
Depois de pesquisar na Internet novamente, confirmei que finalmente encontrei uma descrição do m3u8 ao vivo
Lista de reprodução ao vivo (janela deslizante)
Para sessões ao vivo, o arquivo de índice é atualizado removendo URIs de mídia do arquivo à medida que novos arquivos de mídia são criados e disponibilizados.
Importante: A tag EXT-X-ENDLIST não está presente na lista de reprodução Live, indicando que novos arquivos de mídia serão adicionados ao arquivo de índice assim que estiverem disponíveis.
Consulte a Listagem 3 para um exemplo de lista de reprodução ao vivo como ela apareceria no início de uma sessão.
Listagem 3 Playlist ao vivo no início de uma sessão.
Copiar código
#EXTM3U
# EXT-X-TARGETDURATION: 10
# EXT-X-VERSION: 3
# EXT-X-MEDIA-SEQUENCE: 1
#EXTINF: 10,
arquivoSequence1.ts
#EXTINF: 10,
arquivoSequence2.ts
#EXTINF: 10,
arquivoSequence3.ts
#EXTINF: 10,
arquivoSequence4.ts
#EXTINF: 10,
arquivoSequence5.ts
Copiar código
O valor da marca EXT-X-MEDIA-SEQUENCE DEVE ser incrementado em 1 para cada URI de mídia removido do arquivo de lista de reprodução. Os URIs de mídia devem ser removidos do arquivo de lista de reprodução na ordem em que aparecem na lista de reprodução. O arquivo de índice atualizado apresenta uma janela móvel em um fluxo contínuo. Este tipo de sessão é adequado para transmissões contínuas.
Esta é a mesma lista de reprodução após ter sido atualizada com novos URIs de mídia:
Listagem 4 Lista de reprodução ao vivo após atualizar os URIs de mídia.
Copiar código
#EXTM3U
# EXT-X-TARGETDURATION: 10
# EXT-X-VERSION: 3
# EXT-X-MEDIA-SEQUENCE: 2
#EXTINF: 10,
arquivoSequence2.ts
#EXTINF: 10,
arquivoSequence3.ts
#EXTINF: 10,
arquivoSequence4.ts
#EXTINF: 10,
arquivoSequence5.ts
#EXTINF: 10,
arquivoSequence6.ts
Copiar código
3. regras de atualização do live m3u8
A lista de arquivos m3u8 ativos precisa ser atualizada continuamente, regras de atualização:
Remova o arquivo principal (talvez reproduzido) em uma lista de reprodução de arquivos
Atualizar continuamente a tag EXT-X-MEDIA-SEQUENCE, incrementar em 1
4. Experimente
Escreva um pequeno programa para gerar m3u8 ao vivo para teste
Uso:
m3u8_gen.exe start_num list_count duração nome do arquivo.m3u8 [prefixo]
Exemplo de uso:
m3u8_gen.exe 1 3 10 live.m3u8 hls /
Gerar arquivo live.m3u8 como
Copiar código
#EXTM3U
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-TARGETDURATION: 10
#EXTINF: 10
hls / 1.ts
#EXTINF: 10
hls / 2.ts
#EXTINF: 10
hls / 3.ts
Copiar código
Escreva um script BAT para atualizar o arquivo live.m3u8 a cada 10s
Copiar código
@ Echo off
f
|
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